summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battery/battery.cpp5
-rw-r--r--src/system_fsm/include/system_events.hpp1
-rw-r--r--src/system_fsm/system_fsm.cpp6
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");