#[cfg(feature = "uom")]
use uom::si::{
f32::{
Pressure as UomPressure, Ratio as UomHumidity, ThermodynamicTemperature as UomTemperature,
},
pressure::pascal,
ratio::percent,
thermodynamic_temperature::degree_celsius,
};
#[cfg(feature = "uom")]
pub type Temperature = UomTemperature;
#[cfg(feature = "uom")]
pub type Pressure = UomPressure;
#[cfg(feature = "uom")]
pub type Humidity = UomHumidity;
#[cfg(feature = "uom")]
pub(crate) fn temperature_from_celsius(raw: f32) -> Temperature {
Temperature::new::<degree_celsius>(raw)
}
#[cfg(feature = "uom")]
pub(crate) fn pressure_from_pascal(raw: f32) -> Pressure {
Pressure::new::<pascal>(raw)
}
#[cfg(feature = "uom")]
pub(crate) fn humidity_from_number(raw: f32) -> Humidity {
Humidity::new::<percent>(raw)
}
#[cfg(not(feature = "uom"))]
pub type Pressure = f32;
#[cfg(not(feature = "uom"))]
pub type Temperature = f32;
#[cfg(not(feature = "uom"))]
pub type Humidity = f32;
#[cfg(not(feature = "uom"))]
pub(crate) fn temperature_from_celsius(raw: f32) -> Temperature {
raw
}
#[cfg(not(feature = "uom"))]
pub(crate) fn pressure_from_pascal(raw: f32) -> Pressure {
raw
}
#[cfg(not(feature = "uom"))]
pub(crate) fn humidity_from_number(raw: f32) -> Humidity {
raw
}
#[derive(Debug, Default)]
pub struct Sample {
pub temperature: Option<Temperature>,
pub pressure: Option<Pressure>,
pub humidity: Option<Humidity>,
}
#[derive(Debug, Default)]
#[allow(clippy::struct_field_names)]
pub(crate) struct RawSample {
pub(crate) adc_t: Option<u32>,
pub(crate) adc_p: Option<u32>,
pub(crate) adc_h: Option<u16>,
}