diff --git a/src/bin/dual-iir.rs b/src/bin/dual-iir.rs index 9b1511e..65704ea 100644 --- a/src/bin/dual-iir.rs +++ b/src/bin/dual-iir.rs @@ -11,9 +11,10 @@ use stabilizer::{ Dac1Output, DacCode, DigitalInput0, DigitalInput1, InputPin, SystemTimer, AFE0, AFE1, }, - net::{Miniconf, NetworkUsers, Telemetry, TelemetryBuffer, UpdateState}, + net::{Miniconf, NetworkState, NetworkUsers, Telemetry, TelemetryBuffer}, }; + const SCALE: f32 = i16::MAX as _; // The number of cascaded IIR biquads per channel. Select 1 or 2! @@ -170,8 +171,11 @@ const APP: () = { fn idle(mut c: idle::Context) -> ! { loop { match c.resources.network.lock(|net| net.update()) { - UpdateState::Updated => c.spawn.settings_update().unwrap(), - UpdateState::NoChange => cortex_m::asm::wfi(), + NetworkState::SettingsChanged => { + c.spawn.settings_update().unwrap() + } + NetworkState::Updated => {} + NetworkState::NoChange => cortex_m::asm::wfi(), } } } diff --git a/src/bin/lockin.rs b/src/bin/lockin.rs index d8a4a74..c09a85b 100644 --- a/src/bin/lockin.rs +++ b/src/bin/lockin.rs @@ -11,7 +11,7 @@ use stabilizer::{ Dac0Output, Dac1Output, DacCode, DigitalInput0, DigitalInput1, InputPin, InputStamper, SystemTimer, AFE0, AFE1, }, - net::{Miniconf, NetworkUsers, Telemetry, TelemetryBuffer, UpdateState}, + net::{Miniconf, NetworkState, NetworkUsers, Telemetry, TelemetryBuffer}, }; // A constant sinusoid to send on the DAC output. @@ -243,8 +243,11 @@ const APP: () = { fn idle(mut c: idle::Context) -> ! { loop { match c.resources.network.lock(|net| net.update()) { - UpdateState::Updated => c.spawn.settings_update().unwrap(), - UpdateState::NoChange => cortex_m::asm::wfi(), + NetworkState::SettingsChanged => { + c.spawn.settings_update().unwrap() + } + NetworkState::Updated => {} + NetworkState::NoChange => cortex_m::asm::wfi(), } } } diff --git a/src/net/mod.rs b/src/net/mod.rs index 9843e46..6c0d048 100644 --- a/src/net/mod.rs +++ b/src/net/mod.rs @@ -32,6 +32,12 @@ pub enum UpdateState { Updated, } +#[derive(Copy, Clone, PartialEq)] +pub enum NetworkState { + SettingsChanged, + Updated, + NoChange, +} /// A structure of Stabilizer's default network users. pub struct NetworkUsers { pub miniconf: MiniconfClient, @@ -97,15 +103,18 @@ where /// /// # Returns /// An indication if any of the network users indicated a state change. - pub fn update(&mut self) -> UpdateState { + pub fn update(&mut self) -> NetworkState { // Poll for incoming data. - let poll_result = self.processor.update(); + let poll_result = match self.processor.update() { + UpdateState::NoChange => NetworkState::NoChange, + UpdateState::Updated => NetworkState::Updated, + }; // Update the MQTT clients. self.telemetry.update(); match self.miniconf.update() { - UpdateState::Updated => UpdateState::Updated, + UpdateState::Updated => NetworkState::SettingsChanged, UpdateState::NoChange => poll_result, } }