Refactor async logging to synchronous; improve error handling consistency across modules.
This commit is contained in:
@@ -42,7 +42,7 @@ use embassy_sync::once_lock::OnceLock;
|
||||
use embassy_time::{Duration, Instant, Timer};
|
||||
use esp_hal::rom::ets_delay_us;
|
||||
use esp_hal::system::software_reset;
|
||||
use esp_println::{logger, println};
|
||||
use esp_println::println;
|
||||
use hal::battery::BatteryState;
|
||||
use log::LogMessage;
|
||||
use option_lock::OptionLock;
|
||||
@@ -185,7 +185,7 @@ async fn safe_main(spawner: Spawner) -> FatResult<()> {
|
||||
//check if we know the time current > 2020 (plausibility checks, this code is newer than 2020)
|
||||
if cur.year() < 2020 {
|
||||
to_config = true;
|
||||
log(LogMessage::YearInplausibleForceConfig, 0, 0, "", "").await;
|
||||
log(LogMessage::YearInplausibleForceConfig, 0, 0, "", "");
|
||||
}
|
||||
info!("cur is {cur}");
|
||||
match update_charge_indicator(&mut board).await {
|
||||
@@ -193,12 +193,12 @@ async fn safe_main(spawner: Spawner) -> FatResult<()> {
|
||||
Err(error) => {
|
||||
board.board_hal.general_fault(true).await;
|
||||
error!("Error updating charge indicator: {error}");
|
||||
log(LogMessage::MPPTError, 0, 0, "", "").await;
|
||||
log(LogMessage::MPPTError, 0, 0, "", "");
|
||||
let _ = board.board_hal.set_charge_indicator(false).await;
|
||||
}
|
||||
}
|
||||
if board.board_hal.get_esp().get_restart_to_conf() {
|
||||
log(LogMessage::ConfigModeSoftwareOverride, 0, 0, "", "").await;
|
||||
log(LogMessage::ConfigModeSoftwareOverride, 0, 0, "", "");
|
||||
for _i in 0..2 {
|
||||
board.board_hal.general_fault(true).await;
|
||||
Timer::after_millis(100).await;
|
||||
@@ -210,7 +210,7 @@ async fn safe_main(spawner: Spawner) -> FatResult<()> {
|
||||
board.board_hal.get_esp().set_restart_to_conf(false);
|
||||
} else if board.board_hal.get_esp().mode_override_pressed() {
|
||||
board.board_hal.general_fault(true).await;
|
||||
log(LogMessage::ConfigModeButtonOverride, 0, 0, "", "").await;
|
||||
log(LogMessage::ConfigModeButtonOverride, 0, 0, "", "");
|
||||
for _i in 0..5 {
|
||||
board.board_hal.general_fault(true).await;
|
||||
Timer::after_millis(100).await;
|
||||
@@ -308,8 +308,7 @@ async fn safe_main(spawner: Spawner) -> FatResult<()> {
|
||||
.to_string()
|
||||
.as_str(),
|
||||
"",
|
||||
)
|
||||
.await;
|
||||
);
|
||||
|
||||
if to_config {
|
||||
//check if client or ap mode and init Wi-Fi
|
||||
@@ -324,7 +323,7 @@ async fn safe_main(spawner: Spawner) -> FatResult<()> {
|
||||
}
|
||||
wait_infinity(board, WaitType::ConfigButton, reboot_now.clone()).await;
|
||||
} else {
|
||||
log(LogMessage::NormalRun, 0, 0, "", "").await;
|
||||
log(LogMessage::NormalRun, 0, 0, "", "");
|
||||
}
|
||||
|
||||
let dry_run = MQTT_STAY_ALIVE.load(Ordering::Relaxed);
|
||||
@@ -335,28 +334,22 @@ 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(
|
||||
LogMessage::TankSensorMissing,
|
||||
raw_value_mv as u32,
|
||||
0,
|
||||
"",
|
||||
"",
|
||||
)
|
||||
.await
|
||||
}
|
||||
TankError::SensorValueError { value, min, max } => {
|
||||
log(
|
||||
LogMessage::TankSensorValueRangeError,
|
||||
min as u32,
|
||||
max as u32,
|
||||
&format!("{value}"),
|
||||
"",
|
||||
)
|
||||
.await
|
||||
}
|
||||
TankError::SensorMissing(raw_value_mv) => log(
|
||||
LogMessage::TankSensorMissing,
|
||||
raw_value_mv as u32,
|
||||
0,
|
||||
"",
|
||||
"",
|
||||
),
|
||||
TankError::SensorValueError { value, min, max } => log(
|
||||
LogMessage::TankSensorValueRangeError,
|
||||
min as u32,
|
||||
max as u32,
|
||||
&format!("{value}"),
|
||||
"",
|
||||
),
|
||||
TankError::BoardError(err) => {
|
||||
log(LogMessage::TankSensorBoardError, 0, 0, "", &err.to_string()).await
|
||||
log(LogMessage::TankSensorBoardError, 0, 0, "", &err.to_string())
|
||||
}
|
||||
}
|
||||
// disabled cannot trigger this because of wrapping if is_enabled
|
||||
@@ -365,7 +358,7 @@ async fn safe_main(spawner: Spawner) -> FatResult<()> {
|
||||
.warn_level(&board.board_hal.get_config().tank)
|
||||
.is_ok_and(|warn| warn)
|
||||
{
|
||||
log(LogMessage::TankWaterLevelLow, 0, 0, "", "").await;
|
||||
log(LogMessage::TankWaterLevelLow, 0, 0, "", "");
|
||||
board.board_hal.general_fault(true).await;
|
||||
}
|
||||
}
|
||||
@@ -414,7 +407,7 @@ async fn safe_main(spawner: Spawner) -> FatResult<()> {
|
||||
.any(|(it, conf)| it.needs_to_be_watered(conf, &timezone_time))
|
||||
&& !water_frozen;
|
||||
if pump_required {
|
||||
log(LogMessage::EnableMain, dry_run as u32, 0, "", "").await;
|
||||
log(LogMessage::EnableMain, dry_run as u32, 0, "", "");
|
||||
for (plant_id, (state, plant_config)) in plantstate
|
||||
.iter()
|
||||
.zip(&board.board_hal.get_config().plants.clone())
|
||||
@@ -435,8 +428,7 @@ async fn safe_main(spawner: Spawner) -> FatResult<()> {
|
||||
plant_config.max_consecutive_pump_count as u32,
|
||||
&(plant_id + 1).to_string(),
|
||||
"",
|
||||
)
|
||||
.await;
|
||||
);
|
||||
board.board_hal.fault(plant_id, true).await?;
|
||||
}
|
||||
log(
|
||||
@@ -445,8 +437,7 @@ async fn safe_main(spawner: Spawner) -> FatResult<()> {
|
||||
plant_config.pump_time_s as u32,
|
||||
&dry_run.to_string(),
|
||||
"",
|
||||
)
|
||||
.await;
|
||||
);
|
||||
board
|
||||
.board_hal
|
||||
.get_esp()
|
||||
@@ -677,8 +668,7 @@ pub async fn do_secure_pump(
|
||||
current_ma as u32,
|
||||
plant_config.max_pump_current_ma.to_string().as_str(),
|
||||
step.to_string().as_str(),
|
||||
)
|
||||
.await;
|
||||
);
|
||||
error = true;
|
||||
} else if high_current && first_error {
|
||||
log(
|
||||
@@ -687,8 +677,7 @@ pub async fn do_secure_pump(
|
||||
current_ma as u32,
|
||||
plant_config.max_pump_current_ma.to_string().as_str(),
|
||||
step.to_string().as_str(),
|
||||
)
|
||||
.await;
|
||||
);
|
||||
board.board_hal.general_fault(true).await;
|
||||
board.board_hal.fault(plant_id, true).await?;
|
||||
if !plant_config.ignore_current_error {
|
||||
@@ -705,8 +694,7 @@ pub async fn do_secure_pump(
|
||||
current_ma as u32,
|
||||
plant_config.min_pump_current_ma.to_string().as_str(),
|
||||
step.to_string().as_str(),
|
||||
)
|
||||
.await;
|
||||
);
|
||||
board.board_hal.general_fault(true).await;
|
||||
board.board_hal.fault(plant_id, true).await?;
|
||||
if !plant_config.ignore_current_error {
|
||||
@@ -725,8 +713,7 @@ pub async fn do_secure_pump(
|
||||
0,
|
||||
"",
|
||||
"",
|
||||
)
|
||||
.await;
|
||||
);
|
||||
error = true;
|
||||
break;
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user