diff --git a/src/net/cmd_handler.rs b/src/net/cmd_handler.rs index 7ce7ef7..d7b5460 100644 --- a/src/net/cmd_handler.rs +++ b/src/net/cmd_handler.rs @@ -153,9 +153,30 @@ pub fn send_status_report(buffer: &mut [u8], laser: &mut LdDrive, tec: &mut Ther net::eth_send(buffer, num_bytes); } +// Use a minimal struct for high speed cmd ctrl to reduce processing overhead +#[derive(Deserialize, Serialize, Copy, Clone, Debug, Default, Tree)] +pub struct TecSetICmdJson { + tec_set_i: f64 +} +#[derive(Deserialize, Serialize, Copy, Clone, Debug, Default, Tree)] +pub struct TecSetICmd { + json: TecSetICmdJson +} + pub fn execute_cmd(buffer: &mut [u8], buffer_size: usize, mut laser: LdDrive, mut tec: Thermostat, mut device_settings: DeviceSettings)->(LdDrive, Thermostat, bool, DeviceSettings){ let mut should_reset = false; + let mut cmd = TecSetICmd { + json: TecSetICmdJson::default() + }; + match cmd.set_json("/json", &buffer[0..buffer_size]){ + Ok(_) => { + tec.set_i(ElectricCurrent::new::(cmd.json.tec_set_i)); + return (laser, tec, should_reset, device_settings); + } + Err(_) => { /* Do Nothing */} + } + let mut cmd = Cmd { json: CmdJsonObj::default() };