From c399199bfccb5298fe4b0cf566d8e69729596ba4 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Tue, 30 Jan 2024 09:55:31 +1100 Subject: Improve handling of sd card changes during runtime - mount if an sd card is inserted - unmount if it's removed --- src/system_fsm/system_fsm.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (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 17f09576..df750e80 100644 --- a/src/system_fsm/system_fsm.cpp +++ b/src/system_fsm/system_fsm.cpp @@ -48,11 +48,13 @@ void SystemState::react(const internal::GpioInterrupt&) { auto& gpios = sServices->gpios(); bool prev_key_lock = gpios.IsLocked(); bool prev_has_headphones = !gpios.Get(drivers::Gpios::Pin::kPhoneDetect); + bool prev_has_sd = gpios.Get(drivers::Gpios::Pin::kSdCardDetect); gpios.Read(); bool key_lock = gpios.IsLocked(); bool has_headphones = !gpios.Get(drivers::Gpios::Pin::kPhoneDetect); + bool has_sd = gpios.Get(drivers::Gpios::Pin::kSdCardDetect); if (key_lock != prev_key_lock) { KeyLockChanged ev{.locking = key_lock}; @@ -64,6 +66,11 @@ void SystemState::react(const internal::GpioInterrupt&) { HasPhonesChanged ev{.has_headphones = has_headphones}; events::Audio().Dispatch(ev); } + if (has_sd != prev_has_sd) { + SdDetectChanged ev{.has_sd_card = !has_sd}; + events::System().Dispatch(ev); + events::Ui().Dispatch(ev); + } } void SystemState::react(const internal::SamdInterrupt&) { -- cgit v1.2.3