X-Git-Url: http://git.tdb.fi/?p=model-railway-devices.git;a=blobdiff_plain;f=arducontrol%2Foutput.c;h=38d1045476438cea33da205d0ecebf67ef9d8957;hp=3c94f7091c39072939829e45adff5ff1cde6d5ad;hb=9106943c465894bd1a8862b0a6d7ffdd89f8b643;hpb=518d6e4805e36ee0fc0585d1595d394f33495108 diff --git a/arducontrol/output.c b/arducontrol/output.c index 3c94f70..38d1045 100644 --- a/arducontrol/output.c +++ b/arducontrol/output.c @@ -1,5 +1,5 @@ #include -#include "commands.h" +#include "interface.h" #include "output.h" #include "timer.h" @@ -36,6 +36,11 @@ void output_set_power(uint8_t p) PORTD &= ~BIT(ENABLE); } +uint8_t output_is_power_on() +{ + return (PORTD&BIT(ENABLE))!=0; +} + uint8_t output_command(const uint8_t *cmd_buf, uint8_t cmd_length) { if(cmd_buf[0]==POWER_ON || cmd_buf[0]==POWER_OFF) @@ -45,6 +50,16 @@ uint8_t output_command(const uint8_t *cmd_buf, uint8_t cmd_length) output_set_power(cmd_buf[0]==POWER_ON); } + else if(cmd_buf[0]==READ_POWER_STATE) + { + if(cmd_length!=1) + return LENGTH_ERROR; + + uint8_t reply[2]; + reply[0] = POWER_STATE; + reply[1] = output_is_power_on(); + interface_send(reply, 2); + } else return INVALID_COMMAND;