summaryrefslogtreecommitdiff
path: root/src/tangara/input
diff options
context:
space:
mode:
authorTess Eisenberger <github@teisen.be>2025-02-01 16:15:17 -0800
committerteisenbe <teisenbe@noreply.codeberg.org>2025-02-02 04:48:42 +0000
commit1d485c97b0c03577a40b34fb762c76e98f417fa4 (patch)
tree38e42bdf95e99d26f39a3a30499ae96d6f07c877 /src/tangara/input
parente8eaf3df10a896cb28e91cfc416b19303926a00a (diff)
downloadtangara-fw-1d485c97b0c03577a40b34fb762c76e98f417fa4.tar.gz
Add optional support for changing volume while locked
This adds a new Controls setting for adjusting the behavior when locked, and an option for allowing volume control.
Diffstat (limited to 'src/tangara/input')
-rw-r--r--src/tangara/input/input_volume_buttons.cpp10
-rw-r--r--src/tangara/input/input_volume_buttons.hpp3
-rw-r--r--src/tangara/input/lvgl_input_driver.cpp2
3 files changed, 10 insertions, 5 deletions
diff --git a/src/tangara/input/input_volume_buttons.cpp b/src/tangara/input/input_volume_buttons.cpp
index 6720afae..5c814ffa 100644
--- a/src/tangara/input/input_volume_buttons.cpp
+++ b/src/tangara/input/input_volume_buttons.cpp
@@ -15,13 +15,15 @@ VolumeButtons::VolumeButtons(drivers::IGpios& gpios)
: gpios_(gpios),
up_("upper", actions::volumeUp()),
down_("lower", actions::volumeDown()),
- locked_(false) {}
+ locked_() {}
auto VolumeButtons::read(lv_indev_data_t* data) -> void {
bool up = !gpios_.Get(drivers::IGpios::Pin::kKeyUp);
bool down = !gpios_.Get(drivers::IGpios::Pin::kKeyDown);
- if ((up && down) || locked_) {
+ bool input_disabled = locked_.has_value() && (locked_ != drivers::NvsStorage::LockedInputModes::kVolumeOnly);
+
+ if ((up && down) || input_disabled) {
up = false;
down = false;
}
@@ -40,11 +42,11 @@ auto VolumeButtons::triggers()
}
auto VolumeButtons::onLock(drivers::NvsStorage::LockedInputModes mode) -> void {
- locked_ = true;
+ locked_ = mode;
}
auto VolumeButtons::onUnlock() -> void {
- locked_ = false;
+ locked_ = {};
}
} // namespace input
diff --git a/src/tangara/input/input_volume_buttons.hpp b/src/tangara/input/input_volume_buttons.hpp
index 008252cd..35a44390 100644
--- a/src/tangara/input/input_volume_buttons.hpp
+++ b/src/tangara/input/input_volume_buttons.hpp
@@ -36,7 +36,8 @@ class VolumeButtons : public IInputDevice {
TriggerHooks up_;
TriggerHooks down_;
- bool locked_;
+ // When locked, this contains the active mode
+ std::optional<drivers::NvsStorage::LockedInputModes> locked_;
};
} // namespace input
diff --git a/src/tangara/input/lvgl_input_driver.cpp b/src/tangara/input/lvgl_input_driver.cpp
index 9177f92f..2859c6a8 100644
--- a/src/tangara/input/lvgl_input_driver.cpp
+++ b/src/tangara/input/lvgl_input_driver.cpp
@@ -74,6 +74,8 @@ auto intToLockedMode(int raw) -> std::optional<drivers::NvsStorage::LockedInputM
switch (raw) {
case 0:
return drivers::NvsStorage::LockedInputModes::kDisabled;
+ case 1:
+ return drivers::NvsStorage::LockedInputModes::kVolumeOnly;
default:
return {};
}