X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=arducontrol%2Fmonitor.c;h=d8f3dadded7c44b73a3f449985380e04b1f29f0f;hb=b5f6cc69e07c60ca67e8e736ca2fb90a3ce175ae;hp=112e1ac56486c2317dce74d189e815de0f6afe83;hpb=5ee5a22903f8059bf38bc8b2041eb18dfc58bcf0;p=model-railway-devices.git diff --git a/arducontrol/monitor.c b/arducontrol/monitor.c index 112e1ac..d8f3dad 100644 --- a/arducontrol/monitor.c +++ b/arducontrol/monitor.c @@ -45,8 +45,7 @@ void monitor_check(void) if(!overcurrent_sent) { overcurrent_sent = 1; - serial_write(0xFE); - serial_write(OVERCURRENT); + interface_send1(OVERCURRENT); } } else @@ -66,18 +65,20 @@ void monitor_check(void) } } -uint8_t monitor_command(void) +uint8_t monitor_command(const uint8_t *cmd_buf, uint8_t cmd_length) { if(cmd_buf[0]==READ_TRACK_CURRENT) { + uint8_t reply[3]; + if(cmd_length!=1) return LENGTH_ERROR; - serial_write(0xFC); - serial_write(TRACK_CURRENT); uint16_t value = track_current_milliamps(); - serial_write(value>>8); - serial_write(value); + reply[0] = TRACK_CURRENT; + reply[1] = value>>8; + reply[2] = value; + interface_send(reply, sizeof(reply)); } else if(cmd_buf[0]==SET_OVERCURRENT_LIMIT) { @@ -95,14 +96,16 @@ uint8_t monitor_command(void) } else if(cmd_buf[0]==READ_INPUT_VOLTAGE) { + uint8_t reply[3]; + if(cmd_length!=1) return LENGTH_ERROR; - serial_write(0xFC); - serial_write(INPUT_VOLTAGE); uint16_t value = input_voltage_millivolts(); - serial_write(value>>8); - serial_write(value); + reply[0] = INPUT_VOLTAGE; + reply[1] = value>>8; + reply[2] = value; + interface_send(reply, sizeof(reply)); } else return INVALID_COMMAND;