From cad70605401e8fa30811e8c68a0cc5c014438942 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Fri, 18 Aug 2023 15:40:24 +1000 Subject: Add interrupts for samd changes --- src/system_fsm/system_fsm.cpp | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) (limited to 'src/system_fsm/system_fsm.cpp') diff --git a/src/system_fsm/system_fsm.cpp b/src/system_fsm/system_fsm.cpp index 96e806f4..24f65a4f 100644 --- a/src/system_fsm/system_fsm.cpp +++ b/src/system_fsm/system_fsm.cpp @@ -13,6 +13,8 @@ #include "tag_parser.hpp" #include "track_queue.hpp" +static const char kTag[] = "system"; + namespace system_fsm { std::shared_ptr SystemState::sGpios; @@ -33,11 +35,6 @@ std::shared_ptr SystemState::sTrackQueue; console::AppConsole* SystemState::sAppConsole; -auto SystemState::early_init_gpios() -> drivers::Gpios* { - sGpios.reset(drivers::Gpios::Create()); - return sGpios.get(); -} - void SystemState::react(const FatalError& err) { if (!is_in_state()) { transit(); @@ -78,6 +75,26 @@ void SystemState::react(const internal::GpioInterrupt&) { } } +void SystemState::react(const internal::SamdInterrupt&) { + auto prev_charge_status = sSamd->GetChargeStatus(); + auto prev_usb_status = sSamd->GetUsbStatus(); + + sSamd->UpdateChargeStatus(); + sSamd->UpdateUsbStatus(); + + auto charge_status = sSamd->GetChargeStatus(); + auto usb_status = sSamd->GetUsbStatus(); + + if (charge_status != prev_charge_status) { + ChargingStatusChanged ev{}; + events::System().Dispatch(ev); + events::Ui().Dispatch(ev); + } + if (usb_status != prev_usb_status) { + ESP_LOGI(kTag, "usb status changed"); + } +} + } // namespace system_fsm FSM_INITIAL_STATE(system_fsm::SystemState, system_fsm::states::Booting) -- cgit v1.2.3