summaryrefslogtreecommitdiff
path: root/src/system_fsm/system_fsm.cpp
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2024-01-30 09:55:31 +1100
committerjacqueline <me@jacqueline.id.au>2024-01-30 09:55:31 +1100
commitc399199bfccb5298fe4b0cf566d8e69729596ba4 (patch)
tree224655d23c9e2db64c1f4fb90ed91154475f56ea /src/system_fsm/system_fsm.cpp
parent9039a97ab47c280555ba891f2aaf34119776d695 (diff)
downloadtangara-fw-c399199bfccb5298fe4b0cf566d8e69729596ba4.tar.gz
Improve handling of sd card changes during runtime
- mount if an sd card is inserted - unmount if it's removed
Diffstat (limited to 'src/system_fsm/system_fsm.cpp')
-rw-r--r--src/system_fsm/system_fsm.cpp7
1 files changed, 7 insertions, 0 deletions
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&) {