use crate::transducer::InvalidValue; use uom::si::electric_potential::volt; use uom::si::quantities::{ElectricPotential, ThermodynamicTemperature}; use uom::si::thermodynamic_temperature::degree_celsius; #[inline] pub fn convert( voltage: ElectricPotential, ) -> Result, InvalidValue> { const MIN_VOLTS: f32 = -0.55; const MAX_VOLTS: f32 = 1.50; const SCALE_FACTOR: f32 = 100.0; let volts = voltage.get::(); if volts >= MIN_VOLTS && volts <= MAX_VOLTS { let celsius = volts * SCALE_FACTOR; Ok(ThermodynamicTemperature::new::(celsius)) } else { Err(InvalidValue) } }