From dadac304dd930ddf4c5aebcc069c5d9f881b2b60 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Thu, 21 Mar 2024 11:51:48 +1100 Subject: Add very basic usb msc ui --- src/system_fsm/idle.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/system_fsm/idle.cpp') diff --git a/src/system_fsm/idle.cpp b/src/system_fsm/idle.cpp index b6bb2572..980f0c94 100644 --- a/src/system_fsm/idle.cpp +++ b/src/system_fsm/idle.cpp @@ -13,6 +13,7 @@ #include "audio_fsm.hpp" #include "event_queue.hpp" +#include "samd.hpp" #include "storage.hpp" #include "system_events.hpp" #include "system_fsm.hpp" @@ -40,7 +41,7 @@ void Idle::entry() { events::Audio().Dispatch(OnIdle{}); events::Ui().Dispatch(OnIdle{}); - sIdleTimeout = xTimerCreate("idle_timeout", kTicksBeforeSleep, false, NULL, + sIdleTimeout = xTimerCreate("idle_timeout", kTicksBeforeSleep, true, NULL, timer_callback); xTimerStart(sIdleTimeout, portMAX_DELAY); } @@ -63,6 +64,13 @@ void Idle::react(const internal::IdleTimeout& ev) { transit(); return; } + auto s = static_cast(sServices->samd().GetUsbStatus()); + ESP_LOGI(kTag, "usb status is %i", s); + if (sServices->samd().GetUsbStatus() != drivers::Samd::UsbStatus::kDetached) { + // Stay powered on if we're plugged in, in order to charge faster, sync + // files, flash updates, etc. + return; + } ESP_LOGI(kTag, "system shutting down"); // FIXME: It would be neater to just free a bunch of our pointers, deinit the -- cgit v1.2.3 From d11eea7e0b93178824e804b5fd152e7793c4c277 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Thu, 21 Mar 2024 13:32:45 +1100 Subject: use charge status for staying on, not usb status usb status doesnt seem to be updating properly yet --- src/system_fsm/idle.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'src/system_fsm/idle.cpp') diff --git a/src/system_fsm/idle.cpp b/src/system_fsm/idle.cpp index 980f0c94..e28864b3 100644 --- a/src/system_fsm/idle.cpp +++ b/src/system_fsm/idle.cpp @@ -64,9 +64,8 @@ void Idle::react(const internal::IdleTimeout& ev) { transit(); return; } - auto s = static_cast(sServices->samd().GetUsbStatus()); - ESP_LOGI(kTag, "usb status is %i", s); - if (sServices->samd().GetUsbStatus() != drivers::Samd::UsbStatus::kDetached) { + if (sServices->samd().GetChargeStatus() != + drivers::Samd::ChargeStatus::kDischarging) { // Stay powered on if we're plugged in, in order to charge faster, sync // files, flash updates, etc. return; -- cgit v1.2.3