Update the battery status when plugging/unplugging

custom
jacqueline 1 year ago
parent eba5adeb8c
commit 2eb3fd53d7
  1. 5
      src/battery/battery.cpp
  2. 1
      src/system_fsm/include/system_events.hpp
  3. 6
      src/system_fsm/system_fsm.cpp

@ -73,7 +73,10 @@ auto Battery::Update() -> void {
} else { } else {
is_charging = *charge_state == ChargeStatus::kChargingRegular || is_charging = *charge_state == ChargeStatus::kChargingRegular ||
*charge_state == ChargeStatus::kChargingFast || *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 && if (state_ && state_->is_charging == is_charging &&

@ -57,7 +57,6 @@ struct SamdUsbMscChanged : tinyfsm::Event {
bool en; bool en;
}; };
struct ChargingStatusChanged : tinyfsm::Event {};
struct BatteryStateChanged : tinyfsm::Event { struct BatteryStateChanged : tinyfsm::Event {
battery::Battery::BatteryState new_state; battery::Battery::BatteryState new_state;
}; };

@ -84,10 +84,8 @@ void SystemState::react(const internal::SamdInterrupt&) {
auto charge_status = samd.GetChargeStatus(); auto charge_status = samd.GetChargeStatus();
auto usb_status = samd.GetUsbStatus(); auto usb_status = samd.GetUsbStatus();
if (charge_status != prev_charge_status) { if (charge_status != prev_charge_status && sServices) {
ChargingStatusChanged ev{}; sServices->battery().Update();
events::System().Dispatch(ev);
events::Ui().Dispatch(ev);
} }
if (usb_status != prev_usb_status) { if (usb_status != prev_usb_status) {
ESP_LOGI(kTag, "usb status changed"); ESP_LOGI(kTag, "usb status changed");

Loading…
Cancel
Save