From 2eb3fd53d7bf32cffb1569d6b2b0c1fbc5b9ed2c Mon Sep 17 00:00:00 2001 From: jacqueline Date: Wed, 13 Mar 2024 17:07:03 +1100 Subject: [PATCH] Update the battery status when plugging/unplugging --- src/battery/battery.cpp | 5 ++++- src/system_fsm/include/system_events.hpp | 1 - src/system_fsm/system_fsm.cpp | 6 ++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/battery/battery.cpp b/src/battery/battery.cpp index 95f2d17b..debef9e6 100644 --- a/src/battery/battery.cpp +++ b/src/battery/battery.cpp @@ -73,7 +73,10 @@ auto Battery::Update() -> void { } else { is_charging = *charge_state == ChargeStatus::kChargingRegular || *charge_state == ChargeStatus::kChargingFast || - *charge_state == ChargeStatus::kFullCharge; + *charge_state == ChargeStatus::kFullCharge || + // Treat 'no battery' as charging because, for UI purposes, + // we're *kind of* at full charge if u think about it. + *charge_state == ChargeStatus::kNoBattery; } if (state_ && state_->is_charging == is_charging && diff --git a/src/system_fsm/include/system_events.hpp b/src/system_fsm/include/system_events.hpp index 32394958..1be03f82 100644 --- a/src/system_fsm/include/system_events.hpp +++ b/src/system_fsm/include/system_events.hpp @@ -57,7 +57,6 @@ struct SamdUsbMscChanged : tinyfsm::Event { bool en; }; -struct ChargingStatusChanged : tinyfsm::Event {}; struct BatteryStateChanged : tinyfsm::Event { battery::Battery::BatteryState new_state; }; diff --git a/src/system_fsm/system_fsm.cpp b/src/system_fsm/system_fsm.cpp index 977f4a6d..5a1ccf8c 100644 --- a/src/system_fsm/system_fsm.cpp +++ b/src/system_fsm/system_fsm.cpp @@ -84,10 +84,8 @@ void SystemState::react(const internal::SamdInterrupt&) { auto charge_status = samd.GetChargeStatus(); auto usb_status = samd.GetUsbStatus(); - if (charge_status != prev_charge_status) { - ChargingStatusChanged ev{}; - events::System().Dispatch(ev); - events::Ui().Dispatch(ev); + if (charge_status != prev_charge_status && sServices) { + sServices->battery().Update(); } if (usb_status != prev_usb_status) { ESP_LOGI(kTag, "usb status changed");