RustXMLParseTest/FmCO2_objects.rs

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() }
}