From b094264c9a9733f14154d5e0620f76b371840378 Mon Sep 17 00:00:00 2001 From: Hubald Verzijl Date: Sun, 3 May 2026 21:02:21 +0200 Subject: [PATCH] Update due to ICD change. Co-authored-by: Copilot --- src/communication.rs | 14 +++++++------- src/impedance.rs | 26 +++++++++++++------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/communication.rs b/src/communication.rs index 35ef2f9..951ac08 100644 --- a/src/communication.rs +++ b/src/communication.rs @@ -20,7 +20,7 @@ use postcard_rpc::{ }, }; -use bioz_icd_rs::{GetUniqueIdEndpoint, GetMultiplexerCapabilityEndpoint, MultiplexerCapability, ElectrodeConfiguration, MeasurementPointSet, SweepImpedanceOutputTopic, SweepImpedanceResult, SweepImpedanceStartRequest, PingEndpoint, SetGreenLedEndpoint, SingleImpedanceOutputTopic, SingleImpedanceStartRequest, StartSweepImpedanceEndpoint, StartSingleImpedanceEndpoint, StopImpedanceEndpoint, BioImpedanceLeadMode, ENDPOINT_LIST, TOPICS_IN_LIST, TOPICS_OUT_LIST}; +use bioz_icd_rs::{GetUniqueIdEndpoint, GetMultiplexerCapabilityEndpoint, MultiplexerCapability, ElectrodeConfiguration, SweepPoints, SweepImpedanceOutputTopic, SweepImpedanceResult, SweepImpedanceStartRequest, PingEndpoint, SetGreenLedEndpoint, SingleImpedanceOutputTopic, SingleImpedanceStartRequest, StartSweepImpedanceEndpoint, StartSingleImpedanceEndpoint, StopImpedanceEndpoint, BioImpedanceLeadMode, ENDPOINT_LIST, TOPICS_IN_LIST, TOPICS_OUT_LIST}; use crate::electrodes; use crate::impedance::{ImpedanceSetupType, RunningMode, IMPEDANCE_CHANNEL_SWEEP, IMPEDANCE_CHANNEL_SINGLE}; @@ -292,7 +292,7 @@ pub async fn start_sweep_impedance_handler(context: SpawnCtx, header: VarHeader, // Init the sequencer let response = match (rqst.lead_mode, rqst.points) { - (BioImpedanceLeadMode::TwoLead, MeasurementPointSet::Eight) => { + (BioImpedanceLeadMode::TwoLead, SweepPoints::Eight) => { context.impedance_setup.lock().await.running_mode = RunningMode::SweepFrequency2Lead(rqst.points); const SIZE: usize = 8; context @@ -307,7 +307,7 @@ pub async fn start_sweep_impedance_handler(context: SpawnCtx, header: VarHeader, periods_per_dft_18: Vec::new(), }) } - (BioImpedanceLeadMode::TwoLead, MeasurementPointSet::Eighteen) => { + (BioImpedanceLeadMode::TwoLead, SweepPoints::Eighteen) => { context.impedance_setup.lock().await.running_mode = RunningMode::SweepFrequency2Lead(rqst.points); const SIZE: usize = 18; context @@ -322,7 +322,7 @@ pub async fn start_sweep_impedance_handler(context: SpawnCtx, header: VarHeader, periods_per_dft_18: periods, }) } - (BioImpedanceLeadMode::FourLead, MeasurementPointSet::Eight) => { + (BioImpedanceLeadMode::FourLead, SweepPoints::Eight) => { info!("Start impedance spectroscopy 4-lead with 8 points"); context.impedance_setup.lock().await.running_mode = RunningMode::SweepFrequency4Lead(rqst.points); const SIZE: usize = 8; @@ -338,7 +338,7 @@ pub async fn start_sweep_impedance_handler(context: SpawnCtx, header: VarHeader, periods_per_dft_18: Vec::new(), }) } - (BioImpedanceLeadMode::FourLead, MeasurementPointSet::Eighteen) => { + (BioImpedanceLeadMode::FourLead, SweepPoints::Eighteen) => { info!("Start impedance spectroscopy 4-lead with 18 points"); context.impedance_setup.lock().await.running_mode = RunningMode::SweepFrequency4Lead(rqst.points); const SIZE: usize = 18; @@ -400,8 +400,8 @@ pub async fn start_sweep_impedance_handler(context: SpawnCtx, header: VarHeader, pub async fn stop_impedance_handler(context: &mut Context, _header: VarHeader, _rqst: ()) -> bool { info!("Stop impedance measurement"); let was_busy = context.impedance_setup.lock().await.running_mode; - if was_busy == RunningMode::SingleFrequency2Lead || was_busy == RunningMode::SingleFrequency4Lead || was_busy == RunningMode::SweepFrequency2Lead(MeasurementPointSet::Eight) || was_busy == RunningMode::SweepFrequency2Lead(MeasurementPointSet::Eighteen) || was_busy == RunningMode::SweepFrequency4Lead(MeasurementPointSet::Eight) || was_busy == RunningMode::SweepFrequency4Lead(MeasurementPointSet::Eighteen) { + if was_busy == RunningMode::SingleFrequency2Lead || was_busy == RunningMode::SingleFrequency4Lead || was_busy == RunningMode::SweepFrequency2Lead(SweepPoints::Eight) || was_busy == RunningMode::SweepFrequency2Lead(SweepPoints::Eighteen) || was_busy == RunningMode::SweepFrequency4Lead(SweepPoints::Eight) || was_busy == RunningMode::SweepFrequency4Lead(SweepPoints::Eighteen) { STOP.signal(()); } - was_busy == RunningMode::SingleFrequency2Lead || was_busy == RunningMode::SingleFrequency4Lead || was_busy == RunningMode::SweepFrequency2Lead(MeasurementPointSet::Eight) || was_busy == RunningMode::SweepFrequency2Lead(MeasurementPointSet::Eighteen) || was_busy == RunningMode::SweepFrequency4Lead(MeasurementPointSet::Eight) || was_busy == RunningMode::SweepFrequency4Lead(MeasurementPointSet::Eighteen) + was_busy == RunningMode::SingleFrequency2Lead || was_busy == RunningMode::SingleFrequency4Lead || was_busy == RunningMode::SweepFrequency2Lead(SweepPoints::Eight) || was_busy == RunningMode::SweepFrequency2Lead(SweepPoints::Eighteen) || was_busy == RunningMode::SweepFrequency4Lead(SweepPoints::Eight) || was_busy == RunningMode::SweepFrequency4Lead(SweepPoints::Eighteen) } \ No newline at end of file diff --git a/src/impedance.rs b/src/impedance.rs index 0ef4766..884ed3e 100644 --- a/src/impedance.rs +++ b/src/impedance.rs @@ -19,7 +19,7 @@ use crate::ad5940_registers::*; use crate::electrodes::Electrodes; -use bioz_icd_rs::{SingleImpedanceOutput, IcdDftNum, ImpedanceInitError, MeasurementPointSet, SweepImpedanceOutput}; +use bioz_icd_rs::{SingleImpedanceOutput, IcdDftNum, ImpedanceInitError, SweepPoints, SweepImpedanceOutput}; use crate::icd_mapping::IntoDftnum; pub static IMPEDANCE_CHANNEL_SINGLE: Channel = Channel::new(); @@ -35,8 +35,8 @@ pub enum RunningMode { None, SingleFrequency2Lead, SingleFrequency4Lead, - SweepFrequency2Lead(MeasurementPointSet), - SweepFrequency4Lead(MeasurementPointSet), + SweepFrequency2Lead(SweepPoints), + SweepFrequency4Lead(SweepPoints), } pub enum RtiaCalibrated { @@ -221,7 +221,7 @@ impl ImpedanceSetup { Ok(calibration_result) } - async fn calibrate_rtia_multiple(&mut self, number_of_points: MeasurementPointSet) -> Result, ImpedanceInitError> { + async fn calibrate_rtia_multiple(&mut self, number_of_points: SweepPoints) -> Result, ImpedanceInitError> { let mut results = Vec::::new(); // Set DFT number based on the frequency @@ -473,7 +473,7 @@ impl ImpedanceSetup { Ok(sinus_periods_per_dft) } - pub async fn init_sweep_frequency_measurement_2_lead(&mut self, number_of_points: MeasurementPointSet) -> Result, ImpedanceInitError> { + pub async fn init_sweep_frequency_measurement_2_lead(&mut self, number_of_points: SweepPoints) -> Result, ImpedanceInitError> { // Configure LP DAC and TIA self.common_mode_output_enable(false).await.unwrap(); @@ -600,7 +600,7 @@ impl ImpedanceSetup { Ok(periods_per_dft_vec) } - pub async fn init_sweep_frequency_measurement_4_lead(&mut self, number_of_points: MeasurementPointSet) -> Result, ImpedanceInitError> { + pub async fn init_sweep_frequency_measurement_4_lead(&mut self, number_of_points: SweepPoints) -> Result, ImpedanceInitError> { // Configure LP DAC and TIA self.common_mode_output_enable(true).await.unwrap(); @@ -609,11 +609,11 @@ impl ImpedanceSetup { // Calibrate Rtia match number_of_points { - MeasurementPointSet::Eight => { + SweepPoints::Eight => { let results = self.calibrate_rtia_multiple::<8>(number_of_points).await.unwrap(); self.rtia_calibrated = RtiaCalibrated::Vec8(results); }, - MeasurementPointSet::Eighteen => { + SweepPoints::Eighteen => { let results = self.calibrate_rtia_multiple::<18>(number_of_points).await.unwrap(); self.rtia_calibrated = RtiaCalibrated::Vec18(results); }, @@ -772,7 +772,7 @@ pub async fn impedance_setup_readout_task(mut pin: ExtiInput<'static>, impedance let mut impedance_setup = impedance_setup.lock().await; // Trigger the sequencer again - if impedance_setup.running_mode == RunningMode::SingleFrequency2Lead || impedance_setup.running_mode == RunningMode::SingleFrequency4Lead || impedance_setup.running_mode == RunningMode::SweepFrequency2Lead(MeasurementPointSet::Eight) || impedance_setup.running_mode == RunningMode::SweepFrequency2Lead(MeasurementPointSet::Eighteen) || impedance_setup.running_mode == RunningMode::SweepFrequency4Lead(MeasurementPointSet::Eight) || impedance_setup.running_mode == RunningMode::SweepFrequency4Lead(MeasurementPointSet::Eighteen) { + if impedance_setup.running_mode == RunningMode::SingleFrequency2Lead || impedance_setup.running_mode == RunningMode::SingleFrequency4Lead || impedance_setup.running_mode == RunningMode::SweepFrequency2Lead(SweepPoints::Eight) || impedance_setup.running_mode == RunningMode::SweepFrequency2Lead(SweepPoints::Eighteen) || impedance_setup.running_mode == RunningMode::SweepFrequency4Lead(SweepPoints::Eight) || impedance_setup.running_mode == RunningMode::SweepFrequency4Lead(SweepPoints::Eighteen) { impedance_setup.start_measurement().await; } @@ -850,11 +850,11 @@ pub async fn impedance_setup_readout_task(mut pin: ExtiInput<'static>, impedance let result = calculate_impedance_2_lead(chunk.try_into().unwrap()); match points { - MeasurementPointSet::Eight => { + SweepPoints::Eight => { impedance_output.magnitudes_8.push(result.magnitude).ok(); impedance_output.phases_8.push(result.phase).ok(); } - MeasurementPointSet::Eighteen => { + SweepPoints::Eighteen => { impedance_output.magnitudes_18.push(result.magnitude).ok(); impedance_output.phases_18.push(result.phase).ok(); } @@ -885,7 +885,7 @@ pub async fn impedance_setup_readout_task(mut pin: ExtiInput<'static>, impedance }; match (&points, &impedance_setup.rtia_calibrated) { - (MeasurementPointSet::Eight, RtiaCalibrated::Vec8(cal_vec)) => { + (SweepPoints::Eight, RtiaCalibrated::Vec8(cal_vec)) => { // Take 4 samples per frequency point for (i, chunk) in data_slice.chunks(4).enumerate() { let cal = &cal_vec[i]; @@ -895,7 +895,7 @@ pub async fn impedance_setup_readout_task(mut pin: ExtiInput<'static>, impedance impedance_output.phases_8.push(result.phase).ok(); } }, - (MeasurementPointSet::Eighteen, RtiaCalibrated::Vec18(cal_vec)) => { + (SweepPoints::Eighteen, RtiaCalibrated::Vec18(cal_vec)) => { // Take 4 samples per frequency point for (i, chunk) in data_slice.chunks(4).enumerate() { let cal = &cal_vec[i];