Pass electrode config from GUI to hardware.

This commit is contained in:
2026-03-02 19:06:00 +01:00
parent 04d80d4968
commit 27ee40e724
6 changed files with 228 additions and 48 deletions

View File

@@ -5,10 +5,10 @@ use postcard_rpc::{
};
use std::convert::Infallible;
use bioz_icd_rs::{
BioImpedanceLeadMode, GetUniqueIdEndpoint, ImpedanceInitResult, SweepImpedanceInitResult, SweepImpedanceStartRequest, PingEndpoint, SetGreenLedEndpoint, SingleImpedanceStartRequest, StartSweepImpedanceEndpoint, StartSingleImpedanceEndpoint, StopImpedanceEndpoint
BioImpedanceLeadMode, ElectrodeConfiguration, GetMultiplexerCapabilityEndpoint, GetUniqueIdEndpoint, ImpedanceInitResult, PingEndpoint, SetGreenLedEndpoint, SingleImpedanceStartRequest, StartSingleImpedanceEndpoint, StartSweepImpedanceEndpoint, StopImpedanceEndpoint, SweepImpedanceInitResult, SweepImpedanceStartRequest
};
use crate::icd::{IcdDftNum, MeasurementPointSet};
use crate::icd::{IcdDftNum, MeasurementPointSet, MultiplexerCapability};
#[derive(Debug)]
pub struct WorkbookClient {
@@ -54,6 +54,11 @@ impl WorkbookClient {
Ok(id)
}
pub async fn get_device_info(&self) -> Result<MultiplexerCapability, WorkbookError<Infallible>> {
let info = self.client.send_resp::<GetMultiplexerCapabilityEndpoint>(&()).await?;
Ok(info)
}
pub async fn set_green_led(
&self,
frequency: f32,
@@ -66,10 +71,11 @@ impl WorkbookClient {
&self,
frequency: u32,
lead_mode: BioImpedanceLeadMode,
electrode_config: Option<ElectrodeConfiguration>,
dft_number: IcdDftNum,
) -> Result<ImpedanceInitResult, WorkbookError<Infallible>> {
let response = self.client
.send_resp::<StartSingleImpedanceEndpoint>(&SingleImpedanceStartRequest { update_frequency: 60, sinus_frequency: frequency, lead_mode, dft_number})
.send_resp::<StartSingleImpedanceEndpoint>(&SingleImpedanceStartRequest { update_frequency: 60, sinus_frequency: frequency, lead_mode, electrode_config, dft_number})
.await?;
Ok(response)
}
@@ -77,10 +83,11 @@ impl WorkbookClient {
pub async fn start_impedancemeter_sweep(
&self,
lead_mode: BioImpedanceLeadMode,
electrode_config: Option<ElectrodeConfiguration>,
points: MeasurementPointSet,
) -> Result<SweepImpedanceInitResult, WorkbookError<Infallible>> {
let response = self.client
.send_resp::<StartSweepImpedanceEndpoint>(&SweepImpedanceStartRequest { lead_mode, points })
.send_resp::<StartSweepImpedanceEndpoint>(&SweepImpedanceStartRequest { lead_mode, electrode_config, points })
.await?;
Ok(response)
}