9 uint8_t dispatch_command(const uint8_t *, uint8_t);
11 void interface_init(void)
13 DDRD = (DDRD&0xFC)|0x02;
18 void interface_check(void)
20 if(serial_read_overrun())
21 interface_send1(RECEIVE_OVERRUN);
23 while(serial_read_available())
25 uint8_t length = ~serial_read();
28 interface_send1(FRAMING_ERROR);
34 for(i=0; i<length; ++i)
35 cmd[i] = serial_read();
37 uint8_t result = dispatch_command(cmd, length);
38 interface_send1(result);
43 uint8_t dispatch_command(const uint8_t *cmd, uint8_t length)
45 uint8_t type = cmd[0]>>4;
48 uint8_t subtype = (cmd[0]>>3)&1;
50 return output_command(cmd, length);
52 return monitor_command(cmd, length);
55 return motorola_command(cmd, length);
57 return s88_command(cmd, length);
59 return INVALID_COMMAND;
62 void interface_send(const uint8_t *cmd, uint8_t length)
66 serial_write(~length);
67 for(i=0; i<length; ++i)
71 void interface_send1(uint8_t cmd)