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"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
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]]
|
[[package]]
|
||||||
name = "cortex-m"
|
name = "cortex-m"
|
||||||
version = "0.7.7"
|
version = "0.7.7"
|
||||||
@ -451,6 +471,7 @@ dependencies = [
|
|||||||
"bare-metal 1.0.0",
|
"bare-metal 1.0.0",
|
||||||
"bit_field",
|
"bit_field",
|
||||||
"byteorder",
|
"byteorder",
|
||||||
|
"const_format",
|
||||||
"cortex-m",
|
"cortex-m",
|
||||||
"cortex-m-log",
|
"cortex-m-log",
|
||||||
"cortex-m-rt",
|
"cortex-m-rt",
|
||||||
@ -1041,6 +1062,12 @@ version = "1.0.12"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
|
checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unicode-xid"
|
||||||
|
version = "0.2.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "uom"
|
name = "uom"
|
||||||
version = "0.30.0"
|
version = "0.30.0"
|
||||||
|
@ -38,6 +38,7 @@ sfkv = "0.1"
|
|||||||
bit_field = "0.10"
|
bit_field = "0.10"
|
||||||
crc = "3.0.1"
|
crc = "3.0.1"
|
||||||
byteorder = { version = "1", default-features = false }
|
byteorder = { version = "1", default-features = false }
|
||||||
|
const_format = "0.2.34"
|
||||||
[features]
|
[features]
|
||||||
semihosting = ["cortex-m-log/semihosting"]
|
semihosting = ["cortex-m-log/semihosting"]
|
||||||
RTT = []
|
RTT = []
|
||||||
|
@ -9,6 +9,7 @@ use uom::si::{electric_current::{ampere, ElectricCurrent},
|
|||||||
electrical_conductance::{siemens, ElectricalConductance},
|
electrical_conductance::{siemens, ElectricalConductance},
|
||||||
electrical_resistance::{ohm, ElectricalResistance},
|
electrical_resistance::{ohm, ElectricalResistance},
|
||||||
power::{watt, Power}};
|
power::{watt, Power}};
|
||||||
|
use const_format::concatcp;
|
||||||
|
|
||||||
use crate::{device::{dfu, hw_rev::HWRev, sys_timer},
|
use crate::{device::{dfu, hw_rev::HWRev, sys_timer},
|
||||||
laser_diode::{laser_diode::{LdDrive, LdSettingsSummary, StatusReport as LdStatusReport},
|
laser_diode::{laser_diode::{LdDrive, LdSettingsSummary, StatusReport as LdStatusReport},
|
||||||
@ -33,6 +34,7 @@ pub enum ResponseEnum {
|
|||||||
InvalidDatatype,
|
InvalidDatatype,
|
||||||
InvalidSettings,
|
InvalidSettings,
|
||||||
InvalidCmd,
|
InvalidCmd,
|
||||||
|
Warning,
|
||||||
HardReset,
|
HardReset,
|
||||||
Dfu,
|
Dfu,
|
||||||
ConnectionClose,
|
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_INVALID_LD_PWR_LIMIT_SETTING: &str = "Invalid LD Power Limit Setting";
|
||||||
const ERR_MSG_CMD_NOT_FOUND: &str = "Command Not Found";
|
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)]
|
#[derive(Deserialize, Serialize, Copy, Clone, Debug, Default, Tree)]
|
||||||
pub struct CmdJsonObj {
|
pub struct CmdJsonObj {
|
||||||
laser_diode_cmd: Option<LdCmdEnum>,
|
laser_diode_cmd: Option<LdCmdEnum>,
|
||||||
@ -351,8 +357,16 @@ pub fn execute_cmd(
|
|||||||
};
|
};
|
||||||
match cmd.set_json("/json", &buffer[0..buffer_size]) {
|
match cmd.set_json("/json", &buffer[0..buffer_size]) {
|
||||||
Ok(_) => {
|
Ok(_) => {
|
||||||
thermostat.set_i(ElectricCurrent::new::<ampere>(cmd.json.tec_set_i));
|
if !thermostat.set_i(ElectricCurrent::new::<ampere>(cmd.json.tec_set_i)) {
|
||||||
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
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;
|
return;
|
||||||
}
|
}
|
||||||
Err(_) => { /* Do Nothing */ }
|
Err(_) => { /* Do Nothing */ }
|
||||||
@ -498,8 +512,16 @@ pub fn execute_cmd(
|
|||||||
}
|
}
|
||||||
Some(LdCmdEnum::SetI) => match cmd.json.data_f32 {
|
Some(LdCmdEnum::SetI) => match cmd.json.data_f32 {
|
||||||
Some(val) => {
|
Some(val) => {
|
||||||
|
if !laser.ld_set_i(ElectricCurrent::new::<ampere>(val)) {
|
||||||
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
||||||
laser.ld_set_i(ElectricCurrent::new::<ampere>(val));
|
} else {
|
||||||
|
send_response(
|
||||||
|
buffer,
|
||||||
|
ResponseEnum::Warning,
|
||||||
|
Some(concatcp!("Laser Cmd SetI: ", WARN_MSG_VALUE_SET_IS_OUT_OF_RANGE)),
|
||||||
|
socket,
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
None => {
|
None => {
|
||||||
send_response(
|
send_response(
|
||||||
@ -613,8 +635,16 @@ pub fn execute_cmd(
|
|||||||
}
|
}
|
||||||
Some(ThermostatCmdEnum::SetTecMaxV) => match cmd.json.data_f32 {
|
Some(ThermostatCmdEnum::SetTecMaxV) => match cmd.json.data_f32 {
|
||||||
Some(val) => {
|
Some(val) => {
|
||||||
|
if !thermostat.set_max_v(ElectricPotential::new::<volt>(val)) {
|
||||||
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
||||||
thermostat.set_max_v(ElectricPotential::new::<volt>(val));
|
} else {
|
||||||
|
send_response(
|
||||||
|
buffer,
|
||||||
|
ResponseEnum::Warning,
|
||||||
|
Some(concatcp!("Thermostat Cmd SetTecMaxV: ", WARN_MSG_VALUE_SET_IS_OUT_OF_RANGE)),
|
||||||
|
socket
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
None => {
|
None => {
|
||||||
send_response(
|
send_response(
|
||||||
@ -627,8 +657,16 @@ pub fn execute_cmd(
|
|||||||
},
|
},
|
||||||
Some(ThermostatCmdEnum::SetTecMaxIPos) => match cmd.json.data_f32 {
|
Some(ThermostatCmdEnum::SetTecMaxIPos) => match cmd.json.data_f32 {
|
||||||
Some(val) => {
|
Some(val) => {
|
||||||
|
if !thermostat.set_max_i_pos(ElectricCurrent::new::<ampere>(val)) {
|
||||||
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
||||||
thermostat.set_max_i_pos(ElectricCurrent::new::<ampere>(val));
|
} else {
|
||||||
|
send_response(
|
||||||
|
buffer,
|
||||||
|
ResponseEnum::Warning,
|
||||||
|
Some(concatcp!("Thermostat Cmd SetTecMaxIPos: ", WARN_MSG_VALUE_SET_IS_OUT_OF_RANGE)),
|
||||||
|
socket
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
None => {
|
None => {
|
||||||
send_response(
|
send_response(
|
||||||
@ -641,8 +679,16 @@ pub fn execute_cmd(
|
|||||||
},
|
},
|
||||||
Some(ThermostatCmdEnum::SetTecMaxINeg) => match cmd.json.data_f32 {
|
Some(ThermostatCmdEnum::SetTecMaxINeg) => match cmd.json.data_f32 {
|
||||||
Some(val) => {
|
Some(val) => {
|
||||||
|
if !thermostat.set_max_i_neg(ElectricCurrent::new::<ampere>(val)) {
|
||||||
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
||||||
thermostat.set_max_i_neg(ElectricCurrent::new::<ampere>(val));
|
} else {
|
||||||
|
send_response(
|
||||||
|
buffer,
|
||||||
|
ResponseEnum::Warning,
|
||||||
|
Some(concatcp!("Thermostat Cmd SetTecMaxINeg: ", WARN_MSG_VALUE_SET_IS_OUT_OF_RANGE)),
|
||||||
|
socket
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
None => {
|
None => {
|
||||||
send_response(
|
send_response(
|
||||||
@ -655,8 +701,16 @@ pub fn execute_cmd(
|
|||||||
},
|
},
|
||||||
Some(ThermostatCmdEnum::SetTecIOut) => match cmd.json.data_f32 {
|
Some(ThermostatCmdEnum::SetTecIOut) => match cmd.json.data_f32 {
|
||||||
Some(val) => {
|
Some(val) => {
|
||||||
|
if !thermostat.set_i(ElectricCurrent::new::<ampere>(val)) {
|
||||||
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
||||||
thermostat.set_i(ElectricCurrent::new::<ampere>(val));
|
} else {
|
||||||
|
send_response(
|
||||||
|
buffer,
|
||||||
|
ResponseEnum::Warning,
|
||||||
|
Some(concatcp!("Thermostat Cmd SetTecIOut: ", WARN_MSG_VALUE_SET_IS_OUT_OF_RANGE)),
|
||||||
|
socket
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
None => {
|
None => {
|
||||||
send_response(
|
send_response(
|
||||||
@ -669,8 +723,16 @@ pub fn execute_cmd(
|
|||||||
},
|
},
|
||||||
Some(ThermostatCmdEnum::SetTemperatureSetpoint) => match cmd.json.data_f32 {
|
Some(ThermostatCmdEnum::SetTemperatureSetpoint) => match cmd.json.data_f32 {
|
||||||
Some(val) => {
|
Some(val) => {
|
||||||
|
if !thermostat.set_temperature_setpoint(val) {
|
||||||
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
||||||
thermostat.set_temperature_setpoint(val);
|
} else {
|
||||||
|
send_response(
|
||||||
|
buffer,
|
||||||
|
ResponseEnum::Warning,
|
||||||
|
Some(concatcp!("Thermostat Cmd SetTemperatureSetpoint: ", WARN_MGS_TEMP_SETPOINT_IS_CLAMPED_BY_TEMP_MON_LIMIT)),
|
||||||
|
socket
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
None => {
|
None => {
|
||||||
send_response(
|
send_response(
|
||||||
@ -836,8 +898,16 @@ pub fn execute_cmd(
|
|||||||
}
|
}
|
||||||
Some(ThermostatCmdEnum::SetTempMonUpperLimit) => match cmd.json.data_f32 {
|
Some(ThermostatCmdEnum::SetTempMonUpperLimit) => match cmd.json.data_f32 {
|
||||||
Some(val) => {
|
Some(val) => {
|
||||||
|
if !thermostat.set_temp_mon_upper_limit(val) {
|
||||||
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
||||||
thermostat.set_temp_mon_upper_limit(val);
|
} else {
|
||||||
|
send_response(
|
||||||
|
buffer,
|
||||||
|
ResponseEnum::Warning,
|
||||||
|
Some(concatcp!("Thermostat Cmd SetTempMonUpperLimit: ", WARN_MSG_TEMP_VALUE_IS_BELOW_ABOSOLUTE_ZERO)),
|
||||||
|
socket
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
None => {
|
None => {
|
||||||
send_response(
|
send_response(
|
||||||
@ -850,8 +920,16 @@ pub fn execute_cmd(
|
|||||||
},
|
},
|
||||||
Some(ThermostatCmdEnum::SetTempMonLowerLimit) => match cmd.json.data_f32 {
|
Some(ThermostatCmdEnum::SetTempMonLowerLimit) => match cmd.json.data_f32 {
|
||||||
Some(val) => {
|
Some(val) => {
|
||||||
|
if !thermostat.set_temp_mon_lower_limit(val) {
|
||||||
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
send_response(buffer, ResponseEnum::Acknowledge, None, socket);
|
||||||
thermostat.set_temp_mon_lower_limit(val);
|
} else {
|
||||||
|
send_response(
|
||||||
|
buffer,
|
||||||
|
ResponseEnum::Warning,
|
||||||
|
Some(concatcp!("Thermostat Cmd SetTempMonLowerLimit: ", WARN_MSG_TEMP_VALUE_IS_BELOW_ABOSOLUTE_ZERO)),
|
||||||
|
socket
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
None => {
|
None => {
|
||||||
send_response(
|
send_response(
|
||||||
|
Loading…
Reference in New Issue
Block a user