summaryrefslogtreecommitdiff
path: root/src/system_fsm/system_fsm.cpp
diff options
context:
space:
mode:
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&) {