From e8a4a9f4b8b81443044e9c27a046f1d6fc0632c0 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Thu, 30 Dec 2021 06:36:35 +0100 Subject: [PATCH] Add button calibrate display --- main/CMakeLists.txt | 6 ++- main/accessors/settingsaccessors.h | 3 ++ main/displays/buttoncalibratedisplay.cpp | 51 +++++++++++++++++++ main/displays/buttoncalibratedisplay.h | 35 +++++++++++++ main/displays/lockscreen.cpp | 4 +- main/displays/menus/blesettingsmenu.cpp | 25 +++++++-- .../boardcomputerhardwaresettingsmenu.cpp | 6 +-- ...edisplay.cpp => potiscalibratedisplay.cpp} | 29 +++++------ ...bratedisplay.h => potiscalibratedisplay.h} | 9 ++-- main/main.cpp | 14 +++-- 10 files changed, 146 insertions(+), 36 deletions(-) create mode 100644 main/displays/buttoncalibratedisplay.cpp create mode 100644 main/displays/buttoncalibratedisplay.h rename main/displays/{calibratedisplay.cpp => potiscalibratedisplay.cpp} (93%) rename main/displays/{calibratedisplay.h => potiscalibratedisplay.h} (90%) diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 6083d00..25ea2b4 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -109,7 +109,7 @@ set(headers displays/bobbymenudisplay.h displays/bobbypopupdisplay.h displays/bobbysplitgraphdisplay.h - displays/calibratedisplay.h + displays/buttoncalibratedisplay.h displays/calibratevoltagedisplay.h displays/gameoflifedisplay.h displays/gametrakcalibratedisplay.h @@ -181,6 +181,7 @@ set(headers displays/menus/wifistasettingsmenu.h displays/metersdisplay.h displays/pingpongdisplay.h + displays/potiscalibratedisplay.h displays/poweroffdisplay.h displays/powersupplydisplay.h displays/qrcodedebug.h @@ -334,7 +335,7 @@ set(sources displays/bobbymenudisplay.cpp displays/bobbypopupdisplay.cpp displays/bobbysplitgraphdisplay.cpp - displays/calibratedisplay.cpp + displays/buttoncalibratedisplay.cpp displays/calibratevoltagedisplay.cpp displays/gameoflifedisplay.cpp displays/gametrakcalibratedisplay.cpp @@ -404,6 +405,7 @@ set(sources displays/menus/wifistasettingsmenu.cpp displays/metersdisplay.cpp displays/pingpongdisplay.cpp + displays/potiscalibratedisplay.cpp displays/poweroffdisplay.cpp displays/powersupplydisplay.cpp displays/qrcodedebug.cpp diff --git a/main/accessors/settingsaccessors.h b/main/accessors/settingsaccessors.h index 8329f79..736ea58 100644 --- a/main/accessors/settingsaccessors.h +++ b/main/accessors/settingsaccessors.h @@ -14,6 +14,9 @@ struct AutoConnectBmsAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.autoConnectBms; } }; #endif +// Bluetooth +struct BluetoothNameAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.bluetoothName; } }; + // Buzzer struct ReverseBeepAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.reverseBeep; } }; struct ReverseBeepFreq0Accessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.reverseBeepFreq0; } }; diff --git a/main/displays/buttoncalibratedisplay.cpp b/main/displays/buttoncalibratedisplay.cpp new file mode 100644 index 0000000..6fea225 --- /dev/null +++ b/main/displays/buttoncalibratedisplay.cpp @@ -0,0 +1,51 @@ +#include "buttoncalibratedisplay.h" + +std::string ButtonCalibrateDisplay::text() const +{ + return "TODO"; +} + +void ButtonCalibrateDisplay::start() +{ + Base::start(); +} + +void ButtonCalibrateDisplay::initScreen() +{ + Base::initScreen(); +} + +void ButtonCalibrateDisplay::update() +{ + Base::update(); +} + +void ButtonCalibrateDisplay::redraw() +{ + Base::redraw(); +} + +void ButtonCalibrateDisplay::stop() +{ + Base::stop(); +} + +void ButtonCalibrateDisplay::rawButtonPressed(uint8_t button) +{ + //Base::rawButtonPressed(button); +} + +void ButtonCalibrateDisplay::rawButtonReleased(uint8_t button) +{ + //Base::rawButtonReleased(button); +} + +void ButtonCalibrateDisplay::buttonPressed(espgui::Button button) +{ + //Base::buttonPressed(button); +} + +void ButtonCalibrateDisplay::buttonReleased(espgui::Button button) +{ + //Base::buttonReleased(button); +} diff --git a/main/displays/buttoncalibratedisplay.h b/main/displays/buttoncalibratedisplay.h new file mode 100644 index 0000000..c7f5a35 --- /dev/null +++ b/main/displays/buttoncalibratedisplay.h @@ -0,0 +1,35 @@ +#pragma once + +// 3rdparty lib includes +#include + +// local includes +#include "globals.h" +#include "modeinterface.h" +#include "modes/ignoreinputmode.h" + +class ButtonCalibrateDisplay : public espgui::DisplayWithTitle +{ + using Base = espgui::DisplayWithTitle; + +public: + ButtonCalibrateDisplay() = default; + explicit ButtonCalibrateDisplay(bool bootup) : m_bootup{bootup} {} + + std::string text() const override; + void start() override; + void initScreen() override; + void update() override; + void redraw() override; + void stop() override; + + void rawButtonPressed(uint8_t button) override; + void rawButtonReleased(uint8_t button) override; + void buttonPressed(espgui::Button button) override; + void buttonReleased(espgui::Button button) override; + +private: + const bool m_bootup{false}; + ModeInterface *m_oldMode; + IgnoreInputMode m_mode{0, bobbycar::protocol::ControlType::FieldOrientedControl, bobbycar::protocol::ControlMode::Torque}; +}; diff --git a/main/displays/lockscreen.cpp b/main/displays/lockscreen.cpp index 5990a20..1006073 100644 --- a/main/displays/lockscreen.cpp +++ b/main/displays/lockscreen.cpp @@ -8,7 +8,7 @@ #include "globals.h" #include "utils.h" #include "displays/menus/mainmenu.h" -#include "displays/calibratedisplay.h" +#include "displays/potiscalibratedisplay.h" #include "bobbybuttons.h" #ifdef LOCKSCREEN_PLUGIN #include "ledstripdefines.h" @@ -88,7 +88,7 @@ void Lockscreen::redraw() if (m_numbers == settings.lockscreen.pin) { if (!gas || !brems || *gas > 200.f || *brems > 200.f) - espgui::switchScreen(true); + espgui::switchScreen(true); else espgui::switchScreen(); #ifdef LOCKSCREEN_PLUGIN diff --git a/main/displays/menus/blesettingsmenu.cpp b/main/displays/menus/blesettingsmenu.cpp index 37d6d41..237e3e4 100644 --- a/main/displays/menus/blesettingsmenu.cpp +++ b/main/displays/menus/blesettingsmenu.cpp @@ -1,11 +1,15 @@ #include "blesettingsmenu.h" // 3rdparty lib includes -#include "actions/dummyaction.h" -#include "actions/switchscreenaction.h" -#include "icons/back.h" +#include +#include +#include +#include +#include +#include // local includes +#include "displays/bobbychangevaluedisplay.h" #include "accessors/settingsaccessors.h" #include "bletexthelpers.h" #include "displays/menus/settingsmenu.h" @@ -14,16 +18,27 @@ #ifdef FEATURE_BLE namespace { constexpr char TEXT_BLESETTINGS[] = "BLE settings"; -constexpr char TEXT_BLEENABLED[] = "BLE enabled"; +constexpr char TEXT_ENABLED[] = "Enabled"; +constexpr char TEXT_NAME[] = "Name"; +constexpr char TEXT_NAME_FORMATTED[] = "Name: &s"; constexpr char TEXT_BACK[] = "Back"; + +using ApSsidChangeScreen = espgui::makeComponent< + BobbyChangeValueDisplay, + espgui::StaticText, + BluetoothNameAccessor, + espgui::ConfirmActionInterface>, + espgui::BackActionInterface> +>; } // namespace BleSettingsMenu::BleSettingsMenu() { using namespace espgui; - constructMenuItem, BobbyCheckbox, BleEnabledAccessor>>(); + constructMenuItem, BobbyCheckbox, BleEnabledAccessor>>(); constructMenuItem>(); constructMenuItem>(); + constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } diff --git a/main/displays/menus/boardcomputerhardwaresettingsmenu.cpp b/main/displays/menus/boardcomputerhardwaresettingsmenu.cpp index 9eb3e4d..762df4b 100644 --- a/main/displays/menus/boardcomputerhardwaresettingsmenu.cpp +++ b/main/displays/menus/boardcomputerhardwaresettingsmenu.cpp @@ -14,14 +14,14 @@ #include "icons/lock.h" #include "accessors/settingsaccessors.h" #include "displays/menus/lockscreensettingsmenu.h" -#include "displays/calibratedisplay.h" +#include "displays/potiscalibratedisplay.h" #include "displays/menus/timersmenu.h" #include "displays/menus/settingsmenu.h" namespace { constexpr char TEXT_BOARDCOMPUTERHARDWARESETTINGS[] = "Boardcomputer H/W settings"; constexpr char TEXT_LOCKSCREENSETTINGS[] = "Lockscreen Settings"; -constexpr char TEXT_CALIBRATE[] = "Calibrate"; +constexpr char TEXT_POTISCALIBRATE[] = "Potis Calibrate"; constexpr char TEXT_SAMPLECOUNT[] = "sampleCount"; constexpr char TEXT_GASMIN[] = "gasMin"; constexpr char TEXT_GASMAX[] = "gasMax"; @@ -173,7 +173,7 @@ BoardcomputerHardwareSettingsMenu::BoardcomputerHardwareSettingsMenu() constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&bobbyicons::lock>>>(); constructMenuItem, DummyAction>>(); constructMenuItem, DummyAction>>(); - constructMenuItem, SwitchScreenAction>>(); + constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); diff --git a/main/displays/calibratedisplay.cpp b/main/displays/potiscalibratedisplay.cpp similarity index 93% rename from main/displays/calibratedisplay.cpp rename to main/displays/potiscalibratedisplay.cpp index ee7cd7a..5d78723 100644 --- a/main/displays/calibratedisplay.cpp +++ b/main/displays/potiscalibratedisplay.cpp @@ -1,4 +1,4 @@ -#include "calibratedisplay.h" +#include "potiscalibratedisplay.h" // 3rdparty lib includes #include @@ -9,22 +9,19 @@ #include "displays/statusdisplay.h" #include "displays/menus/boardcomputerhardwaresettingsmenu.h" #include "newsettings.h" +#include "utils.h" +#include "globals.h" namespace { -constexpr char TEXT_CALIBRATE[] = "Calibrate"; +constexpr char TEXT_CALIBRATE[] = "Potis Calibrate"; } // namespace -CalibrateDisplay::CalibrateDisplay(bool bootup) : - m_bootup{bootup} -{ -} - -std::string CalibrateDisplay::text() const +std::string PotisCalibrateDisplay::text() const { return TEXT_CALIBRATE; } -void CalibrateDisplay::start() +void PotisCalibrateDisplay::start() { Base::start(); @@ -37,7 +34,7 @@ void CalibrateDisplay::start() m_brems = std::nullopt; } -void CalibrateDisplay::initScreen() +void PotisCalibrateDisplay::initScreen() { Base::initScreen(); @@ -56,7 +53,7 @@ void CalibrateDisplay::initScreen() m_renderedButton = -1; } -void CalibrateDisplay::update() +void PotisCalibrateDisplay::update() { Base::update(); @@ -71,7 +68,7 @@ void CalibrateDisplay::update() m_brems = std::nullopt; } -void CalibrateDisplay::redraw() +void PotisCalibrateDisplay::redraw() { Base::redraw(); @@ -159,7 +156,7 @@ void CalibrateDisplay::redraw() m_renderedButton = m_selectedButton; } -void CalibrateDisplay::stop() +void PotisCalibrateDisplay::stop() { Base::stop(); @@ -173,7 +170,7 @@ void CalibrateDisplay::stop() } } -void CalibrateDisplay::buttonPressed(espgui::Button button) +void PotisCalibrateDisplay::buttonPressed(espgui::Button button) { Base::buttonPressed(button); @@ -277,7 +274,7 @@ void CalibrateDisplay::buttonPressed(espgui::Button button) } } -void CalibrateDisplay::copyFromSettings() +void PotisCalibrateDisplay::copyFromSettings() { m_gasMin = configs.gasMin.value; m_gasMax = configs.gasMax.value; @@ -285,7 +282,7 @@ void CalibrateDisplay::copyFromSettings() m_bremsMax = configs.bremsMax.value; } -void CalibrateDisplay::copyToSettings() +void PotisCalibrateDisplay::copyToSettings() { configs.write_config(configs.gasMin, m_gasMin); configs.write_config(configs.gasMax, m_gasMax); diff --git a/main/displays/calibratedisplay.h b/main/displays/potiscalibratedisplay.h similarity index 90% rename from main/displays/calibratedisplay.h rename to main/displays/potiscalibratedisplay.h index 96e8f3c..e53ae83 100644 --- a/main/displays/calibratedisplay.h +++ b/main/displays/potiscalibratedisplay.h @@ -13,17 +13,16 @@ // local includes #include "bobbydisplaywithtitle.h" -#include "globals.h" -#include "utils.h" +#include "modeinterface.h" #include "modes/ignoreinputmode.h" -class CalibrateDisplay : public BobbyDisplayWithTitle +class PotisCalibrateDisplay : public BobbyDisplayWithTitle { using Base = BobbyDisplayWithTitle; public: - CalibrateDisplay() = default; - explicit CalibrateDisplay(bool bootup); + PotisCalibrateDisplay() = default; + explicit PotisCalibrateDisplay(bool bootup) : m_bootup{bootup} {} std::string text() const override; void start() override; diff --git a/main/main.cpp b/main/main.cpp index 1e0e1ff..99a41e6 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -23,7 +23,8 @@ using namespace std::chrono_literals; #include "modes/defaultmode.h" #include "displays/statusdisplay.h" #include "displays/lockscreen.h" -#include "displays/calibratedisplay.h" +#include "displays/potiscalibratedisplay.h" +#include "displays/buttoncalibratedisplay.h" #include "newsettings.h" #include "taskmanager.h" @@ -71,14 +72,21 @@ extern "C" void app_main() bootLabel.redraw("switchScreen"); - if (settings.lockscreen.keepLockedAfterReboot && settings.lockscreen.locked) + if (configs.dpadMappingLeft.value == INPUT_MAPPING_NONE || + configs.dpadMappingRight.value == INPUT_MAPPING_NONE || + configs.dpadMappingUp.value == INPUT_MAPPING_NONE || + configs.dpadMappingDown.value == INPUT_MAPPING_NONE) + { + espgui::switchScreen(true); + } + else if (settings.lockscreen.keepLockedAfterReboot && settings.lockscreen.locked) { espgui::switchScreen(); } else { if (!gas || !brems || *gas > 200.f || *brems > 200.f) - espgui::switchScreen(true); + espgui::switchScreen(true); else { espgui::switchScreen();