diff options
| author | jacqueline <me@jacqueline.id.au> | 2024-01-30 09:55:31 +1100 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2024-01-30 09:55:31 +1100 |
| commit | c399199bfccb5298fe4b0cf566d8e69729596ba4 (patch) | |
| tree | 224655d23c9e2db64c1f4fb90ed91154475f56ea /src/system_fsm/system_fsm.cpp | |
| parent | 9039a97ab47c280555ba891f2aaf34119776d695 (diff) | |
| download | tangara-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.cpp | 7 |
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&) { |
