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();
30 interface_send1(FRAMING_ERROR);
36 for(i=0; i<length; ++i)
37 cmd[i] = serial_read();
39 uint8_t result = dispatch_command(cmd, length);
40 interface_send1(result);
45 uint8_t dispatch_command(const uint8_t *cmd, uint8_t length)
47 uint8_t type = cmd[0]>>4;
50 uint8_t subtype = (cmd[0]>>3)&1;
52 return output_command(cmd, length);
54 return monitor_command(cmd, length);
57 return motorola_command(cmd, length);
59 return s88_command(cmd, length);
61 return INVALID_COMMAND;
64 void interface_send(const uint8_t *cmd, uint8_t length)
68 serial_write(~length);
69 for(i=0; i<length; ++i)
73 void interface_send1(uint8_t cmd)