Compare commits

..

1 Commits

Author SHA1 Message Date
atse b04a61c414 Turn off LED L3 only when all channels have no PID
Change the behaviour of LED L3 to turn off only when all channels have
PID disengaged, as opposed to when any channel disengages PID.

Otherwise, when disengaging PID on a Thermostat that has had both
channels engaged in PID, the LED would turn off, even when PID is still
engaged on the other channel.

This lets the LED better reflect the status of the Thermostat as a
whole, as it would stay on as long as PID is engaged on at least one
channel.
2023-08-07 16:09:54 +08:00
2 changed files with 10 additions and 1 deletions

View File

@ -475,6 +475,15 @@ impl Channels {
serde_json_core::to_vec(&summaries)
}
pub fn pid_engaged(&mut self) -> bool {
for channel in 0..CHANNELS {
if self.channel_state(channel).pid_engaged {
return true;
}
}
false
}
fn pwm_summary(&mut self, channel: usize) -> PwmSummary {
PwmSummary {
channel,

View File

@ -188,7 +188,7 @@ impl Handler {
PwmPin::ISet => {
channels.channel_state(channel).pid_engaged = false;
// Only turn off LED when PID is disengaged on all channels
if !channels.channel_state(channel ^ 1).pid_engaged {
if !channels.pid_engaged() {
leds.g3.off();
}
let current = ElectricCurrent::new::<ampere>(value);