cmd: add cmds to poll tec temp, dis/enable pid

This commit is contained in:
linuswck 2024-02-15 10:34:02 +08:00
parent e29898f8f8
commit 412f5ec58b
1 changed files with 21 additions and 5 deletions

View File

@ -7,7 +7,7 @@ use uom::si::{
electrical_resistance::{ElectricalResistance, ohm}, electrical_resistance::{ElectricalResistance, ohm},
f64::ThermodynamicTemperature, thermodynamic_temperature::degree_celsius f64::ThermodynamicTemperature, thermodynamic_temperature::degree_celsius
}; };
use crate::laser_diode::laser_diode::LdDrive; use crate::{laser_diode::laser_diode::LdDrive, net::net, thermostat::thermostat::StatusReport};
use crate::thermostat::thermostat::Thermostat; use crate::thermostat::thermostat::Thermostat;
use crate::thermostat::pid_state::PidSettings::*; use crate::thermostat::pid_state::PidSettings::*;
use log::info; use log::info;
@ -48,6 +48,8 @@ enum ThermostatCmdEnum {
SetTecIOut, // Constant Current Mode SetTecIOut, // Constant Current Mode
SetTemperatureSetpoint, SetTemperatureSetpoint,
// PID // PID
SetPidEngage,
SetPidDisEngage,
SetPidKp, SetPidKp,
SetPidKi, SetPidKi,
SetPidKd, SetPidKd,
@ -77,6 +79,11 @@ pub struct Cmd {
json: CmdJsonObj json: CmdJsonObj
} }
#[derive(Deserialize, Serialize, Copy, Clone, Debug, Default, Tree)]
pub struct StatusReportStruct {
json: StatusReport
}
pub fn execute_cmd(buffer: &mut [u8], buffer_size: usize, mut laser: LdDrive, mut tec: Thermostat)->(LdDrive, Thermostat){ pub fn execute_cmd(buffer: &mut [u8], buffer_size: usize, mut laser: LdDrive, mut tec: Thermostat)->(LdDrive, Thermostat){
let mut cmd = Cmd { let mut cmd = Cmd {
json: CmdJsonObj::default() json: CmdJsonObj::default()
@ -158,10 +165,10 @@ pub fn execute_cmd(buffer: &mut [u8], buffer_size: usize, mut laser: LdDrive, mu
match cmd.json.thermostat_cmd { match cmd.json.thermostat_cmd {
Some(ThermostatCmdEnum::PowerUp) => { Some(ThermostatCmdEnum::PowerUp) => {
tec.set_pid_engaged(true); tec.power_up()
} }
Some(ThermostatCmdEnum::PowerDown) => { Some(ThermostatCmdEnum::PowerDown) => {
tec.set_pid_engaged(false); tec.power_down()
} }
Some(ThermostatCmdEnum::SetTecMaxV) => { Some(ThermostatCmdEnum::SetTecMaxV) => {
match cmd.json.data_f64 { match cmd.json.data_f64 {
@ -213,7 +220,12 @@ pub fn execute_cmd(buffer: &mut [u8], buffer_size: usize, mut laser: LdDrive, mu
} }
} }
} }
Some(ThermostatCmdEnum::SetPidEngage) => {
tec.set_pid_engaged(true);
}
Some(ThermostatCmdEnum::SetPidDisEngage) => {
tec.set_pid_engaged(false);
}
Some(ThermostatCmdEnum::SetPidKp) => { Some(ThermostatCmdEnum::SetPidKp) => {
match cmd.json.data_f64 { match cmd.json.data_f64 {
Some(val) => { Some(val) => {
@ -298,7 +310,11 @@ pub fn execute_cmd(buffer: &mut [u8], buffer_size: usize, mut laser: LdDrive, mu
} }
} }
Some(ThermostatCmdEnum::GetTecStatus) => { Some(ThermostatCmdEnum::GetTecStatus) => {
info!("Not supported Yet") let status_report = StatusReportStruct {
json: tec.get_status_report()
};
let num_bytes = status_report.get_json("/json", buffer).unwrap();
net::eth_send(buffer, num_bytes);
} }
Some(ThermostatCmdEnum::GetPidStatus) => { Some(ThermostatCmdEnum::GetPidStatus) => {
info!("Not supported Yet") info!("Not supported Yet")