Limit i_set within range of MAX1968 chip

This commit is contained in:
atse 2024-04-03 11:31:34 +08:00
parent 76547be90a
commit 81e62479e5
1 changed files with 6 additions and 1 deletions

View File

@ -54,7 +54,8 @@ pub enum Handler {
pub enum Error { pub enum Error {
ReportError, ReportError,
PostFilterRateError, PostFilterRateError,
FlashError FlashError,
InputOutOfRangeError,
} }
pub type JsonBuffer = Vec<u8, U1024>; pub type JsonBuffer = Vec<u8, U1024>;
@ -185,6 +186,10 @@ impl Handler {
match pin { match pin {
PwmPin::ISet => { PwmPin::ISet => {
channels.channel_state(channel).pid_engaged = false; channels.channel_state(channel).pid_engaged = false;
if -3.0 < value || value > 3.0 {
send_line(socket, b"{\"error\": \"i_set can only be in range [-3A, 3A]\"}");
return Err(Error::InputOutOfRangeError);
}
let current = ElectricCurrent::new::<ampere>(value); let current = ElectricCurrent::new::<ampere>(value);
channels.set_i(channel, current); channels.set_i(channel, current);
channels.power_up(channel); channels.power_up(channel);