diff --git a/src/drivers/include/gpios.hpp b/src/drivers/include/gpios.hpp index 1755da92..fe4b1c4c 100644 --- a/src/drivers/include/gpios.hpp +++ b/src/drivers/include/gpios.hpp @@ -77,6 +77,8 @@ class IGpios { * Returns the most recently cached value of the given pin. */ virtual auto Get(Pin) const -> bool = 0; + + virtual auto IsLocked() const -> bool { return Get(Pin::kKeyLock); } }; class Gpios : public IGpios { diff --git a/src/system_fsm/booting.cpp b/src/system_fsm/booting.cpp index 9ccc107b..7bc92a17 100644 --- a/src/system_fsm/booting.cpp +++ b/src/system_fsm/booting.cpp @@ -121,7 +121,7 @@ auto Booting::exit() -> void { auto Booting::react(const BootComplete& ev) -> void { ESP_LOGI(kTag, "bootup completely successfully"); - if (sServices->gpios().Get(drivers::Gpios::Pin::kKeyLock)) { + if (sServices->gpios().IsLocked()) { transit(); } else { transit(); diff --git a/src/system_fsm/system_fsm.cpp b/src/system_fsm/system_fsm.cpp index 9cca7eda..724d2eea 100644 --- a/src/system_fsm/system_fsm.cpp +++ b/src/system_fsm/system_fsm.cpp @@ -46,12 +46,12 @@ void SystemState::react(const HapticTrigger& trigger) { void SystemState::react(const internal::GpioInterrupt&) { auto& gpios = sServices->gpios(); - bool prev_key_lock = gpios.Get(drivers::Gpios::Pin::kKeyLock); + bool prev_key_lock = gpios.IsLocked(); bool prev_has_headphones = !gpios.Get(drivers::Gpios::Pin::kPhoneDetect); gpios.Read(); - bool key_lock = gpios.Get(drivers::Gpios::Pin::kKeyLock); + bool key_lock = gpios.IsLocked(); bool has_headphones = !gpios.Get(drivers::Gpios::Pin::kPhoneDetect); if (key_lock != prev_key_lock) { @@ -87,7 +87,7 @@ void SystemState::react(const internal::SamdInterrupt&) { } auto SystemState::IdleCondition() -> bool { - return sServices->gpios().Get(drivers::IGpios::Pin::kKeyLock) && + return sServices->gpios().IsLocked() && audio::AudioState::is_in_state(); } diff --git a/src/ui/ui_fsm.cpp b/src/ui/ui_fsm.cpp index 4a196f5d..8e355fd1 100644 --- a/src/ui/ui_fsm.cpp +++ b/src/ui/ui_fsm.cpp @@ -80,7 +80,7 @@ auto UiState::InitBootSplash(drivers::IGpios& gpios) -> bool { sCurrentScreen.reset(new screens::Splash()); sTask.reset(UiTask::Start()); - sDisplay->SetDisplayOn(!gpios.Get(drivers::IGpios::Pin::kKeyLock)); + sDisplay->SetDisplayOn(!gpios.IsLocked()); return true; }