diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-08-18 15:40:24 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-08-18 15:40:24 +1000 |
| commit | cad70605401e8fa30811e8c68a0cc5c014438942 (patch) | |
| tree | 42307c27b01ce80b1e9038dea6dca2d4aa94eae1 /src/system_fsm/system_fsm.cpp | |
| parent | 697ec3c5843c66253f73572c26b9b4885680d56c (diff) | |
| download | tangara-fw-cad70605401e8fa30811e8c68a0cc5c014438942.tar.gz | |
Add interrupts for samd changes
Diffstat (limited to 'src/system_fsm/system_fsm.cpp')
| -rw-r--r-- | src/system_fsm/system_fsm.cpp | 27 |
1 files changed, 22 insertions, 5 deletions
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<drivers::Gpios> SystemState::sGpios; @@ -33,11 +35,6 @@ std::shared_ptr<audio::TrackQueue> 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<states::Error>()) { transit<states::Error>(); @@ -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) |
