diff --git a/rust/src/main.rs b/rust/src/main.rs index 135b5d8..4e64e73 100644 --- a/rust/src/main.rs +++ b/rust/src/main.rs @@ -317,7 +317,7 @@ async fn safe_main(spawner: Spawner) -> FatResult<()> { if let Some(err) = tank_state.got_error(&board.board_hal.get_config().tank) { match err { TankError::SensorDisabled => { /* unreachable */ } - TankError::SensorMissing(raw_value_mv) => log( + TankError::SensorMissing { raw_mv: raw_value_mv } => log( LogMessage::TankSensorMissing, raw_value_mv as u32, 0, @@ -331,8 +331,8 @@ async fn safe_main(spawner: Spawner) -> FatResult<()> { &format!("{value}"), "", ), - TankError::BoardError(err) => { - log(LogMessage::TankSensorBoardError, 0, 0, "", &err.to_string()) + TankError::BoardError { message: err } => { + log(LogMessage::TankSensorBoardError, 0, 0, "", &err) } } // disabled cannot trigger this because of wrapping if is_enabled diff --git a/rust/src/tank.rs b/rust/src/tank.rs index 38dd4ca..6d6b345 100644 --- a/rust/src/tank.rs +++ b/rust/src/tank.rs @@ -10,11 +10,12 @@ const OPEN_TANK_VOLTAGE: f32 = 3.0; pub const WATER_FROZEN_THRESH: f32 = 4.0; #[derive(Debug, Clone, Serialize)] +#[serde(tag = "kind")] pub enum TankError { SensorDisabled, - SensorMissing(f32), + SensorMissing { raw_mv: f32 }, SensorValueError { value: f32, min: f32, max: f32 }, - BoardError(String), + BoardError { message: String }, } pub enum TankState { @@ -25,7 +26,7 @@ pub enum TankState { fn raw_voltage_to_divider_percent(raw_value_mv: f32) -> Result { if raw_value_mv > OPEN_TANK_VOLTAGE { - return Err(TankError::SensorMissing(raw_value_mv)); + return Err(TankError::SensorMissing { raw_mv: raw_value_mv }); } let r2 = raw_value_mv * 50.0 / (3.3 - raw_value_mv); @@ -141,15 +142,15 @@ impl TankState { TankInfo { enough_water, warn_level, - left_ml, + volume_ml: left_ml, sensor_error: tank_err, - raw, + fill_raw_v: raw, water_frozen: water_temp .as_ref() .is_ok_and(|temp| *temp < WATER_FROZEN_THRESH), - water_temp: water_temp.as_ref().copied().ok(), + water_temp_c: water_temp.as_ref().copied().ok(), temp_sensor_error: water_temp.as_ref().err().map(|err| err.to_string()), - percent, + fill_pct: percent, } } } @@ -164,7 +165,7 @@ pub async fn determine_tank_state( .and_then(|f| core::prelude::v1::Ok(f.tank_sensor_voltage())) { Ok(raw_sensor_value_mv) => TankState::Present(raw_sensor_value_mv.await.unwrap()), - Err(err) => TankState::Error(TankError::BoardError(err.to_string())), + Err(err) => TankState::Error(TankError::BoardError { message: err.to_string() }), } } else { TankState::Disabled @@ -179,16 +180,16 @@ pub struct TankInfo { /// warning that water needs to be refilled soon pub(crate) warn_level: bool, /// estimation how many ml are still in the tank - pub(crate) left_ml: Option, + pub(crate) volume_ml: Option, /// if there is an issue with the water level sensor pub(crate) sensor_error: Option, /// raw water sensor value - pub(crate) raw: Option, + pub(crate) fill_raw_v: Option, /// percent value - pub(crate) percent: Option, + pub(crate) fill_pct: Option, /// water in the tank might be frozen pub(crate) water_frozen: bool, /// water temperature - pub(crate) water_temp: Option, + pub(crate) water_temp_c: Option, pub(crate) temp_sensor_error: Option, }