1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
use crate::{ CalibrationDescription, Device, DeviceDescription, Result, Sampling, }; use indexmap::{IndexMap, IndexSet}; pub trait LoadableDevice { type ArnalisaLoadableDevice: crate::arnalisa::LoadableDevice; type ArnalisamplicLoadableDevice: crate::arnalisamplic::LoadableDevice; type OmmuiLoadableDevice: crate::ommui::LoadableDevice; type SamplicLoadableDevice: crate::samplic::LoadableDevice; type XioLoadableDevice: crate::xio::LoadableDevice; type XiolisaLoadableDevice: crate::xiolisa::LoadableDevice; fn arnalisa(&self) -> Self::ArnalisaLoadableDevice; fn arnalisamplic(&self) -> Self::ArnalisamplicLoadableDevice; fn ommui(&self) -> Self::OmmuiLoadableDevice; fn samplic(&self) -> Self::SamplicLoadableDevice; fn xio(&self) -> Self::XioLoadableDevice; fn xiolisa(&self) -> Self::XiolisaLoadableDevice; fn load_calibration_description_index( &self, ) -> Result<IndexSet<String>>; fn load_calibration_description( &self, calibration_id: &str, ) -> Result<CalibrationDescription>; fn load_calibration_descriptions( &self, ) -> Result<IndexMap<String, CalibrationDescription>> { self.load_calibration_description_index()? .into_iter() .map(|id| { let item = self.load_calibration_description(&id)?; Ok((id, item)) }) .collect::<Result<_>>() } fn load_sampling_index(&self) -> Result<IndexSet<String>>; fn load_sampling(&self, sampling_id: &str) -> Result<Sampling>; fn load_samplings(&self) -> Result<IndexMap<String, Sampling>> { self.load_sampling_index()? .into_iter() .map(|id| { let item = self.load_sampling(&id)?; Ok((id, item)) }) .collect::<Result<_>>() } fn load_device_description(&self) -> Result<DeviceDescription>; fn load_device(&self) -> Result<Device>; }