X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=arducontrol%2Finterface.c;h=4064120992bd16e4a38e20446f3d98085ff785ba;hb=3bbca0dcce53ff9e2cdaa3d39ae18afcbf627f9d;hp=96b1f96cd97e8cc1cf78435eb60d0a22123b9b6c;hpb=de977f33ed5c55b2b45c8dcae0c0687bd0cbf1e6;p=model-railway-devices.git diff --git a/arducontrol/interface.c b/arducontrol/interface.c index 96b1f96..4064120 100644 --- a/arducontrol/interface.c +++ b/arducontrol/interface.c @@ -3,6 +3,7 @@ #include "motorola.h" #include "output.h" #include "serial.h" +#include "s88.h" volatile uint8_t recv_buf[32]; uint8_t recv_head = 0; @@ -24,8 +25,7 @@ void interface_check(void) { if(recv_overrun) { - serial_write(0xFE); - serial_write(RECEIVE_OVERRUN); + interface_send1(RECEIVE_OVERRUN); recv_overrun = 0; } if(recv_fill>0) @@ -55,8 +55,7 @@ void process_commands(void) else { length = 0; - serial_write(0xFE); - serial_write(FRAMING_ERROR); + interface_send1(FRAMING_ERROR); } recv_tail += length+1; @@ -67,8 +66,7 @@ void process_commands(void) if(length>0) { uint8_t result = dispatch_command(cmd, length); - serial_write(0xFE); - serial_write(result); + interface_send1(result); } } } @@ -86,10 +84,27 @@ uint8_t dispatch_command(const uint8_t *cmd, uint8_t length) } else if(type==1) return motorola_command(cmd, length); + else if(type==3) + return s88_command(cmd, length); else return INVALID_COMMAND; } +void interface_send(const uint8_t *cmd, uint8_t length) +{ + uint8_t i; + + serial_write(~length); + for(i=0; i=sizeof(recv_buf))