forked from M-Labs/kirdy
cmd: add cmds to poll tec temp, dis/enable pid
This commit is contained in:
parent
e29898f8f8
commit
412f5ec58b
|
@ -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")
|
||||||
|
|
Loading…
Reference in New Issue