From 38fc2d800d4cf66794c7ff86137e8f0ddaf66397 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Sun, 24 May 2020 13:48:20 +0200 Subject: [PATCH 1/8] Implemented back button in input framework --- src/dpad.h | 4 +++- src/dpadHack.h | 4 +++- src/globals.h | 37 ++++++++++++++++++++++++++++++------- src/screens.h | 8 ++++---- src/serialhandler.h | 8 ++++++-- src/webserver.h | 15 ++++++++++++--- 6 files changed, 58 insertions(+), 18 deletions(-) diff --git a/src/dpad.h b/src/dpad.h index 561aedf..ad8fa23 100644 --- a/src/dpad.h +++ b/src/dpad.h @@ -58,7 +58,9 @@ void updateDpad() if (!std::get(lastState) && std::get(state)) InputDispatcher::rotate(1); if (std::get(lastState) != std::get(state)) - InputDispatcher::button(std::get(state)); + InputDispatcher::confirmButton(std::get(state)); + if (std::get(lastState) != std::get(state)) + InputDispatcher::backButton(std::get(state)); lastState = state; } diff --git a/src/dpadHack.h b/src/dpadHack.h index f8e54fb..a8f9ddb 100644 --- a/src/dpadHack.h +++ b/src/dpadHack.h @@ -75,7 +75,9 @@ void updateDpadHack() if (!std::get(lastState) && std::get(state)) InputDispatcher::rotate(1); if (std::get(lastState) != std::get(state)) - InputDispatcher::button(std::get(state)); + InputDispatcher::confirmButton(std::get(state)); + if (std::get(lastState) != std::get(state)) + InputDispatcher::backButton(std::get(state)); lastState = state; } diff --git a/src/globals.h b/src/globals.h index cfc4932..6855776 100644 --- a/src/globals.h +++ b/src/globals.h @@ -42,8 +42,10 @@ Display *currentDisplay{}; int rotated{}; bool requestFullRedraw{}; -bool buttonLongPressed{}; -bool buttonPressed{}; +bool confirmButtonPressed{}; +bool confirmButtonLongPressed{}; +bool backButtonPressed{}; +bool backButtonLongPressed{}; class InputDispatcher { @@ -53,7 +55,7 @@ public: rotated += offset; } - static void button(bool pressed) + static void confirmButton(bool pressed) { static unsigned long pressBegin = 0; @@ -65,15 +67,36 @@ public: { const auto duration = now - pressBegin; - if (duration < 1000) - buttonPressed = true; - else if (duration < 3000) - buttonLongPressed = true; + if (duration < 500) + confirmButtonPressed = true; + else if (duration < 2000) + confirmButtonLongPressed = true; else requestFullRedraw = true; pressBegin = 0; } } + + static void backButton(bool pressed) + { + static unsigned long pressBegin = 0; + + const auto now = millis(); + + if (pressed) + pressBegin = now; + else + { + const auto duration = now - pressBegin; + + if (duration < 500) + backButtonPressed = true; + else + backButtonLongPressed = true; + + pressBegin = 0; + } + } }; } diff --git a/src/screens.h b/src/screens.h index ac9fe46..784b53b 100644 --- a/src/screens.h +++ b/src/screens.h @@ -345,15 +345,15 @@ void updateDisplay() currentDisplay->initScreen(); } - if (buttonLongPressed) + if (confirmButtonLongPressed) { - buttonLongPressed = false; + confirmButtonLongPressed = false; Serial.println("todo: implement long press"); } - if (buttonPressed) + if (confirmButtonPressed) { - buttonPressed = false; + confirmButtonPressed = false; if (currentDisplay) currentDisplay->button(); diff --git a/src/serialhandler.h b/src/serialhandler.h index 2396f43..8ed6e52 100644 --- a/src/serialhandler.h +++ b/src/serialhandler.h @@ -83,8 +83,12 @@ void handleSerial() InputDispatcher::rotate(1); break; case 'C': - InputDispatcher::button(true); - InputDispatcher::button(false); + InputDispatcher::confirmButton(true); + InputDispatcher::confirmButton(false); + break; + case 'D': + InputDispatcher::backButton(true); + InputDispatcher::backButton(false); break; } } diff --git a/src/webserver.h b/src/webserver.h index d0e1e23..3cc9b82 100644 --- a/src/webserver.h +++ b/src/webserver.h @@ -54,7 +54,7 @@ void initWebserver() { HtmlTag pTag{"p", content}; - content += "Up Down Confirm"; + content += "Up Down Confirm Back"; } if (auto constCurrentDisplay = static_cast(currentDisplay)) @@ -117,8 +117,17 @@ void initWebserver() }); webServer.on("/confirm", HTTP_GET, [](){ - InputDispatcher::button(true); - InputDispatcher::button(false); + InputDispatcher::confirmButton(true); + InputDispatcher::confirmButton(false); + + webServer.sendHeader("Connection", "close"); + webServer.sendHeader("Location", "/"); + webServer.send(302, "text/html", "ok"); + }); + + webServer.on("/back", HTTP_GET, [](){ + InputDispatcher::backButton(true); + InputDispatcher::backButton(false); webServer.sendHeader("Connection", "close"); webServer.sendHeader("Location", "/"); From d5eb54db7c200cc9a47dfd1c5e35238ebeb94ec8 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Sun, 24 May 2020 13:55:15 +0200 Subject: [PATCH 2/8] Implemented back button in display framework --- src/changevaluedisplay.h | 12 +----------- src/demodisplay.h | 4 ++-- src/display.h | 3 ++- src/displays/lockscreen.h | 4 ++-- src/displays/statusdisplay.h | 4 ++-- src/displays/updatedisplay.h | 4 ++-- src/menudisplay.h | 4 ++-- src/screens.h | 28 +++++++++++++++++++++------- 8 files changed, 34 insertions(+), 29 deletions(-) diff --git a/src/changevaluedisplay.h b/src/changevaluedisplay.h index fab703f..54bd889 100644 --- a/src/changevaluedisplay.h +++ b/src/changevaluedisplay.h @@ -23,8 +23,6 @@ public: virtual int shownValue() const = 0; virtual void setShownValue(int value) = 0; - virtual void confirm() = 0; - protected: Label m_titleLabel{5, 5}; // 230, 25 Label m_valueLabel{26, 81}; // 188, 53 @@ -55,13 +53,11 @@ public: void redraw() override; void rotate(int offset) override; - void button() override; + void confirm() override; int shownValue() const { return m_value; } void setShownValue(int value) { m_value = value; } - void confirm() override; - private: Tvalue m_value{}; @@ -132,12 +128,6 @@ void ChangeValueDisplay::rotate(int offset) m_rotateOffset += offset; } -template -void ChangeValueDisplay::button() -{ - m_pressed = true; -} - template void ChangeValueDisplay::confirm() { diff --git a/src/demodisplay.h b/src/demodisplay.h index 8ad2d02..750f5cd 100644 --- a/src/demodisplay.h +++ b/src/demodisplay.h @@ -7,10 +7,10 @@ namespace { class DemoDisplay : public Display, public virtual ActionInterface { public: - void button() override; + void confirm() override; }; -void DemoDisplay::button() +void DemoDisplay::confirm() { triggered(); } diff --git a/src/display.h b/src/display.h index a1039d1..556a3e2 100644 --- a/src/display.h +++ b/src/display.h @@ -20,7 +20,8 @@ public: virtual void stop() {} virtual void rotate(int offset) {} - virtual void button() {} + virtual void confirm() {} + virtual void back() {} virtual TextInterface *asTextInterface() { return nullptr; } virtual const TextInterface *asTextInterface() const { return nullptr; } diff --git a/src/displays/lockscreen.h b/src/displays/lockscreen.h index 46b153d..ecf241b 100644 --- a/src/displays/lockscreen.h +++ b/src/displays/lockscreen.h @@ -29,7 +29,7 @@ public: void redraw() override; void stop() override; - void button() override; + void confirm() override; void rotate(int offset) override; private: @@ -146,7 +146,7 @@ void Lockscreen::stop() currentMode = m_oldMode; } -void Lockscreen::button() +void Lockscreen::confirm() { m_pressed = true; } diff --git a/src/displays/statusdisplay.h b/src/displays/statusdisplay.h index 154e382..8e00c32 100644 --- a/src/displays/statusdisplay.h +++ b/src/displays/statusdisplay.h @@ -148,8 +148,8 @@ void StatusDisplay::redraw() m_labelBrems.redraw(String{brems}); m_progressBarBrems.redraw(brems); - m_frontStatus.redraw(front); - m_backStatus.redraw(back); + m_frontStatus.redraw(::front); + m_backStatus.redraw(::back); tft.setTextFont(2); m_labelWifiStatus.redraw(toString(WiFi.status())); diff --git a/src/displays/updatedisplay.h b/src/displays/updatedisplay.h index add4fa1..7994998 100644 --- a/src/displays/updatedisplay.h +++ b/src/displays/updatedisplay.h @@ -27,7 +27,7 @@ public: void start() override; void initScreen() override; void redraw() override; - void button() override; + void confirm() override; public: bool m_finished; @@ -85,7 +85,7 @@ void UpdateDisplay::redraw() m_progressBar.redraw(float(m_progress) / m_total * 100.f); } -void UpdateDisplay::button() +void UpdateDisplay::confirm() { if (m_finished) switchScreen(); diff --git a/src/menudisplay.h b/src/menudisplay.h index 6c89d85..62babea 100644 --- a/src/menudisplay.h +++ b/src/menudisplay.h @@ -22,7 +22,7 @@ public: void stop() override; void rotate(int offset) override; - void button() override; + void confirm() override; virtual void itemPressed(int index); @@ -241,7 +241,7 @@ void MenuDisplay::rotate(int offset) m_rotateOffset += offset; } -void MenuDisplay::button() +void MenuDisplay::confirm() { m_pressed = true; } diff --git a/src/screens.h b/src/screens.h index 784b53b..e85a4ff 100644 --- a/src/screens.h +++ b/src/screens.h @@ -345,18 +345,32 @@ void updateDisplay() currentDisplay->initScreen(); } - if (confirmButtonLongPressed) - { - confirmButtonLongPressed = false; - Serial.println("todo: implement long press"); - } - if (confirmButtonPressed) { confirmButtonPressed = false; if (currentDisplay) - currentDisplay->button(); + currentDisplay->confirm(); + } + + if (confirmButtonLongPressed) + { + confirmButtonLongPressed = false; + Serial.println("todo: implement long press for confirm"); + } + + if (backButtonPressed) + { + backButtonPressed = false; + + if (currentDisplay) + currentDisplay->back(); + } + + if (backButtonLongPressed) + { + backButtonLongPressed = false; + Serial.println("todo: implement long press for back"); } if (currentDisplay) From fa954f7c30c3d55a75d6818bf91740ed36ad34e9 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Sun, 24 May 2020 14:08:25 +0200 Subject: [PATCH 3/8] Implemented back button for a few menus --- src/display.h | 32 ++++++++++++++++++++++++++--- src/displays/menus/bmsmenu.h | 1 + src/displays/menus/debugmenu.h | 1 + src/displays/menus/demosmenu.h | 1 + src/displays/menus/graphsmenu.h | 1 + src/displays/menus/mainmenu.h | 1 + src/displays/menus/presetsmenu.h | 1 + src/displays/menus/selectmodemenu.h | 1 + src/displays/menus/settingsmenu.h | 1 + 9 files changed, 37 insertions(+), 3 deletions(-) diff --git a/src/display.h b/src/display.h index 556a3e2..c6dd14d 100644 --- a/src/display.h +++ b/src/display.h @@ -9,7 +9,35 @@ class ChangeValueDisplayInterface; } namespace { -class Display { +class ConfirmInterface { +public: + virtual void confirm() {} +}; + +class BackInterface { +public: + virtual void back() {} +}; + +template +class ConfirmActionInterface : public virtual ConfirmInterface +{ + T m_action; + +public: + void confirm() override { m_action.triggered(); } +}; + +template +class BackActionInterface : public virtual BackInterface +{ + T m_action; + +public: + void back() override { m_action.triggered(); } +}; + +class Display : public virtual ConfirmInterface, public virtual BackInterface { public: virtual ~Display() = default; @@ -20,8 +48,6 @@ public: virtual void stop() {} virtual void rotate(int offset) {} - virtual void confirm() {} - virtual void back() {} virtual TextInterface *asTextInterface() { return nullptr; } virtual const TextInterface *asTextInterface() const { return nullptr; } diff --git a/src/displays/menus/bmsmenu.h b/src/displays/menus/bmsmenu.h index f5cdcbb..f0bbd63 100644 --- a/src/displays/menus/bmsmenu.h +++ b/src/displays/menus/bmsmenu.h @@ -24,6 +24,7 @@ namespace { class BmsMenu : public MenuDisplay, public StaticText, + public BackActionInterface>, public StaticMenuDefinition< makeComponent, BluetoothConnectBmsAction>, makeComponent, BluetoothDisconnectAction>, diff --git a/src/displays/menus/debugmenu.h b/src/displays/menus/debugmenu.h index de8a1d7..8f9232c 100644 --- a/src/displays/menus/debugmenu.h +++ b/src/displays/menus/debugmenu.h @@ -36,6 +36,7 @@ namespace { class DebugMenu : public MenuDisplay, public StaticText, + public BackActionInterface>, public StaticMenuDefinition< makeComponent, LoadSettingsAction>, makeComponent, SaveSettingsAction>, diff --git a/src/displays/menus/demosmenu.h b/src/displays/menus/demosmenu.h index 0b2b3b8..c2d5975 100644 --- a/src/displays/menus/demosmenu.h +++ b/src/displays/menus/demosmenu.h @@ -20,6 +20,7 @@ namespace { class DemosMenu : public MenuDisplay, public StaticText, + public BackActionInterface>, public StaticMenuDefinition< makeComponent, SwitchScreenAction>, makeComponent, SwitchScreenAction>, diff --git a/src/displays/menus/graphsmenu.h b/src/displays/menus/graphsmenu.h index 1716f03..539f3a1 100644 --- a/src/displays/menus/graphsmenu.h +++ b/src/displays/menus/graphsmenu.h @@ -48,6 +48,7 @@ using MotorCurrentsGraphDisplay = makeComponent, StaticText, + public BackActionInterface>, public StaticMenuDefinition< makeComponent, SwitchScreenAction>, makeComponent, SwitchScreenAction>, diff --git a/src/displays/menus/mainmenu.h b/src/displays/menus/mainmenu.h index ad8608a..5cd5ea0 100644 --- a/src/displays/menus/mainmenu.h +++ b/src/displays/menus/mainmenu.h @@ -34,6 +34,7 @@ namespace { class MainMenu : public MenuDisplay, public StaticText, + public BackActionInterface>, public StaticMenuDefinition< makeComponent, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>, makeComponent, SwitchScreenAction, StaticMenuItemIcon<&icons::modes>>, diff --git a/src/displays/menus/presetsmenu.h b/src/displays/menus/presetsmenu.h index 35db7e4..93d4b2c 100644 --- a/src/displays/menus/presetsmenu.h +++ b/src/displays/menus/presetsmenu.h @@ -32,6 +32,7 @@ class ApplyBoardcomputerHardwarePresetAction : public virtual ActionInterface {p class PresetsMenu : public MenuDisplay, public StaticText, + public BackActionInterface>, public StaticMenuDefinition< makeComponent, ApplyPresetAction<&presets::defaultSettings>>, makeComponent, ApplyLimitsPresetAction<&presets::defaultLimits>>, diff --git a/src/displays/menus/selectmodemenu.h b/src/displays/menus/selectmodemenu.h index 0c40731..81a5f48 100644 --- a/src/displays/menus/selectmodemenu.h +++ b/src/displays/menus/selectmodemenu.h @@ -31,6 +31,7 @@ using SetLarsmModeAction = SetterAction, + public BackActionInterface>, public StaticMenuDefinition< makeComponent, MultiAction>>, makeComponent, MultiAction>>, diff --git a/src/displays/menus/settingsmenu.h b/src/displays/menus/settingsmenu.h index 12c8e2f..d367802 100644 --- a/src/displays/menus/settingsmenu.h +++ b/src/displays/menus/settingsmenu.h @@ -37,6 +37,7 @@ struct BackLedAccessor : public RefAccessor { bool &getRef() const overrid class SettingsMenu : public MenuDisplay, public StaticText, + public BackActionInterface>, public StaticMenuDefinition< makeComponent, SwitchScreenAction>, makeComponent, SwitchScreenAction, StaticMenuItemIcon<&icons::wifi>>, From c97cd854ea990316b6c73d13d51e326306df8453 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Sun, 24 May 2020 14:37:46 +0200 Subject: [PATCH 4/8] Implemented back interface for remaining menus --- src/displays/menus/aboutmenu.h | 1 + src/displays/menus/accesspointwifisettingsmenu.h | 1 + src/displays/menus/bluetoothsettingsmenu.h | 1 + src/displays/menus/boardcomputerhardwaresettingsmenu.h | 1 + src/displays/menus/buzzermenu.h | 1 + src/displays/menus/commanddebugmenu.h | 1 + src/displays/menus/controllerhardwaresettingsmenu.h | 1 + src/displays/menus/defaultmodesettingsmenu.h | 1 + src/displays/menus/dynamicdebugmenu.h | 1 + src/displays/menus/enablemenu.h | 1 + src/displays/menus/feedbackdebugmenu.h | 1 + src/displays/menus/genericwifisettingsmenu.h | 1 + src/displays/menus/invertmenu.h | 1 + src/displays/menus/larsmmodesettingsmenu.h | 1 + src/displays/menus/limitssettingsmenu.h | 1 + src/displays/menus/modessettingsmenu.h | 1 + src/displays/menus/motorfeedbackdebugmenu.h | 1 + src/displays/menus/motorstatedebugmenu.h | 1 + src/displays/menus/stationwifisettingsmenu.h | 1 + src/displays/menus/tempomatmodesettingsmenu.h | 1 + src/displays/menus/wifiscanmenu.h | 2 +- src/displays/menus/wifisettingsmenu.h | 1 + 22 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/displays/menus/aboutmenu.h b/src/displays/menus/aboutmenu.h index cb1c64b..a88a17b 100644 --- a/src/displays/menus/aboutmenu.h +++ b/src/displays/menus/aboutmenu.h @@ -20,6 +20,7 @@ constexpr char TEXT_ESPINFO[] = "ESP info:"; class AboutMenu : public MenuDisplay, public StaticText, + public BackActionInterface>, public StaticMenuDefinition< makeComponent, DummyAction>, makeComponent, DummyAction>, diff --git a/src/displays/menus/accesspointwifisettingsmenu.h b/src/displays/menus/accesspointwifisettingsmenu.h index 5b75b12..183f322 100644 --- a/src/displays/menus/accesspointwifisettingsmenu.h +++ b/src/displays/menus/accesspointwifisettingsmenu.h @@ -50,6 +50,7 @@ public: class AccessPointWifiSettingsMenu : public MenuDisplay, public StaticText, + public BackActionInterface>, public StaticMenuDefinition< makeComponent, DisabledColor, DummyAction>, makeComponent, DisabledColor, DummyAction>, diff --git a/src/displays/menus/bluetoothsettingsmenu.h b/src/displays/menus/bluetoothsettingsmenu.h index 00f3e6c..af0afdb 100644 --- a/src/displays/menus/bluetoothsettingsmenu.h +++ b/src/displays/menus/bluetoothsettingsmenu.h @@ -22,6 +22,7 @@ namespace { class BluetoothSettingsMenu : public MenuDisplay, public StaticText, + public BackActionInterface>, public StaticMenuDefinition< makeComponent, makeComponent, diff --git a/src/displays/menus/boardcomputerhardwaresettingsmenu.h b/src/displays/menus/boardcomputerhardwaresettingsmenu.h index 79548b7..a83e1b7 100644 --- a/src/displays/menus/boardcomputerhardwaresettingsmenu.h +++ b/src/displays/menus/boardcomputerhardwaresettingsmenu.h @@ -37,6 +37,7 @@ using BremsMaxChangeScreen = makeComponent, StaticTe class BoardcomputerHardwareSettingsMenu : public MenuDisplay, public StaticText, + public BackActionInterface>, public StaticMenuDefinition< makeComponent, DummyAction>, makeComponent, DummyAction>, diff --git a/src/displays/menus/buzzermenu.h b/src/displays/menus/buzzermenu.h index 810978f..5487708 100644 --- a/src/displays/menus/buzzermenu.h +++ b/src/displays/menus/buzzermenu.h @@ -39,6 +39,7 @@ using ReverseBeepDuration1ChangeScreen = makeComponent, + public BackActionInterface>, public StaticMenuDefinition< makeComponent, SwitchScreenAction>, makeComponent, SwitchScreenAction>, diff --git a/src/displays/menus/commanddebugmenu.h b/src/displays/menus/commanddebugmenu.h index 0861d1a..6e8a6b1 100644 --- a/src/displays/menus/commanddebugmenu.h +++ b/src/displays/menus/commanddebugmenu.h @@ -19,6 +19,7 @@ template class CommandDebugMenu : public MenuDisplay, public StaticText, + public BackActionInterface>, public StaticMenuDefinition< makeComponent, makeComponent, diff --git a/src/displays/menus/controllerhardwaresettingsmenu.h b/src/displays/menus/controllerhardwaresettingsmenu.h index 599a359..7fffb3e 100644 --- a/src/displays/menus/controllerhardwaresettingsmenu.h +++ b/src/displays/menus/controllerhardwaresettingsmenu.h @@ -30,6 +30,7 @@ using NumMagnetPolesChangeScreen = makeComponent, St class ControllerHardwareSettingsMenu : public MenuDisplay, public StaticText, + public BackActionInterface>, public StaticMenuDefinition< makeComponent, SwitchScreenAction>, makeComponent, SwitchScreenAction>, diff --git a/src/displays/menus/defaultmodesettingsmenu.h b/src/displays/menus/defaultmodesettingsmenu.h index 3f53c93..e5a450a 100644 --- a/src/displays/menus/defaultmodesettingsmenu.h +++ b/src/displays/menus/defaultmodesettingsmenu.h @@ -32,6 +32,7 @@ using DefaultModeBrems2WertChangeDisplay = makeComponent, + public BackActionInterface>, public StaticMenuDefinition< makeComponent, SwitchScreenAction>, makeComponent, SwitchScreenAction>, diff --git a/src/displays/menus/dynamicdebugmenu.h b/src/displays/menus/dynamicdebugmenu.h index 1311776..2013c29 100644 --- a/src/displays/menus/dynamicdebugmenu.h +++ b/src/displays/menus/dynamicdebugmenu.h @@ -121,6 +121,7 @@ constexpr char TEXT_DEBUGTOGGLE[] = "Toggle"; class DynamicDebugMenu : public MenuDisplay, public RandomText, + public BackActionInterface>, public StaticMenuDefinition< // dummy items to allow for scrolling makeComponent, DummyAction>, diff --git a/src/displays/menus/enablemenu.h b/src/displays/menus/enablemenu.h index 82504da..583ee3e 100644 --- a/src/displays/menus/enablemenu.h +++ b/src/displays/menus/enablemenu.h @@ -19,6 +19,7 @@ namespace { class EnableMenu : public MenuDisplay, public StaticText, + public BackActionInterface>, public StaticMenuDefinition< makeComponent, ToggleBoolAction, CheckboxIcon, FrontLeftEnabledAccessor>, makeComponent, ToggleBoolAction, CheckboxIcon, FrontRightEnabledAccessor>, diff --git a/src/displays/menus/feedbackdebugmenu.h b/src/displays/menus/feedbackdebugmenu.h index ae5af02..0e40c27 100644 --- a/src/displays/menus/feedbackdebugmenu.h +++ b/src/displays/menus/feedbackdebugmenu.h @@ -20,6 +20,7 @@ template class ColorInterface> class FeedbackDebugMenu : public MenuDisplay, public StaticText, + public BackActionInterface>, public StaticMenuDefinition< makeComponent, DummyAction>, makeComponent, DummyAction>, diff --git a/src/displays/menus/genericwifisettingsmenu.h b/src/displays/menus/genericwifisettingsmenu.h index b9cabb1..b8c6cf1 100644 --- a/src/displays/menus/genericwifisettingsmenu.h +++ b/src/displays/menus/genericwifisettingsmenu.h @@ -67,6 +67,7 @@ using WifiTxPowerChangeScreen = makeComponent, class GenericWifiSettingsMenu : public MenuDisplay, public StaticText, + public BackActionInterface>, public StaticMenuDefinition< makeComponent, makeComponent, diff --git a/src/displays/menus/invertmenu.h b/src/displays/menus/invertmenu.h index 286f204..4031426 100644 --- a/src/displays/menus/invertmenu.h +++ b/src/displays/menus/invertmenu.h @@ -19,6 +19,7 @@ namespace { class InvertMenu : public MenuDisplay, public StaticText, + public BackActionInterface>, public StaticMenuDefinition< makeComponent, ToggleBoolAction, CheckboxIcon, FrontLeftInvertedAccessor>, makeComponent, ToggleBoolAction, CheckboxIcon, FrontRightInvertedAccessor>, diff --git a/src/displays/menus/larsmmodesettingsmenu.h b/src/displays/menus/larsmmodesettingsmenu.h index 5712dee..a9c1929 100644 --- a/src/displays/menus/larsmmodesettingsmenu.h +++ b/src/displays/menus/larsmmodesettingsmenu.h @@ -22,6 +22,7 @@ using LarsmModeIterationsChangeDisplay = makeComponent, + public BackActionInterface>, public StaticMenuDefinition< makeComponent, SwitchScreenAction>, makeComponent, SwitchScreenAction>, diff --git a/src/displays/menus/limitssettingsmenu.h b/src/displays/menus/limitssettingsmenu.h index 5e61243..e7cc226 100644 --- a/src/displays/menus/limitssettingsmenu.h +++ b/src/displays/menus/limitssettingsmenu.h @@ -26,6 +26,7 @@ using PhaseAdvMaxChangeScreen = makeComponent, Stati class LimitsSettingsMenu : public MenuDisplay, public StaticText, + public BackActionInterface>, public StaticMenuDefinition< makeComponent, SwitchScreenAction>, makeComponent, SwitchScreenAction>, diff --git a/src/displays/menus/modessettingsmenu.h b/src/displays/menus/modessettingsmenu.h index c542c0f..b5dd684 100644 --- a/src/displays/menus/modessettingsmenu.h +++ b/src/displays/menus/modessettingsmenu.h @@ -18,6 +18,7 @@ namespace { class ModesSettingsMenu : public MenuDisplay, public StaticText, + public BackActionInterface>, public StaticMenuDefinition< makeComponent, SwitchScreenAction>, makeComponent, SwitchScreenAction>, diff --git a/src/displays/menus/motorfeedbackdebugmenu.h b/src/displays/menus/motorfeedbackdebugmenu.h index 5f78b11..cf01dd2 100644 --- a/src/displays/menus/motorfeedbackdebugmenu.h +++ b/src/displays/menus/motorfeedbackdebugmenu.h @@ -20,6 +20,7 @@ template class ColorInterface> class MotorFeedbackDebugMenu : public MenuDisplay, public StaticText, + public BackActionInterface>, public StaticMenuDefinition< makeComponent, DummyAction>, makeComponent, DummyAction>, diff --git a/src/displays/menus/motorstatedebugmenu.h b/src/displays/menus/motorstatedebugmenu.h index 951ebfc..ce29146 100644 --- a/src/displays/menus/motorstatedebugmenu.h +++ b/src/displays/menus/motorstatedebugmenu.h @@ -19,6 +19,7 @@ template class MotorStateDebugMenu : public MenuDisplay, public StaticText, + public BackActionInterface>, public StaticMenuDefinition< makeComponent, makeComponent, diff --git a/src/displays/menus/stationwifisettingsmenu.h b/src/displays/menus/stationwifisettingsmenu.h index 3b5aa16..a570d60 100644 --- a/src/displays/menus/stationwifisettingsmenu.h +++ b/src/displays/menus/stationwifisettingsmenu.h @@ -112,6 +112,7 @@ public: class StationWifiSettingsMenu : public MenuDisplay, public StaticText, + public BackActionInterface>, public StaticMenuDefinition< makeComponent, WifiReconnectAction>, makeComponent, WifiDisconnectAction>, diff --git a/src/displays/menus/tempomatmodesettingsmenu.h b/src/displays/menus/tempomatmodesettingsmenu.h index bae2ccb..09aabb7 100644 --- a/src/displays/menus/tempomatmodesettingsmenu.h +++ b/src/displays/menus/tempomatmodesettingsmenu.h @@ -22,6 +22,7 @@ using TempomatModeCtrlModChangeScreen = makeComponent, + public BackActionInterface>, public StaticMenuDefinition< makeComponent, SwitchScreenAction>, makeComponent, SwitchScreenAction>, diff --git a/src/displays/menus/wifiscanmenu.h b/src/displays/menus/wifiscanmenu.h index 18d0c5e..9a151c8 100644 --- a/src/displays/menus/wifiscanmenu.h +++ b/src/displays/menus/wifiscanmenu.h @@ -18,7 +18,7 @@ class WifiSettingsMenu; } namespace { -class WifiScanMenu : public MenuDisplay +class WifiScanMenu : public MenuDisplay, public BackActionInterface> { using Base = MenuDisplay; diff --git a/src/displays/menus/wifisettingsmenu.h b/src/displays/menus/wifisettingsmenu.h index b9452b5..717c0b1 100644 --- a/src/displays/menus/wifisettingsmenu.h +++ b/src/displays/menus/wifisettingsmenu.h @@ -20,6 +20,7 @@ namespace { class WifiSettingsMenu : public MenuDisplay, public StaticText, + public BackActionInterface>, public StaticMenuDefinition< makeComponent, SwitchScreenAction>, makeComponent, SwitchScreenAction>, From 93076a490cbb706f880279a0e6d6fdcf2da661ea Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Sun, 24 May 2020 14:45:08 +0200 Subject: [PATCH 5/8] Implemented back interface for other displays --- src/displays/calibratedisplay.h | 8 ++++++++ src/displays/dualgraphdisplay.h | 2 +- src/displays/gameoflifedisplay.h | 2 +- src/displays/graphdisplay.h | 2 +- src/displays/metersdisplay.h | 2 +- src/displays/pingpongdisplay.h | 2 +- src/displays/spirodisplay.h | 2 +- src/displays/starfielddisplay.h | 2 +- 8 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/displays/calibratedisplay.h b/src/displays/calibratedisplay.h index 7b93b7a..b45d85c 100644 --- a/src/displays/calibratedisplay.h +++ b/src/displays/calibratedisplay.h @@ -31,6 +31,8 @@ public: void redraw() override; void stop() override; + void back() override; + void triggered() override; private: @@ -97,6 +99,12 @@ void CalibrateDisplay::stop() currentMode = m_oldMode; } +void CalibrateDisplay::back() +{ + if (!m_bootup) + switchScreen(); +} + void CalibrateDisplay::triggered() { if (m_bootup) diff --git a/src/displays/dualgraphdisplay.h b/src/displays/dualgraphdisplay.h index fe4de7f..1bddc63 100644 --- a/src/displays/dualgraphdisplay.h +++ b/src/displays/dualgraphdisplay.h @@ -13,7 +13,7 @@ class GraphsMenu; } namespace { -class DualGraphDisplay : public DemoDisplay, public SwitchScreenAction +class DualGraphDisplay : public DemoDisplay, public SwitchScreenAction, public BackActionInterface> { using Base = DemoDisplay; diff --git a/src/displays/gameoflifedisplay.h b/src/displays/gameoflifedisplay.h index e88daaf..4c72b00 100644 --- a/src/displays/gameoflifedisplay.h +++ b/src/displays/gameoflifedisplay.h @@ -14,7 +14,7 @@ class DemosMenu; } namespace { -class GameOfLifeDisplay : public DemoDisplay, public SwitchScreenAction +class GameOfLifeDisplay : public DemoDisplay, public SwitchScreenAction, public BackActionInterface> { using Base = DemoDisplay; diff --git a/src/displays/graphdisplay.h b/src/displays/graphdisplay.h index 8d735c2..40bb1b7 100644 --- a/src/displays/graphdisplay.h +++ b/src/displays/graphdisplay.h @@ -30,7 +30,7 @@ public: }; template -class GraphDisplay : public DemoDisplay, public SwitchScreenAction, public virtual TextInterface, public virtual MultiStatisticsInterface +class GraphDisplay : public DemoDisplay, public SwitchScreenAction, public virtual TextInterface, public BackActionInterface>, public virtual MultiStatisticsInterface { using Base = DemoDisplay; diff --git a/src/displays/metersdisplay.h b/src/displays/metersdisplay.h index b390c76..f815c74 100644 --- a/src/displays/metersdisplay.h +++ b/src/displays/metersdisplay.h @@ -16,7 +16,7 @@ class BmsDisplay; } namespace { -class MetersDisplay : public DemoDisplay, public SwitchScreenAction +class MetersDisplay : public DemoDisplay, public SwitchScreenAction, public BackActionInterface> { using Base = DemoDisplay; diff --git a/src/displays/pingpongdisplay.h b/src/displays/pingpongdisplay.h index 192ef6f..1c76c02 100644 --- a/src/displays/pingpongdisplay.h +++ b/src/displays/pingpongdisplay.h @@ -13,7 +13,7 @@ class DemosMenu; } namespace { -class PingPongDisplay : public DemoDisplay, public SwitchScreenAction +class PingPongDisplay : public DemoDisplay, public SwitchScreenAction, public BackActionInterface> { using Base = DemoDisplay; diff --git a/src/displays/spirodisplay.h b/src/displays/spirodisplay.h index efce4ea..6c33556 100644 --- a/src/displays/spirodisplay.h +++ b/src/displays/spirodisplay.h @@ -13,7 +13,7 @@ class DemosMenu; } namespace { -class SpiroDisplay : public DemoDisplay, public SwitchScreenAction +class SpiroDisplay : public DemoDisplay, public SwitchScreenAction, public BackActionInterface> { using Base = DemoDisplay; diff --git a/src/displays/starfielddisplay.h b/src/displays/starfielddisplay.h index f3f478a..b996e07 100644 --- a/src/displays/starfielddisplay.h +++ b/src/displays/starfielddisplay.h @@ -13,7 +13,7 @@ class DemosMenu; } namespace { -class StarfieldDisplay : public DemoDisplay, public SwitchScreenAction +class StarfieldDisplay : public DemoDisplay, public SwitchScreenAction, public BackActionInterface> { using Base = DemoDisplay; From c395e96b634255dba161026441f353434399846c Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Sun, 24 May 2020 15:05:13 +0200 Subject: [PATCH 6/8] Implemented back button for change displays --- .../menus/boardcomputerhardwaresettingsmenu.h | 10 +++++----- src/displays/menus/buzzermenu.h | 16 +++++++-------- .../menus/controllerhardwaresettingsmenu.h | 6 +++--- src/displays/menus/defaultmodesettingsmenu.h | 20 +++++++++---------- src/displays/menus/genericwifisettingsmenu.h | 4 ++-- src/displays/menus/larsmmodesettingsmenu.h | 4 ++-- src/displays/menus/limitssettingsmenu.h | 12 +++++------ src/displays/menus/tempomatmodesettingsmenu.h | 4 ++-- 8 files changed, 38 insertions(+), 38 deletions(-) diff --git a/src/displays/menus/boardcomputerhardwaresettingsmenu.h b/src/displays/menus/boardcomputerhardwaresettingsmenu.h index a83e1b7..9d1ce46 100644 --- a/src/displays/menus/boardcomputerhardwaresettingsmenu.h +++ b/src/displays/menus/boardcomputerhardwaresettingsmenu.h @@ -28,11 +28,11 @@ public: String text() const override { return String{"brems: "} + raw_brems + ": " + brems; } }; -using SampleCountChangeScreen = makeComponent, StaticText, SampleCountAccessor, SwitchScreenAction>; -using GasMinChangeScreen = makeComponent, StaticText, GasMinAccessor, SwitchScreenAction>; -using GasMaxChangeScreen = makeComponent, StaticText, GasMaxAccessor, SwitchScreenAction>; -using BremsMinChangeScreen = makeComponent, StaticText, BremsMinAccessor, SwitchScreenAction>; -using BremsMaxChangeScreen = makeComponent, StaticText, BremsMaxAccessor, SwitchScreenAction>; +using SampleCountChangeScreen = makeComponent, StaticText, SampleCountAccessor, BackActionInterface>, SwitchScreenAction>; +using GasMinChangeScreen = makeComponent, StaticText, GasMinAccessor, BackActionInterface>, SwitchScreenAction>; +using GasMaxChangeScreen = makeComponent, StaticText, GasMaxAccessor, BackActionInterface>, SwitchScreenAction>; +using BremsMinChangeScreen = makeComponent, StaticText, BremsMinAccessor, BackActionInterface>, SwitchScreenAction>; +using BremsMaxChangeScreen = makeComponent, StaticText, BremsMaxAccessor, BackActionInterface>, SwitchScreenAction>; class BoardcomputerHardwareSettingsMenu : public MenuDisplay, diff --git a/src/displays/menus/buzzermenu.h b/src/displays/menus/buzzermenu.h index 5487708..44ec066 100644 --- a/src/displays/menus/buzzermenu.h +++ b/src/displays/menus/buzzermenu.h @@ -20,21 +20,21 @@ class SettingsMenu; namespace { struct FrontFreqAccessor : public RefAccessor { uint8_t &getRef() const override { return front.command.buzzer.freq; } }; -using FrontFreqChangeScreen = makeComponent, StaticText, FrontFreqAccessor, SwitchScreenAction>; +using FrontFreqChangeScreen = makeComponent, StaticText, FrontFreqAccessor, BackActionInterface>, SwitchScreenAction>; struct FrontPatternAccessor : public RefAccessor { uint8_t &getRef() const override { return front.command.buzzer.pattern; } }; -using FrontPatternChangeScreen = makeComponent, StaticText, FrontPatternAccessor, SwitchScreenAction>; +using FrontPatternChangeScreen = makeComponent, StaticText, FrontPatternAccessor, BackActionInterface>, SwitchScreenAction>; struct BackFreqAccessor : public RefAccessor { uint8_t &getRef() const override { return back.command.buzzer.freq; } }; -using BackFreqChangeScreen = makeComponent, StaticText, BackFreqAccessor, SwitchScreenAction>; +using BackFreqChangeScreen = makeComponent, StaticText, BackFreqAccessor, BackActionInterface>, SwitchScreenAction>; struct BackPatternAccessor : public RefAccessor { uint8_t &getRef() const override { return back.command.buzzer.pattern; } }; -using BackPatternChangeScreen = makeComponent, StaticText, BackPatternAccessor, SwitchScreenAction>; +using BackPatternChangeScreen = makeComponent, StaticText, BackPatternAccessor, BackActionInterface>, SwitchScreenAction>; -using ReverseBeepFreq0ChangeScreen = makeComponent, StaticText, ReverseBeepFreq0Accessor, SwitchScreenAction>; -using ReverseBeepFreq1ChangeScreen = makeComponent, StaticText, ReverseBeepFreq1Accessor, SwitchScreenAction>; -using ReverseBeepDuration0ChangeScreen = makeComponent, StaticText, ReverseBeepDuration0Accessor, SwitchScreenAction>; -using ReverseBeepDuration1ChangeScreen = makeComponent, StaticText, ReverseBeepDuration1Accessor, SwitchScreenAction>; +using ReverseBeepFreq0ChangeScreen = makeComponent, StaticText, ReverseBeepFreq0Accessor, BackActionInterface>, SwitchScreenAction>; +using ReverseBeepFreq1ChangeScreen = makeComponent, StaticText, ReverseBeepFreq1Accessor, BackActionInterface>, SwitchScreenAction>; +using ReverseBeepDuration0ChangeScreen = makeComponent, StaticText, ReverseBeepDuration0Accessor, BackActionInterface>, SwitchScreenAction>; +using ReverseBeepDuration1ChangeScreen = makeComponent, StaticText, ReverseBeepDuration1Accessor, BackActionInterface>, SwitchScreenAction>; class BuzzerMenu : public MenuDisplay, diff --git a/src/displays/menus/controllerhardwaresettingsmenu.h b/src/displays/menus/controllerhardwaresettingsmenu.h index 7fffb3e..10ab829 100644 --- a/src/displays/menus/controllerhardwaresettingsmenu.h +++ b/src/displays/menus/controllerhardwaresettingsmenu.h @@ -23,9 +23,9 @@ class SettingsMenu; } namespace { -using WheelDiameterMmChangeScreen = makeComponent, StaticText, WheelDiameterMmAccessor, SwitchScreenAction>; -using WheelDiameterInchChangeScreen = makeComponent, StaticText, WheelDiameterInchAccessor, RatioNumberStep>, SwitchScreenAction>; -using NumMagnetPolesChangeScreen = makeComponent, StaticText, NumMagnetPolesAccessor, SwitchScreenAction>; +using WheelDiameterMmChangeScreen = makeComponent, StaticText, WheelDiameterMmAccessor, BackActionInterface>, SwitchScreenAction>; +using WheelDiameterInchChangeScreen = makeComponent, StaticText, WheelDiameterInchAccessor, RatioNumberStep>, BackActionInterface>, SwitchScreenAction>; +using NumMagnetPolesChangeScreen = makeComponent, StaticText, NumMagnetPolesAccessor, BackActionInterface>, SwitchScreenAction>; class ControllerHardwareSettingsMenu : public MenuDisplay, diff --git a/src/displays/menus/defaultmodesettingsmenu.h b/src/displays/menus/defaultmodesettingsmenu.h index e5a450a..be1f7da 100644 --- a/src/displays/menus/defaultmodesettingsmenu.h +++ b/src/displays/menus/defaultmodesettingsmenu.h @@ -18,16 +18,16 @@ class ModesSettingsMenu; } namespace { -using DefaultModeCtrlTypChangeDisplay = makeComponent, StaticText, DefaultModeCtrlTypAccessor, SwitchScreenAction>; -using DefaultModeCtrlModChangeDisplay = makeComponent, StaticText, DefaultModeCtrlModAccessor, SwitchScreenAction>; -using DefaultModeSmoothingChangeDisplay = makeComponent, StaticText, DefaultModeSmoothingAccessor, SwitchScreenAction>; -using DefaultModeFrontPercentageChangeDisplay = makeComponent, StaticText, DefaultModeFrontPercentageAccessor, SwitchScreenAction>; -using DefaultModeBackPercentageChangeDisplay = makeComponent, StaticText, DefaultModeBackPercentageAccessor, SwitchScreenAction>; -using DefaultModeAddSchwelleChangeDisplay = makeComponent, StaticText, DefaultModeAddSchwelleAccessor, SwitchScreenAction>; -using DefaultModeGas1WertChangeDisplay = makeComponent, StaticText, DefaultModeGas1WertAccessor, SwitchScreenAction>; -using DefaultModeGas2WertChangeDisplay = makeComponent, StaticText, DefaultModeGas2WertAccessor, SwitchScreenAction>; -using DefaultModeBrems1WertChangeDisplay = makeComponent, StaticText, DefaultModeBrems1WertAccessor, SwitchScreenAction>; -using DefaultModeBrems2WertChangeDisplay = makeComponent, StaticText, DefaultModeBrems2WertAccessor, SwitchScreenAction>; +using DefaultModeCtrlTypChangeDisplay = makeComponent, StaticText, DefaultModeCtrlTypAccessor, BackActionInterface>, SwitchScreenAction>; +using DefaultModeCtrlModChangeDisplay = makeComponent, StaticText, DefaultModeCtrlModAccessor, BackActionInterface>, SwitchScreenAction>; +using DefaultModeSmoothingChangeDisplay = makeComponent, StaticText, DefaultModeSmoothingAccessor, BackActionInterface>, SwitchScreenAction>; +using DefaultModeFrontPercentageChangeDisplay = makeComponent, StaticText, DefaultModeFrontPercentageAccessor, BackActionInterface>, SwitchScreenAction>; +using DefaultModeBackPercentageChangeDisplay = makeComponent, StaticText, DefaultModeBackPercentageAccessor, BackActionInterface>, SwitchScreenAction>; +using DefaultModeAddSchwelleChangeDisplay = makeComponent, StaticText, DefaultModeAddSchwelleAccessor, BackActionInterface>, SwitchScreenAction>; +using DefaultModeGas1WertChangeDisplay = makeComponent, StaticText, DefaultModeGas1WertAccessor, BackActionInterface>, SwitchScreenAction>; +using DefaultModeGas2WertChangeDisplay = makeComponent, StaticText, DefaultModeGas2WertAccessor, BackActionInterface>, SwitchScreenAction>; +using DefaultModeBrems1WertChangeDisplay = makeComponent, StaticText, DefaultModeBrems1WertAccessor, BackActionInterface>, SwitchScreenAction>; +using DefaultModeBrems2WertChangeDisplay = makeComponent, StaticText, DefaultModeBrems2WertAccessor, BackActionInterface>, SwitchScreenAction>; class DefaultModeSettingsMenu : public MenuDisplay, diff --git a/src/displays/menus/genericwifisettingsmenu.h b/src/displays/menus/genericwifisettingsmenu.h index b8c6cf1..43eb858 100644 --- a/src/displays/menus/genericwifisettingsmenu.h +++ b/src/displays/menus/genericwifisettingsmenu.h @@ -39,7 +39,7 @@ struct WifiModeAccessor : public virtual AccessorInterface // TODO: better error handling } }; -using WifiModeChangeScreen = makeComponent, StaticText, WifiModeAccessor, SwitchScreenAction>; +using WifiModeChangeScreen = makeComponent, StaticText, WifiModeAccessor, BackActionInterface>, SwitchScreenAction>; struct WifiSleepAccessor : public virtual AccessorInterface { @@ -62,7 +62,7 @@ struct WifiTxPowerAccessor : public virtual AccessorInterface // TODO: better error handling } }; -using WifiTxPowerChangeScreen = makeComponent, StaticText, WifiTxPowerAccessor, SwitchScreenAction>; +using WifiTxPowerChangeScreen = makeComponent, StaticText, WifiTxPowerAccessor, BackActionInterface>, SwitchScreenAction>; class GenericWifiSettingsMenu : public MenuDisplay, diff --git a/src/displays/menus/larsmmodesettingsmenu.h b/src/displays/menus/larsmmodesettingsmenu.h index a9c1929..38965ae 100644 --- a/src/displays/menus/larsmmodesettingsmenu.h +++ b/src/displays/menus/larsmmodesettingsmenu.h @@ -16,8 +16,8 @@ class ModesSettingsMenu; } namespace { -using LarsmModeModeChangeDisplay = makeComponent, StaticText, LarsmModeModeAccessor, SwitchScreenAction>; -using LarsmModeIterationsChangeDisplay = makeComponent, StaticText, LarsmModeIterationsAccessor, SwitchScreenAction>; +using LarsmModeModeChangeDisplay = makeComponent, StaticText, LarsmModeModeAccessor, BackActionInterface>, SwitchScreenAction>; +using LarsmModeIterationsChangeDisplay = makeComponent, StaticText, LarsmModeIterationsAccessor, BackActionInterface>, SwitchScreenAction>; class LarsmModeSettingsMenu : public MenuDisplay, diff --git a/src/displays/menus/limitssettingsmenu.h b/src/displays/menus/limitssettingsmenu.h index e7cc226..1762d9f 100644 --- a/src/displays/menus/limitssettingsmenu.h +++ b/src/displays/menus/limitssettingsmenu.h @@ -16,12 +16,12 @@ class SettingsMenu; } namespace { -using IMotMaxChangeScreen = makeComponent, StaticText, IMotMaxAccessor, SwitchScreenAction>; -using IDcMaxChangeScreen = makeComponent, StaticText, IDcMaxAccessor, SwitchScreenAction>; -using NMotMaxKmhChangeScreen = makeComponent, StaticText, NMotMaxKmhAccessor, SwitchScreenAction>; -using NMotMaxRpmChangeScreen = makeComponent, StaticText, NMotMaxRpmAccessor, SwitchScreenAction>; -using FieldWeakMaxChangeScreen = makeComponent, StaticText, FieldWeakMaxAccessor, SwitchScreenAction>; -using PhaseAdvMaxChangeScreen = makeComponent, StaticText, PhaseAdvMaxAccessor, SwitchScreenAction>; +using IMotMaxChangeScreen = makeComponent, StaticText, IMotMaxAccessor, BackActionInterface>, SwitchScreenAction>; +using IDcMaxChangeScreen = makeComponent, StaticText, IDcMaxAccessor, BackActionInterface>, SwitchScreenAction>; +using NMotMaxKmhChangeScreen = makeComponent, StaticText, NMotMaxKmhAccessor, BackActionInterface>, SwitchScreenAction>; +using NMotMaxRpmChangeScreen = makeComponent, StaticText, NMotMaxRpmAccessor, BackActionInterface>, SwitchScreenAction>; +using FieldWeakMaxChangeScreen = makeComponent, StaticText, FieldWeakMaxAccessor, BackActionInterface>, SwitchScreenAction>; +using PhaseAdvMaxChangeScreen = makeComponent, StaticText, PhaseAdvMaxAccessor, BackActionInterface>, SwitchScreenAction>; class LimitsSettingsMenu : public MenuDisplay, diff --git a/src/displays/menus/tempomatmodesettingsmenu.h b/src/displays/menus/tempomatmodesettingsmenu.h index 09aabb7..d6d6364 100644 --- a/src/displays/menus/tempomatmodesettingsmenu.h +++ b/src/displays/menus/tempomatmodesettingsmenu.h @@ -16,8 +16,8 @@ class ModesSettingsMenu; } namespace { -using TempomatModeCtrlTypChangeScreen = makeComponent, StaticText, TempomatModeCtrlTypAccessor, SwitchScreenAction>; -using TempomatModeCtrlModChangeScreen = makeComponent, StaticText, TempomatModeCtrlModAccessor, SwitchScreenAction>; +using TempomatModeCtrlTypChangeScreen = makeComponent, StaticText, TempomatModeCtrlTypAccessor, BackActionInterface>, SwitchScreenAction>; +using TempomatModeCtrlModChangeScreen = makeComponent, StaticText, TempomatModeCtrlModAccessor, BackActionInterface>, SwitchScreenAction>; class TempomatModeSettingsMenu : public MenuDisplay, From 05a4a25a2f01032ed4ceae2c84b9c04f8f956958 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Sun, 24 May 2020 15:13:22 +0200 Subject: [PATCH 7/8] Fixed typo --- src/webserver.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/webserver.h b/src/webserver.h index 3cc9b82..34e1c2b 100644 --- a/src/webserver.h +++ b/src/webserver.h @@ -54,7 +54,7 @@ void initWebserver() { HtmlTag pTag{"p", content}; - content += "Up Down Confirm Back"; + content += "Up Down Confirm Back"; } if (auto constCurrentDisplay = static_cast(currentDisplay)) From 26861b770140d41ca688ad92e8f44636b19ba4ad Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Sun, 24 May 2020 15:37:04 +0200 Subject: [PATCH 8/8] Shorter lines --- .../menus/boardcomputerhardwaresettingsmenu.h | 40 ++++++++-- src/displays/menus/buzzermenu.h | 64 +++++++++++++-- .../menus/controllerhardwaresettingsmenu.h | 25 +++++- src/displays/menus/defaultmodesettingsmenu.h | 80 ++++++++++++++++--- src/displays/menus/genericwifisettingsmenu.h | 16 +++- src/displays/menus/larsmmodesettingsmenu.h | 16 +++- src/displays/menus/limitssettingsmenu.h | 48 +++++++++-- src/displays/menus/presetsmenu.h | 24 +++++- src/displays/menus/tempomatmodesettingsmenu.h | 16 +++- 9 files changed, 287 insertions(+), 42 deletions(-) diff --git a/src/displays/menus/boardcomputerhardwaresettingsmenu.h b/src/displays/menus/boardcomputerhardwaresettingsmenu.h index 9d1ce46..139b085 100644 --- a/src/displays/menus/boardcomputerhardwaresettingsmenu.h +++ b/src/displays/menus/boardcomputerhardwaresettingsmenu.h @@ -28,11 +28,41 @@ public: String text() const override { return String{"brems: "} + raw_brems + ": " + brems; } }; -using SampleCountChangeScreen = makeComponent, StaticText, SampleCountAccessor, BackActionInterface>, SwitchScreenAction>; -using GasMinChangeScreen = makeComponent, StaticText, GasMinAccessor, BackActionInterface>, SwitchScreenAction>; -using GasMaxChangeScreen = makeComponent, StaticText, GasMaxAccessor, BackActionInterface>, SwitchScreenAction>; -using BremsMinChangeScreen = makeComponent, StaticText, BremsMinAccessor, BackActionInterface>, SwitchScreenAction>; -using BremsMaxChangeScreen = makeComponent, StaticText, BremsMaxAccessor, BackActionInterface>, SwitchScreenAction>; +using SampleCountChangeScreen = makeComponent< + ChangeValueDisplay, + StaticText, + SampleCountAccessor, + BackActionInterface>, + SwitchScreenAction +>; +using GasMinChangeScreen = makeComponent< + ChangeValueDisplay, + StaticText, + GasMinAccessor, + BackActionInterface>, + SwitchScreenAction +>; +using GasMaxChangeScreen = makeComponent< + ChangeValueDisplay, + StaticText, + GasMaxAccessor, + BackActionInterface>, + SwitchScreenAction +>; +using BremsMinChangeScreen = makeComponent< + ChangeValueDisplay, + StaticText, + BremsMinAccessor, + BackActionInterface>, + SwitchScreenAction +>; +using BremsMaxChangeScreen = makeComponent< + ChangeValueDisplay, + StaticText, + BremsMaxAccessor, + BackActionInterface>, + SwitchScreenAction +>; class BoardcomputerHardwareSettingsMenu : public MenuDisplay, diff --git a/src/displays/menus/buzzermenu.h b/src/displays/menus/buzzermenu.h index 44ec066..dfcab2e 100644 --- a/src/displays/menus/buzzermenu.h +++ b/src/displays/menus/buzzermenu.h @@ -20,21 +20,69 @@ class SettingsMenu; namespace { struct FrontFreqAccessor : public RefAccessor { uint8_t &getRef() const override { return front.command.buzzer.freq; } }; -using FrontFreqChangeScreen = makeComponent, StaticText, FrontFreqAccessor, BackActionInterface>, SwitchScreenAction>; +using FrontFreqChangeScreen = makeComponent< + ChangeValueDisplay, + StaticText, + FrontFreqAccessor, + BackActionInterface>, + SwitchScreenAction +>; struct FrontPatternAccessor : public RefAccessor { uint8_t &getRef() const override { return front.command.buzzer.pattern; } }; -using FrontPatternChangeScreen = makeComponent, StaticText, FrontPatternAccessor, BackActionInterface>, SwitchScreenAction>; +using FrontPatternChangeScreen = makeComponent< + ChangeValueDisplay, + StaticText, + FrontPatternAccessor, + BackActionInterface>, + SwitchScreenAction +>; struct BackFreqAccessor : public RefAccessor { uint8_t &getRef() const override { return back.command.buzzer.freq; } }; -using BackFreqChangeScreen = makeComponent, StaticText, BackFreqAccessor, BackActionInterface>, SwitchScreenAction>; +using BackFreqChangeScreen = makeComponent< + ChangeValueDisplay, + StaticText, + BackFreqAccessor, + BackActionInterface>, + SwitchScreenAction +>; struct BackPatternAccessor : public RefAccessor { uint8_t &getRef() const override { return back.command.buzzer.pattern; } }; -using BackPatternChangeScreen = makeComponent, StaticText, BackPatternAccessor, BackActionInterface>, SwitchScreenAction>; +using BackPatternChangeScreen = makeComponent< + ChangeValueDisplay, + StaticText, + BackPatternAccessor, + BackActionInterface>, + SwitchScreenAction +>; -using ReverseBeepFreq0ChangeScreen = makeComponent, StaticText, ReverseBeepFreq0Accessor, BackActionInterface>, SwitchScreenAction>; -using ReverseBeepFreq1ChangeScreen = makeComponent, StaticText, ReverseBeepFreq1Accessor, BackActionInterface>, SwitchScreenAction>; -using ReverseBeepDuration0ChangeScreen = makeComponent, StaticText, ReverseBeepDuration0Accessor, BackActionInterface>, SwitchScreenAction>; -using ReverseBeepDuration1ChangeScreen = makeComponent, StaticText, ReverseBeepDuration1Accessor, BackActionInterface>, SwitchScreenAction>; +using ReverseBeepFreq0ChangeScreen = makeComponent< + ChangeValueDisplay, + StaticText, + ReverseBeepFreq0Accessor, + BackActionInterface>, + SwitchScreenAction +>; +using ReverseBeepFreq1ChangeScreen = makeComponent< + ChangeValueDisplay, + StaticText, + ReverseBeepFreq1Accessor, + BackActionInterface>, + SwitchScreenAction +>; +using ReverseBeepDuration0ChangeScreen = makeComponent< + ChangeValueDisplay, + StaticText, + ReverseBeepDuration0Accessor, + BackActionInterface>, + SwitchScreenAction +>; +using ReverseBeepDuration1ChangeScreen = makeComponent< + ChangeValueDisplay, + StaticText, + ReverseBeepDuration1Accessor, + BackActionInterface>, + SwitchScreenAction +>; class BuzzerMenu : public MenuDisplay, diff --git a/src/displays/menus/controllerhardwaresettingsmenu.h b/src/displays/menus/controllerhardwaresettingsmenu.h index 10ab829..5a09488 100644 --- a/src/displays/menus/controllerhardwaresettingsmenu.h +++ b/src/displays/menus/controllerhardwaresettingsmenu.h @@ -23,9 +23,28 @@ class SettingsMenu; } namespace { -using WheelDiameterMmChangeScreen = makeComponent, StaticText, WheelDiameterMmAccessor, BackActionInterface>, SwitchScreenAction>; -using WheelDiameterInchChangeScreen = makeComponent, StaticText, WheelDiameterInchAccessor, RatioNumberStep>, BackActionInterface>, SwitchScreenAction>; -using NumMagnetPolesChangeScreen = makeComponent, StaticText, NumMagnetPolesAccessor, BackActionInterface>, SwitchScreenAction>; +using WheelDiameterMmChangeScreen = makeComponent< + ChangeValueDisplay, + StaticText, + WheelDiameterMmAccessor, + BackActionInterface>, + SwitchScreenAction +>; +using WheelDiameterInchChangeScreen = makeComponent< + ChangeValueDisplay, + StaticText, + WheelDiameterInchAccessor, + RatioNumberStep>, + BackActionInterface>, + SwitchScreenAction +>; +using NumMagnetPolesChangeScreen = makeComponent< + ChangeValueDisplay, + StaticText, + NumMagnetPolesAccessor, + BackActionInterface>, + SwitchScreenAction +>; class ControllerHardwareSettingsMenu : public MenuDisplay, diff --git a/src/displays/menus/defaultmodesettingsmenu.h b/src/displays/menus/defaultmodesettingsmenu.h index be1f7da..e648e1e 100644 --- a/src/displays/menus/defaultmodesettingsmenu.h +++ b/src/displays/menus/defaultmodesettingsmenu.h @@ -18,16 +18,76 @@ class ModesSettingsMenu; } namespace { -using DefaultModeCtrlTypChangeDisplay = makeComponent, StaticText, DefaultModeCtrlTypAccessor, BackActionInterface>, SwitchScreenAction>; -using DefaultModeCtrlModChangeDisplay = makeComponent, StaticText, DefaultModeCtrlModAccessor, BackActionInterface>, SwitchScreenAction>; -using DefaultModeSmoothingChangeDisplay = makeComponent, StaticText, DefaultModeSmoothingAccessor, BackActionInterface>, SwitchScreenAction>; -using DefaultModeFrontPercentageChangeDisplay = makeComponent, StaticText, DefaultModeFrontPercentageAccessor, BackActionInterface>, SwitchScreenAction>; -using DefaultModeBackPercentageChangeDisplay = makeComponent, StaticText, DefaultModeBackPercentageAccessor, BackActionInterface>, SwitchScreenAction>; -using DefaultModeAddSchwelleChangeDisplay = makeComponent, StaticText, DefaultModeAddSchwelleAccessor, BackActionInterface>, SwitchScreenAction>; -using DefaultModeGas1WertChangeDisplay = makeComponent, StaticText, DefaultModeGas1WertAccessor, BackActionInterface>, SwitchScreenAction>; -using DefaultModeGas2WertChangeDisplay = makeComponent, StaticText, DefaultModeGas2WertAccessor, BackActionInterface>, SwitchScreenAction>; -using DefaultModeBrems1WertChangeDisplay = makeComponent, StaticText, DefaultModeBrems1WertAccessor, BackActionInterface>, SwitchScreenAction>; -using DefaultModeBrems2WertChangeDisplay = makeComponent, StaticText, DefaultModeBrems2WertAccessor, BackActionInterface>, SwitchScreenAction>; +using DefaultModeCtrlTypChangeDisplay = makeComponent< + ChangeValueDisplay, + StaticText, + DefaultModeCtrlTypAccessor, + BackActionInterface>, + SwitchScreenAction +>; +using DefaultModeCtrlModChangeDisplay = makeComponent< + ChangeValueDisplay, + StaticText, + DefaultModeCtrlModAccessor, + BackActionInterface>, + SwitchScreenAction +>; +using DefaultModeSmoothingChangeDisplay = makeComponent< + ChangeValueDisplay, + StaticText, + DefaultModeSmoothingAccessor, + BackActionInterface>, + SwitchScreenAction +>; +using DefaultModeFrontPercentageChangeDisplay = makeComponent< + ChangeValueDisplay, + StaticText, + DefaultModeFrontPercentageAccessor, + BackActionInterface>, + SwitchScreenAction +>; +using DefaultModeBackPercentageChangeDisplay = makeComponent< + ChangeValueDisplay, + StaticText, + DefaultModeBackPercentageAccessor, + BackActionInterface>, + SwitchScreenAction +>; +using DefaultModeAddSchwelleChangeDisplay = makeComponent< + ChangeValueDisplay, + StaticText, + DefaultModeAddSchwelleAccessor, + BackActionInterface>, + SwitchScreenAction +>; +using DefaultModeGas1WertChangeDisplay = makeComponent< + ChangeValueDisplay, + StaticText, + DefaultModeGas1WertAccessor, + BackActionInterface>, + SwitchScreenAction +>; +using DefaultModeGas2WertChangeDisplay = makeComponent< + ChangeValueDisplay, + StaticText, + DefaultModeGas2WertAccessor, + BackActionInterface>, + SwitchScreenAction +>; +using DefaultModeBrems1WertChangeDisplay = makeComponent< + ChangeValueDisplay, + StaticText, + DefaultModeBrems1WertAccessor, + BackActionInterface>, + SwitchScreenAction +>; +using DefaultModeBrems2WertChangeDisplay = makeComponent< + ChangeValueDisplay, + StaticText, + DefaultModeBrems2WertAccessor, + BackActionInterface>, + SwitchScreenAction +>; class DefaultModeSettingsMenu : public MenuDisplay, diff --git a/src/displays/menus/genericwifisettingsmenu.h b/src/displays/menus/genericwifisettingsmenu.h index 43eb858..adc7f1f 100644 --- a/src/displays/menus/genericwifisettingsmenu.h +++ b/src/displays/menus/genericwifisettingsmenu.h @@ -39,7 +39,13 @@ struct WifiModeAccessor : public virtual AccessorInterface // TODO: better error handling } }; -using WifiModeChangeScreen = makeComponent, StaticText, WifiModeAccessor, BackActionInterface>, SwitchScreenAction>; +using WifiModeChangeScreen = makeComponent< + ChangeValueDisplay, + StaticText, + WifiModeAccessor, + BackActionInterface>, + SwitchScreenAction +>; struct WifiSleepAccessor : public virtual AccessorInterface { @@ -62,7 +68,13 @@ struct WifiTxPowerAccessor : public virtual AccessorInterface // TODO: better error handling } }; -using WifiTxPowerChangeScreen = makeComponent, StaticText, WifiTxPowerAccessor, BackActionInterface>, SwitchScreenAction>; +using WifiTxPowerChangeScreen = makeComponent< + ChangeValueDisplay, + StaticText, + WifiTxPowerAccessor, + BackActionInterface>, + SwitchScreenAction +>; class GenericWifiSettingsMenu : public MenuDisplay, diff --git a/src/displays/menus/larsmmodesettingsmenu.h b/src/displays/menus/larsmmodesettingsmenu.h index 38965ae..1fd0c97 100644 --- a/src/displays/menus/larsmmodesettingsmenu.h +++ b/src/displays/menus/larsmmodesettingsmenu.h @@ -16,8 +16,20 @@ class ModesSettingsMenu; } namespace { -using LarsmModeModeChangeDisplay = makeComponent, StaticText, LarsmModeModeAccessor, BackActionInterface>, SwitchScreenAction>; -using LarsmModeIterationsChangeDisplay = makeComponent, StaticText, LarsmModeIterationsAccessor, BackActionInterface>, SwitchScreenAction>; +using LarsmModeModeChangeDisplay = makeComponent< + ChangeValueDisplay, + StaticText, + LarsmModeModeAccessor, + BackActionInterface>, + SwitchScreenAction +>; +using LarsmModeIterationsChangeDisplay = makeComponent< + ChangeValueDisplay, + StaticText, + LarsmModeIterationsAccessor, + BackActionInterface>, + SwitchScreenAction +>; class LarsmModeSettingsMenu : public MenuDisplay, diff --git a/src/displays/menus/limitssettingsmenu.h b/src/displays/menus/limitssettingsmenu.h index 1762d9f..695b628 100644 --- a/src/displays/menus/limitssettingsmenu.h +++ b/src/displays/menus/limitssettingsmenu.h @@ -16,12 +16,48 @@ class SettingsMenu; } namespace { -using IMotMaxChangeScreen = makeComponent, StaticText, IMotMaxAccessor, BackActionInterface>, SwitchScreenAction>; -using IDcMaxChangeScreen = makeComponent, StaticText, IDcMaxAccessor, BackActionInterface>, SwitchScreenAction>; -using NMotMaxKmhChangeScreen = makeComponent, StaticText, NMotMaxKmhAccessor, BackActionInterface>, SwitchScreenAction>; -using NMotMaxRpmChangeScreen = makeComponent, StaticText, NMotMaxRpmAccessor, BackActionInterface>, SwitchScreenAction>; -using FieldWeakMaxChangeScreen = makeComponent, StaticText, FieldWeakMaxAccessor, BackActionInterface>, SwitchScreenAction>; -using PhaseAdvMaxChangeScreen = makeComponent, StaticText, PhaseAdvMaxAccessor, BackActionInterface>, SwitchScreenAction>; +using IMotMaxChangeScreen = makeComponent< + ChangeValueDisplay, + StaticText, + IMotMaxAccessor, + BackActionInterface>, + SwitchScreenAction +>; +using IDcMaxChangeScreen = makeComponent< + ChangeValueDisplay, + StaticText, + IDcMaxAccessor, + BackActionInterface>, + SwitchScreenAction +>; +using NMotMaxKmhChangeScreen = makeComponent< + ChangeValueDisplay, + StaticText, + NMotMaxKmhAccessor, + BackActionInterface>, + SwitchScreenAction +>; +using NMotMaxRpmChangeScreen = makeComponent< + ChangeValueDisplay, + StaticText, + NMotMaxRpmAccessor, + BackActionInterface>, + SwitchScreenAction +>; +using FieldWeakMaxChangeScreen = makeComponent< + ChangeValueDisplay, + StaticText, + FieldWeakMaxAccessor, + BackActionInterface>, + SwitchScreenAction +>; +using PhaseAdvMaxChangeScreen = makeComponent< + ChangeValueDisplay, + StaticText, + PhaseAdvMaxAccessor, + BackActionInterface>, + SwitchScreenAction +>; class LimitsSettingsMenu : public MenuDisplay, diff --git a/src/displays/menus/presetsmenu.h b/src/displays/menus/presetsmenu.h index 93d4b2c..3047a0d 100644 --- a/src/displays/menus/presetsmenu.h +++ b/src/displays/menus/presetsmenu.h @@ -18,16 +18,32 @@ class MainMenu; namespace { template -class ApplyPresetAction : public virtual ActionInterface {public: void triggered() override { settings = *preset; saveSettings(); } }; +class ApplyPresetAction : public virtual ActionInterface +{ +public: + void triggered() override { settings = *preset; saveSettings(); } +}; template -class ApplyLimitsPresetAction : public virtual ActionInterface {public: void triggered() override { settings.limits = *preset; saveSettings(); } }; +class ApplyLimitsPresetAction : public virtual ActionInterface +{ +public: + void triggered() override { settings.limits = *preset; saveSettings(); } +}; template -class ApplyControllerHardwarePresetAction : public virtual ActionInterface {public: void triggered() override { settings.controllerHardware = *preset; saveSettings(); } }; +class ApplyControllerHardwarePresetAction : public virtual ActionInterface +{ +public: + void triggered() override { settings.controllerHardware = *preset; saveSettings(); } +}; template -class ApplyBoardcomputerHardwarePresetAction : public virtual ActionInterface {public: void triggered() override { settings.boardcomputerHardware = *preset; saveSettings(); } }; +class ApplyBoardcomputerHardwarePresetAction : public virtual ActionInterface +{ +public: + void triggered() override { settings.boardcomputerHardware = *preset; saveSettings(); } +}; class PresetsMenu : public MenuDisplay, diff --git a/src/displays/menus/tempomatmodesettingsmenu.h b/src/displays/menus/tempomatmodesettingsmenu.h index d6d6364..a2a947a 100644 --- a/src/displays/menus/tempomatmodesettingsmenu.h +++ b/src/displays/menus/tempomatmodesettingsmenu.h @@ -16,8 +16,20 @@ class ModesSettingsMenu; } namespace { -using TempomatModeCtrlTypChangeScreen = makeComponent, StaticText, TempomatModeCtrlTypAccessor, BackActionInterface>, SwitchScreenAction>; -using TempomatModeCtrlModChangeScreen = makeComponent, StaticText, TempomatModeCtrlModAccessor, BackActionInterface>, SwitchScreenAction>; +using TempomatModeCtrlTypChangeScreen = makeComponent< + ChangeValueDisplay, + StaticText, + TempomatModeCtrlTypAccessor, + BackActionInterface>, + SwitchScreenAction +>; +using TempomatModeCtrlModChangeScreen = makeComponent< + ChangeValueDisplay, + StaticText, + TempomatModeCtrlModAccessor, + BackActionInterface>, + SwitchScreenAction +>; class TempomatModeSettingsMenu : public MenuDisplay,