From 509b53d67d52a6d96fc696373f5bcf909527a754 Mon Sep 17 00:00:00 2001 From: atse Date: Wed, 3 Apr 2024 11:31:34 +0800 Subject: [PATCH] Limit i_set within range of MAX1968 chip --- src/command_handler.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/command_handler.rs b/src/command_handler.rs index efea1b8..33406bf 100644 --- a/src/command_handler.rs +++ b/src/command_handler.rs @@ -54,7 +54,8 @@ pub enum Handler { pub enum Error { ReportError, PostFilterRateError, - FlashError + FlashError, + InputOutOfRangeError, } pub type JsonBuffer = Vec; @@ -184,8 +185,14 @@ impl Handler { fn set_pwm (socket: &mut TcpSocket, channels: &mut Channels, channel: usize, pin: PwmPin, value: f64) -> Result { match pin { PwmPin::ISet => { - channels.channel_state(channel).pid_engaged = false; let current = ElectricCurrent::new::(value); + let min = ElectricCurrent::new::(-3.0); + let max = ElectricCurrent::new::(3.0); + if current < min || current > max { + send_line(socket, b"{\"error\": \"i_set has unit A and should be in range [-3, +3]\"}"); + return Err(Error::InputOutOfRangeError); + } + channels.channel_state(channel).pid_engaged = false; channels.set_i(channel, current); channels.power_up(channel); }