From 226e9e4c0b29d3bb1f4a1a9dbad28dbbdf9b7ff2 Mon Sep 17 00:00:00 2001 From: Marek Niepieklo Date: Wed, 14 Apr 2021 16:28:53 +0200 Subject: [PATCH] [EGD-6515] Answer/reject calls using headset Clean up propagation of headset keys events Clean up volume control with headset keys Update key mappings for simulator Use headset OK key to answer/reject calls --- doc/host_keyboard_bindings.md | 12 ++++++++-- .../application-call/windows/CallWindow.cpp | 22 +++++++++++++++++++ .../application-call/windows/CallWindow.hpp | 1 + module-apps/windows/AppWindow.cpp | 4 ++++ module-bsp/bsp/keyboard/key_codes.hpp | 12 +++++++++- module-gui/gui/input/InputEvent.hpp | 12 +++++++++- module-gui/gui/input/Translator.cpp | 11 +++++++++- .../board/linux/renderer/src/RWindow.cpp | 4 ++++ .../service-evtmgr/WorkerEvent.cpp | 9 +++----- 9 files changed, 76 insertions(+), 11 deletions(-) diff --git a/doc/host_keyboard_bindings.md b/doc/host_keyboard_bindings.md index e81e2f9af44acf43494a75f8a6563d50479250dd..4c2a0dfe93c152e9c5a13e613fee9fdae5615f93 100644 --- a/doc/host_keyboard_bindings.md +++ b/doc/host_keyboard_bindings.md @@ -7,7 +7,7 @@ - [Battery "buttons"](#battery-buttons) ### Functional buttons -- Volume up - key [ `R` ] +- Volume up - key [ `R` ] - Volume down - key [ `F` ] - Functional left - key [ `Q` ] - Functional right - key [ `E` ] @@ -20,6 +20,9 @@ - Slider mid - key [ `B` ] - Slider down - key [ `N` ] - Torch button - key [ `T` ] +- Headset OK - key [ `U` ] +- Headset Vol + - key [ `J` ] +- Headset Vol - - key [ `M` ] ### Numeric buttons - Numeric 0 - key [ `0` ] @@ -38,4 +41,9 @@ ### Battery buttons - Connect/disconnect wall adapter - key [ `P` ] - Decrease battery level - key [ `[` ] - - Increase battery level - key [ `]` ] \ No newline at end of file + - Increase battery level - key [ `]` ] + +### Charger type selection + - Standard Downstream Port (SDP) - key [ `L` ] + - Charging Downstream Port (CDP) - key [ `;` ] + - Dedicated Charging Port (DCP) - key [ `'` ] diff --git a/module-apps/application-call/windows/CallWindow.cpp b/module-apps/application-call/windows/CallWindow.cpp index f1c08c5f5330307ae1b167d12d10787e906ed003..90b831fb4561ef880e8120ad806630899305195c 100644 --- a/module-apps/application-call/windows/CallWindow.cpp +++ b/module-apps/application-call/windows/CallWindow.cpp @@ -338,6 +338,25 @@ namespace gui return false; } + bool CallWindow::handleHeadsetOkButton() + { + switch (getState()) { + case State::INCOMING_CALL: + interface->answerIncomingCall(); + return true; + case State::OUTGOING_CALL: + [[fallthrough]]; + case State::CALL_IN_PROGRESS: + interface->hangupCall(); + return true; + case State::IDLE: + case State::CALL_ENDED: + break; + } + + return false; + } + bool CallWindow::handleDigit(const uint32_t digit) { interface->transmitDtmfTone(digit); @@ -364,6 +383,9 @@ namespace gui case KeyCode::KEY_RF: handled = handleRightButton(); break; + case KeyCode::HEADSET_OK: + handled = handleHeadsetOkButton(); + break; default: break; } diff --git a/module-apps/application-call/windows/CallWindow.hpp b/module-apps/application-call/windows/CallWindow.hpp index e87c3d1ca361a9885e1f0acc1b549fb85d6d93fe..113be2a79e9cee1502a5b927c63c4366011282d8 100644 --- a/module-apps/application-call/windows/CallWindow.hpp +++ b/module-apps/application-call/windows/CallWindow.hpp @@ -45,6 +45,7 @@ namespace gui bool handleLeftButton(); bool handleRightButton(); + bool handleHeadsetOkButton(); void setState(app::call::State state); [[nodiscard]] auto getState() const noexcept -> app::call::State; diff --git a/module-apps/windows/AppWindow.cpp b/module-apps/windows/AppWindow.cpp index ac4386f9ea737e71b758b4afdaabacb2913260c8..2a15e73f412cc170835f1b7c44377924416af7d1 100644 --- a/module-apps/windows/AppWindow.cpp +++ b/module-apps/windows/AppWindow.cpp @@ -156,9 +156,13 @@ namespace gui if ((inputEvent.isShortPress())) { switch (inputEvent.keyCode) { + case KeyCode::HEADSET_VOLUP: + [[fallthrough]]; case KeyCode::KEY_VOLUP: { return application->increaseCurrentVolume(); } + case KeyCode::HEADSET_VOLDN: + [[fallthrough]]; case KeyCode::KEY_VOLDN: { return application->decreaseCurrentVolume(); } diff --git a/module-bsp/bsp/keyboard/key_codes.hpp b/module-bsp/bsp/keyboard/key_codes.hpp index 710043ded31dd80ba92dae753b3d38ed5ee6d04a..1ce4c62eb3793f0ee7630fd032ce8d1dcda362ab 100644 --- a/module-bsp/bsp/keyboard/key_codes.hpp +++ b/module-bsp/bsp/keyboard/key_codes.hpp @@ -33,7 +33,11 @@ namespace bsp { SSwitchUp = 34, SSwitchDown = 54, - SSwitchMid = 44 + SSwitchMid = 44, + + HeadsetOk = 71, + HeadsetVolUp = 72, + HeadsetVolDown = 73 }; } @@ -92,6 +96,12 @@ inline const char *c_str(bsp::KeyCodes code) return "SSwitchDown"; case bsp::KeyCodes::SSwitchMid: return "SSwitchMid"; + case bsp::KeyCodes::HeadsetOk: + return "HeadsetOk"; + case bsp::KeyCodes::HeadsetVolUp: + return "HeadsetVolUp"; + case bsp::KeyCodes::HeadsetVolDown: + return "HeadsetVolDown"; } return ""; } diff --git a/module-gui/gui/input/InputEvent.hpp b/module-gui/gui/input/InputEvent.hpp index 064f5bf1c5f8f486843ec950aa74f8621cf62aff..d061a87aba82f3cb68f48ca3943e6a3ae1a74338 100644 --- a/module-gui/gui/input/InputEvent.hpp +++ b/module-gui/gui/input/InputEvent.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #pragma once @@ -41,6 +41,10 @@ namespace gui SWITCH_UP = static_cast(bsp::KeyCodes::SSwitchUp), SWITCH_MID = static_cast(bsp::KeyCodes::SSwitchMid), SWITCH_DN = static_cast(bsp::KeyCodes::SSwitchDown), + + HEADSET_OK = static_cast(bsp::KeyCodes::HeadsetOk), + HEADSET_VOLUP = static_cast(bsp::KeyCodes::HeadsetVolUp), + HEADSET_VOLDN = static_cast(bsp::KeyCodes::HeadsetVolDown), }; static const int InvalidNumericKeyCode = -1; @@ -181,6 +185,12 @@ namespace gui return "SWITCH_MID"; case gui::KeyCode::SWITCH_DN: return "SWITCH_DN"; + case gui::KeyCode::HEADSET_OK: + return "HEADSET_OK"; + case gui::KeyCode::HEADSET_VOLUP: + return "HEADSET_VOLUP"; + case gui::KeyCode::HEADSET_VOLDN: + return "HEADSET_VOLDN"; } return ""; } diff --git a/module-gui/gui/input/Translator.cpp b/module-gui/gui/input/Translator.cpp index 19c4f1e70518f41090b1186f299fae7a9ca3762a..5a282d0938f24dc375f9b37c957e5c9915593147 100644 --- a/module-gui/gui/input/Translator.cpp +++ b/module-gui/gui/input/Translator.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "Translator.hpp" @@ -137,6 +137,15 @@ namespace gui case bsp::KeyCodes::SSwitchMid: return gui::KeyCode::SWITCH_MID; break; + case bsp::KeyCodes::HeadsetOk: + return gui::KeyCode::HEADSET_OK; + + case bsp::KeyCodes::HeadsetVolUp: + return gui::KeyCode::HEADSET_VOLUP; + + case bsp::KeyCodes::HeadsetVolDown: + return gui::KeyCode::HEADSET_VOLDN; + default: LOG_ERROR("Unhandled bsp key!"); return gui::KeyCode::KEY_UNDEFINED; diff --git a/module-services/service-eink/board/linux/renderer/src/RWindow.cpp b/module-services/service-eink/board/linux/renderer/src/RWindow.cpp index c82edf5e41d12134d72c576d19a28b2fb69f7a8a..69423a1fe4a1974dbba91154be997bfdafd2c4e9 100644 --- a/module-services/service-eink/board/linux/renderer/src/RWindow.cpp +++ b/module-services/service-eink/board/linux/renderer/src/RWindow.cpp @@ -58,6 +58,10 @@ void RWindow::keyMapInit(void) keyMap.insert(std::pair('b', static_cast(bsp::KeyCodes::SSwitchMid))); keyMap.insert(std::pair('n', static_cast(bsp::KeyCodes::SSwitchUp))); + keyMap.insert(std::pair('u', static_cast(bsp::KeyCodes::HeadsetOk))); + keyMap.insert(std::pair('j', static_cast(bsp::KeyCodes::HeadsetVolUp))); + keyMap.insert(std::pair('m', static_cast(bsp::KeyCodes::HeadsetVolDown))); + batteryKeyMap.insert(std::pair('[', 1)); batteryKeyMap.insert(std::pair(']', 2)); batteryKeyMap.insert(std::pair('p', 3)); diff --git a/module-services/service-evtmgr/WorkerEvent.cpp b/module-services/service-evtmgr/WorkerEvent.cpp index 5614f5341866f57510de0923936fd5e768a9a51a..ab041977c017af3a05e672569039b6de22899768 100644 --- a/module-services/service-evtmgr/WorkerEvent.cpp +++ b/module-services/service-evtmgr/WorkerEvent.cpp @@ -335,16 +335,13 @@ bsp::KeyCodes WorkerEvent::headsetKeyToKeyboardKey(uint8_t headsetKeyCode) { switch (headsetKeyCode) { case static_cast(bsp::headset::KeyCode::Key1): - return bsp::KeyCodes::JoystickEnter; - - case static_cast(bsp::headset::KeyCode::Key2): - return bsp::KeyCodes::Undefined; + return bsp::KeyCodes::HeadsetOk; case static_cast(bsp::headset::KeyCode::Key3): - return bsp::KeyCodes::VolUp; + return bsp::KeyCodes::HeadsetVolUp; case static_cast(bsp::headset::KeyCode::Key4): - return bsp::KeyCodes::VolDown; + return bsp::KeyCodes::HeadsetVolDown; } return bsp::KeyCodes::Undefined; }