195 lines
4.2 KiB
Rust
195 lines
4.2 KiB
Rust
use crate::datatypes;
|
|
use super::{Object, ObjectSpecies, RawObject};
|
|
use derive_getters::Getters;
|
|
use derive_builder::Builder;
|
|
use downcast_rs::Downcast
|
|
|
|
pub trait FmCO2:Downcast{}
|
|
|
|
#[derive(Clone,Debug)]
|
|
pub enum FmCO2Species{
|
|
SpDATA,
|
|
SpCALIBRATION,
|
|
SpSTANDARD,
|
|
SpMSG_ARGUMENTS,
|
|
}
|
|
impl ObjectSpecies for FmCO2Species{}
|
|
|
|
impl FmCO2 for CCO2DData{}
|
|
#[derive(Getters,Builder,Clone,Debug)]
|
|
pub struct CCO2DData{
|
|
status:Status,
|
|
extstatus:ExtStatus,
|
|
source:Source,
|
|
mode:Mode,
|
|
method:Method,
|
|
etco2:OBJECT::CNumDStd,
|
|
fico2:OBJECT::CNumDStd,
|
|
rr:OBJECT::CNumDStd,
|
|
ipi:OBJECT::CNumDStd,
|
|
s_etco2:OBJECT::CNumDStd,
|
|
s_fico2:OBJECT::CNumDStd,
|
|
contco2:OBJECT::CNumDStd,
|
|
s_density_5:OBJECT::CNumDStd,
|
|
s_density_10:OBJECT::CNumDStd,
|
|
s_density_30:OBJECT::CNumDStd,
|
|
apneaindex_total:OBJECT::CNumDStd,
|
|
apneaindex_10_19:OBJECT::CNumDStd,
|
|
apneaindex_20_29:OBJECT::CNumDStd,
|
|
apneaindex_30:OBJECT::CNumDStd,
|
|
desatcount:OBJECT::CNumDStd,
|
|
stime:chrono::NaiveDateTime,
|
|
#[getter(skip)]
|
|
raw_object:RawObject,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum Status{
|
|
#[default]
|
|
DATA_NOT_AVAIL,
|
|
DATA_COMPLETE,
|
|
DATA_FAILURE,
|
|
DATA_EXCEPTION,
|
|
DATA_PROCESSING,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum ExtStatus{
|
|
#[default]
|
|
INITIALIZATION,
|
|
SFM_REQUIRED,
|
|
SFM_IN_PROGRESS,
|
|
PURGING_IN_PROGRESS,
|
|
FILTER_LINE_NO_CONNECT,
|
|
CHECK_CALIBRATION,
|
|
CHECK_FLOW,
|
|
OCCLUSION_IN_GAS_LINE,
|
|
TEMPERATURE_OUT_OF_RANGE,
|
|
PUMP_OFF,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum Source{
|
|
#[default]
|
|
NONE,
|
|
UNKNOWN,
|
|
BREATH_DETECTED,
|
|
INTERVAL,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum Mode{
|
|
#[default]
|
|
NONE,
|
|
UNKNOWN,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum Method{
|
|
#[default]
|
|
NONE,
|
|
UNKNOWN,
|
|
MANUAL,
|
|
DEVICE,
|
|
REMOTE,
|
|
}
|
|
|
|
pub impl CCO2DData {
|
|
fn new() -> Self { todo!() }
|
|
}
|
|
impl Object for CCO2DData{
|
|
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmCO2 }
|
|
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnDATA }
|
|
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmCO2Species::CCO2DData) }
|
|
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
|
}
|
|
|
|
impl FmCO2 for CCO2CCal{}
|
|
#[derive(Getters,Builder,Clone,Debug)]
|
|
pub struct CCO2CCal{
|
|
status:Status,
|
|
method:Method,
|
|
gasconcentration:uint8,
|
|
#[getter(skip)]
|
|
raw_object:RawObject,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum Status{
|
|
#[default]
|
|
IN_PROGRESS,
|
|
NOT_READY,
|
|
CALCULATING,
|
|
COMPLETE_ERROR,
|
|
COMPLETE_SUCCESS,
|
|
USER_ABORT,
|
|
MEASUREMENT_ERROR,
|
|
AZ_FAIL,
|
|
GAS_CONCENTRATION_CHECK,
|
|
GAS_FLOW_UNSTABLE,
|
|
CALIBRATION_FAILURE,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum Method{
|
|
#[default]
|
|
NONE,
|
|
REGULAR_CALIBRATION,
|
|
SPECIAL_FACTORY_CALIBRATION,
|
|
CALIBRATION_CHECK,
|
|
}
|
|
|
|
pub impl CCO2CCal {
|
|
fn new() -> Self { todo!() }
|
|
}
|
|
impl Object for CCO2CCal{
|
|
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmCO2 }
|
|
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnCONFIG }
|
|
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmCO2Species::CCO2CCal) }
|
|
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
|
}
|
|
|
|
impl FmCO2 for CCO2CStd{}
|
|
#[derive(Getters,Builder,Clone,Debug)]
|
|
pub struct CCO2CStd{
|
|
displayunits:DisplayUnits,
|
|
#[getter(skip)]
|
|
raw_object:RawObject,
|
|
}
|
|
|
|
#[derive(Clone,Copy,Debug,Default)]
|
|
pub enum DisplayUnits{
|
|
#[default]
|
|
UNITS_MMHG,
|
|
UNITS_KPA,
|
|
}
|
|
|
|
pub impl CCO2CStd {
|
|
fn new() -> Self { todo!() }
|
|
}
|
|
impl Object for CCO2CStd{
|
|
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmCO2 }
|
|
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnCONFIG }
|
|
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmCO2Species::CCO2CStd) }
|
|
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
|
}
|
|
|
|
impl FmCO2 for CCO2PMsgArg{}
|
|
#[derive(Getters,Builder,Clone,Debug)]
|
|
pub struct CCO2PMsgArg{
|
|
ioparametera:uint16,
|
|
ioparameterb:uint16,
|
|
#[getter(skip)]
|
|
raw_object:RawObject,
|
|
}
|
|
|
|
pub impl CCO2PMsgArg {
|
|
fn new() -> Self { todo!() }
|
|
}
|
|
impl Object for CCO2PMsgArg{
|
|
fn get_family(&self) -> datatypes::Family { datatypes::Family::FmCO2 }
|
|
fn get_genus(&self) -> datatypes::Genus { datatypes::Genus::GnPARAMETER }
|
|
fn get_species(&self) -> Box<dyn super::ObjectSpecies> { Box::new(FmCO2Species::CCO2PMsgArg) }
|
|
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
|
|
}
|
|
|