From a69b95187be4afce4eefa8f7b08ceca7b88b7724 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Wed, 15 Jan 2025 15:37:35 +1100 Subject: Handle lock state in each input device, instead of in the lvgl driver --- src/tangara/input/input_touch_dpad.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src/tangara/input/input_touch_dpad.cpp') diff --git a/src/tangara/input/input_touch_dpad.cpp b/src/tangara/input/input_touch_dpad.cpp index 7dc9f04f..8ed2bdd7 100644 --- a/src/tangara/input/input_touch_dpad.cpp +++ b/src/tangara/input/input_touch_dpad.cpp @@ -25,9 +25,14 @@ TouchDPad::TouchDPad(drivers::TouchWheel& wheel) up_("up", actions::scrollUp(), {}, {}, actions::scrollUp()), right_("right", actions::select(), {}, {}, {}), down_("down", actions::scrollDown(), {}, {}, actions::scrollDown()), - left_("left", actions::goBack(), {}, {}, {}) {} + left_("left", actions::goBack(), {}, {}, {}), + locked_(false) {} auto TouchDPad::read(lv_indev_data_t* data) -> void { + if (locked_) { + return; + } + wheel_.Update(); auto wheel_data = wheel_.GetTouchWheelData(); @@ -60,4 +65,15 @@ auto TouchDPad::triggers() return {centre_, up_, right_, down_, left_}; } +auto TouchDPad::onLock() -> void { + wheel_.LowPowerMode(true); + locked_ = true; +} + +auto TouchDPad::onUnlock() -> void { + wheel_.LowPowerMode(false); + wheel_.Recalibrate(); + locked_ = false; +} + } // namespace input -- cgit v1.2.3