cmd_handler: add warning msgs for cmd with val clamped
This commit is contained in:
parent
e1ee3ec959
commit
b3a9f61648
27
Cargo.lock
generated
27
Cargo.lock
generated
@ -92,6 +92,26 @@ version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||
|
||||
[[package]]
|
||||
name = "const_format"
|
||||
version = "0.2.34"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd"
|
||||
dependencies = [
|
||||
"const_format_proc_macros",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "const_format_proc_macros"
|
||||
version = "0.2.34"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"unicode-xid",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cortex-m"
|
||||
version = "0.7.7"
|
||||
@ -451,6 +471,7 @@ dependencies = [
|
||||
"bare-metal 1.0.0",
|
||||
"bit_field",
|
||||
"byteorder",
|
||||
"const_format",
|
||||
"cortex-m",
|
||||
"cortex-m-log",
|
||||
"cortex-m-rt",
|
||||
@ -1041,6 +1062,12 @@ version = "1.0.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
|
||||
|
||||
[[package]]
|
||||
name = "unicode-xid"
|
||||
version = "0.2.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
|
||||
|
||||
[[package]]
|
||||
name = "uom"
|
||||
version = "0.30.0"
|
||||
|
@ -38,6 +38,7 @@ sfkv = "0.1"
|
||||
bit_field = "0.10"
|
||||
crc = "3.0.1"
|
||||
byteorder = { version = "1", default-features = false }
|
||||
const_format = "0.2.34"
|
||||
[features]
|
||||
semihosting = ["cortex-m-log/semihosting"]
|
||||
RTT = []
|
||||
|
@ -9,6 +9,7 @@ use uom::si::{electric_current::{ampere, ElectricCurrent},
|
||||
electrical_conductance::{siemens, ElectricalConductance},
|
||||
electrical_resistance::{ohm, ElectricalResistance},
|
||||
power::{watt, Power}};
|
||||
use const_format::concatcp;
|
||||
|
||||
use crate::{device::{dfu, hw_rev::HWRev, sys_timer},
|
||||
laser_diode::{laser_diode::{LdDrive, LdSettingsSummary, StatusReport as LdStatusReport},
|
||||
@ -33,6 +34,7 @@ pub enum ResponseEnum {
|
||||
InvalidDatatype,
|
||||
InvalidSettings,
|
||||
InvalidCmd,
|
||||
Warning,
|
||||
HardReset,
|
||||
Dfu,
|
||||
ConnectionClose,
|
||||
@ -165,6 +167,10 @@ const ERR_MSG_INVALID_PDMON_SETTINGS: &str = "Invalid PD Mon Parameter Setting(s
|
||||
const ERR_MSG_INVALID_LD_PWR_LIMIT_SETTING: &str = "Invalid LD Power Limit Setting";
|
||||
const ERR_MSG_CMD_NOT_FOUND: &str = "Command Not Found";
|
||||
|
||||
const WARN_MSG_VALUE_SET_IS_OUT_OF_RANGE: &str = "Value set is out of range and clamped to the hardware limit";
|
||||
const WARN_MGS_TEMP_SETPOINT_IS_CLAMPED_BY_TEMP_MON_LIMIT: &str = "Value set is out of temperature monitor range and clamped to the temperature monitor limit";
|
||||
const WARN_MSG_TEMP_VALUE_IS_BELOW_ABOSOLUTE_ZERO: &str = "Value set is below absolute zero and clamped to absolute zero(-273.15 Degree)";
|
||||
|
||||
#[derive(Deserialize, Serialize, Copy, Clone, Debug, Default, Tree)]
|
||||
pub struct CmdJsonObj {
|
||||
laser_diode_cmd: Option<LdCmdEnum>,
|
||||
@ -351,8 +357,16 @@ pub fn execute_cmd(
|
||||
};
|
||||
match cmd.set_json("/json", &buffer[0..buffer_size]) {
|
||||
Ok(_) => {
|
||||
thermostat.set_i(ElectricCurrent::new::<ampere>(cmd.json.tec_set_i));
|
||||
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
||||
if !thermostat.set_i(ElectricCurrent::new::<ampere>(cmd.json.tec_set_i)) {
|
||||
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
||||
} else {
|
||||
send_response(
|
||||
buffer,
|
||||
ResponseEnum::Warning,
|
||||
Some(concatcp!("tec_set_i: ", WARN_MSG_VALUE_SET_IS_OUT_OF_RANGE)),
|
||||
socket
|
||||
);
|
||||
}
|
||||
return;
|
||||
}
|
||||
Err(_) => { /* Do Nothing */ }
|
||||
@ -498,8 +512,16 @@ pub fn execute_cmd(
|
||||
}
|
||||
Some(LdCmdEnum::SetI) => match cmd.json.data_f32 {
|
||||
Some(val) => {
|
||||
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
||||
laser.ld_set_i(ElectricCurrent::new::<ampere>(val));
|
||||
if !laser.ld_set_i(ElectricCurrent::new::<ampere>(val)) {
|
||||
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
||||
} else {
|
||||
send_response(
|
||||
buffer,
|
||||
ResponseEnum::Warning,
|
||||
Some(concatcp!("Laser Cmd SetI: ", WARN_MSG_VALUE_SET_IS_OUT_OF_RANGE)),
|
||||
socket,
|
||||
);
|
||||
}
|
||||
}
|
||||
None => {
|
||||
send_response(
|
||||
@ -613,8 +635,16 @@ pub fn execute_cmd(
|
||||
}
|
||||
Some(ThermostatCmdEnum::SetTecMaxV) => match cmd.json.data_f32 {
|
||||
Some(val) => {
|
||||
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
||||
thermostat.set_max_v(ElectricPotential::new::<volt>(val));
|
||||
if !thermostat.set_max_v(ElectricPotential::new::<volt>(val)) {
|
||||
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
||||
} else {
|
||||
send_response(
|
||||
buffer,
|
||||
ResponseEnum::Warning,
|
||||
Some(concatcp!("Thermostat Cmd SetTecMaxV: ", WARN_MSG_VALUE_SET_IS_OUT_OF_RANGE)),
|
||||
socket
|
||||
);
|
||||
}
|
||||
}
|
||||
None => {
|
||||
send_response(
|
||||
@ -627,8 +657,16 @@ pub fn execute_cmd(
|
||||
},
|
||||
Some(ThermostatCmdEnum::SetTecMaxIPos) => match cmd.json.data_f32 {
|
||||
Some(val) => {
|
||||
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
||||
thermostat.set_max_i_pos(ElectricCurrent::new::<ampere>(val));
|
||||
if !thermostat.set_max_i_pos(ElectricCurrent::new::<ampere>(val)) {
|
||||
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
||||
} else {
|
||||
send_response(
|
||||
buffer,
|
||||
ResponseEnum::Warning,
|
||||
Some(concatcp!("Thermostat Cmd SetTecMaxIPos: ", WARN_MSG_VALUE_SET_IS_OUT_OF_RANGE)),
|
||||
socket
|
||||
);
|
||||
}
|
||||
}
|
||||
None => {
|
||||
send_response(
|
||||
@ -641,8 +679,16 @@ pub fn execute_cmd(
|
||||
},
|
||||
Some(ThermostatCmdEnum::SetTecMaxINeg) => match cmd.json.data_f32 {
|
||||
Some(val) => {
|
||||
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
||||
thermostat.set_max_i_neg(ElectricCurrent::new::<ampere>(val));
|
||||
if !thermostat.set_max_i_neg(ElectricCurrent::new::<ampere>(val)) {
|
||||
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
||||
} else {
|
||||
send_response(
|
||||
buffer,
|
||||
ResponseEnum::Warning,
|
||||
Some(concatcp!("Thermostat Cmd SetTecMaxINeg: ", WARN_MSG_VALUE_SET_IS_OUT_OF_RANGE)),
|
||||
socket
|
||||
);
|
||||
}
|
||||
}
|
||||
None => {
|
||||
send_response(
|
||||
@ -655,8 +701,16 @@ pub fn execute_cmd(
|
||||
},
|
||||
Some(ThermostatCmdEnum::SetTecIOut) => match cmd.json.data_f32 {
|
||||
Some(val) => {
|
||||
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
||||
thermostat.set_i(ElectricCurrent::new::<ampere>(val));
|
||||
if !thermostat.set_i(ElectricCurrent::new::<ampere>(val)) {
|
||||
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
||||
} else {
|
||||
send_response(
|
||||
buffer,
|
||||
ResponseEnum::Warning,
|
||||
Some(concatcp!("Thermostat Cmd SetTecIOut: ", WARN_MSG_VALUE_SET_IS_OUT_OF_RANGE)),
|
||||
socket
|
||||
);
|
||||
}
|
||||
}
|
||||
None => {
|
||||
send_response(
|
||||
@ -669,8 +723,16 @@ pub fn execute_cmd(
|
||||
},
|
||||
Some(ThermostatCmdEnum::SetTemperatureSetpoint) => match cmd.json.data_f32 {
|
||||
Some(val) => {
|
||||
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
||||
thermostat.set_temperature_setpoint(val);
|
||||
if !thermostat.set_temperature_setpoint(val) {
|
||||
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
||||
} else {
|
||||
send_response(
|
||||
buffer,
|
||||
ResponseEnum::Warning,
|
||||
Some(concatcp!("Thermostat Cmd SetTemperatureSetpoint: ", WARN_MGS_TEMP_SETPOINT_IS_CLAMPED_BY_TEMP_MON_LIMIT)),
|
||||
socket
|
||||
);
|
||||
}
|
||||
}
|
||||
None => {
|
||||
send_response(
|
||||
@ -836,8 +898,16 @@ pub fn execute_cmd(
|
||||
}
|
||||
Some(ThermostatCmdEnum::SetTempMonUpperLimit) => match cmd.json.data_f32 {
|
||||
Some(val) => {
|
||||
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
||||
thermostat.set_temp_mon_upper_limit(val);
|
||||
if !thermostat.set_temp_mon_upper_limit(val) {
|
||||
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
||||
} else {
|
||||
send_response(
|
||||
buffer,
|
||||
ResponseEnum::Warning,
|
||||
Some(concatcp!("Thermostat Cmd SetTempMonUpperLimit: ", WARN_MSG_TEMP_VALUE_IS_BELOW_ABOSOLUTE_ZERO)),
|
||||
socket
|
||||
);
|
||||
}
|
||||
}
|
||||
None => {
|
||||
send_response(
|
||||
@ -850,8 +920,16 @@ pub fn execute_cmd(
|
||||
},
|
||||
Some(ThermostatCmdEnum::SetTempMonLowerLimit) => match cmd.json.data_f32 {
|
||||
Some(val) => {
|
||||
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
||||
thermostat.set_temp_mon_lower_limit(val);
|
||||
if !thermostat.set_temp_mon_lower_limit(val) {
|
||||
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
||||
} else {
|
||||
send_response(
|
||||
buffer,
|
||||
ResponseEnum::Warning,
|
||||
Some(concatcp!("Thermostat Cmd SetTempMonLowerLimit: ", WARN_MSG_TEMP_VALUE_IS_BELOW_ABOSOLUTE_ZERO)),
|
||||
socket
|
||||
);
|
||||
}
|
||||
}
|
||||
None => {
|
||||
send_response(
|
||||
|
Loading…
Reference in New Issue
Block a user