From afa872fff04c14e21589702abd9c8256f6b22342 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Sat, 6 Jun 2020 23:54:38 +0200 Subject: [PATCH 1/2] Made debounce time configurable --- .../menus/boardcomputerhardwaresettingsmenu.h | 11 +++++++++++ src/main.cpp | 2 -- src/presets.h | 3 +++ src/screens.h | 6 ++++++ src/settings.h | 6 ++++++ src/settingsaccessors.h | 3 +++ src/texts.h | 1 + src/utils.h | 4 ++++ 8 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/displays/menus/boardcomputerhardwaresettingsmenu.h b/src/displays/menus/boardcomputerhardwaresettingsmenu.h index fb64712..0c57b58 100644 --- a/src/displays/menus/boardcomputerhardwaresettingsmenu.h +++ b/src/displays/menus/boardcomputerhardwaresettingsmenu.h @@ -65,6 +65,16 @@ using BremsMaxChangeScreen = makeComponent< SwitchScreenAction >; +#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) +using DPadDebounceChangeScreen = makeComponent< + ChangeValueDisplay, + StaticText, + DPadDebounceAccessor, + BackActionInterface>, + SwitchScreenAction +>; +#endif + #ifdef FEATURE_GAMETRAK struct GametrakXText : public virtual TextInterface { public: @@ -136,6 +146,7 @@ class BoardcomputerHardwareSettingsMenu : makeComponent, SwitchScreenAction>, makeComponent, SwitchScreenAction>, makeComponent, SwitchScreenAction>, + makeComponent, SwitchScreenAction>, #ifdef FEATURE_GAMETRAK makeComponent, DummyAction>, makeComponent, DummyAction>, diff --git a/src/main.cpp b/src/main.cpp index 7140fe3..7a71a9e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -78,8 +78,6 @@ void setup() { uint8_t macAddress[6]; WiFi.macAddress(&macAddress[0]); - #define STRING2(s) #s - #define STRING(s) STRING2(s) std::sprintf(deviceName, STRING(DEVICE_PREFIX) "_%02hhx%02hhx%02hhx", macAddress[3], macAddress[4], macAddress[5]); } diff --git a/src/presets.h b/src/presets.h index b924cbc..fdaaebf 100644 --- a/src/presets.h +++ b/src/presets.h @@ -73,6 +73,9 @@ constexpr Settings::BoardcomputerHardware defaultBoardcomputerHardware { .gasMax = DEFAULT_GASMAX, .bremsMin = DEFAULT_BREMSMIN, .bremsMax = DEFAULT_BREMSMAX, +#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) + .dpadDebounce = 25, +#endif #ifdef FEATURE_GAMETRAK .gametrakXMin = DEFAULT_GAMETRAKXMIN, .gametrakXMax = DEFAULT_GAMETRAKXMAX, diff --git a/src/screens.h b/src/screens.h index 57ffa18..6f473e0 100644 --- a/src/screens.h +++ b/src/screens.h @@ -165,6 +165,9 @@ union X { GasMaxChangeScreen changeGasMax; BremsMinChangeScreen changeBremsMin; BremsMaxChangeScreen changeBremsMax; +#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) + DPadDebounceChangeScreen dPadDebounceChangeScreen; +#endif #ifdef FEATURE_GAMETRAK GametrakXMinChangeScreen changeGametrakXMin; GametrakXMaxChangeScreen changeGametrakXMax; @@ -305,6 +308,9 @@ template<> decltype(displays.changeGasMin) & template<> decltype(displays.changeGasMax) &getRefByType() { return displays.changeGasMax; } template<> decltype(displays.changeBremsMin) &getRefByType() { return displays.changeBremsMin; } template<> decltype(displays.changeBremsMax) &getRefByType() { return displays.changeBremsMax; } +#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) +template<> decltype(displays.dPadDebounceChangeScreen) &getRefByType() { return displays.dPadDebounceChangeScreen; } +#endif #ifdef FEATURE_GAMETRAK template<> decltype(displays.changeGametrakXMin) &getRefByType() { return displays.changeGametrakXMin; } template<> decltype(displays.changeGametrakXMax) &getRefByType() { return displays.changeGametrakXMax; } diff --git a/src/settings.h b/src/settings.h index 629f9cb..fd9b59f 100644 --- a/src/settings.h +++ b/src/settings.h @@ -44,6 +44,9 @@ struct Settings struct BoardcomputerHardware { int16_t sampleCount; int16_t gasMin, gasMax, bremsMin, bremsMax; +#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) + uint8_t dpadDebounce; +#endif #ifdef FEATURE_GAMETRAK int16_t gametrakXMin, gametrakXMax, gametrakYMin, gametrakYMax, gametrakDistMin, gametrakDistMax; #endif @@ -116,6 +119,9 @@ void Settings::executeForEverySetting(T &&callable) callable("gasMax", boardcomputerHardware.gasMax); callable("bremsMin", boardcomputerHardware.bremsMin); callable("bremsMax", boardcomputerHardware.bremsMax); +#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) + callable("dpadDebounce", boardcomputerHardware.dpadDebounce); +#endif #ifdef FEATURE_GAMETRAK callable("gametrakXMin", boardcomputerHardware.gametrakXMin); callable("gametrakXMax", boardcomputerHardware.gametrakXMax); diff --git a/src/settingsaccessors.h b/src/settingsaccessors.h index bb02a2e..b88e631 100644 --- a/src/settingsaccessors.h +++ b/src/settingsaccessors.h @@ -60,6 +60,9 @@ struct GasMinAccessor : public RefAccessorSaveSettings { int16_t &getRe struct GasMaxAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.boardcomputerHardware.gasMax; } }; struct BremsMinAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.boardcomputerHardware.bremsMin; } }; struct BremsMaxAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.boardcomputerHardware.bremsMax; } }; +#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) +struct DPadDebounceAccessor : public RefAccessorSaveSettings { uint8_t &getRef() const override { return settings.boardcomputerHardware.dpadDebounce; } }; +#endif #ifdef FEATURE_GAMETRAK struct GametrakXMinAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.boardcomputerHardware.gametrakXMin; } }; struct GametrakXMaxAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.boardcomputerHardware.gametrakXMax; } }; diff --git a/src/texts.h b/src/texts.h index 523eff2..5942ea1 100644 --- a/src/texts.h +++ b/src/texts.h @@ -234,6 +234,7 @@ constexpr char TEXT_SETGASMIN[] = "Set gasMin"; constexpr char TEXT_SETGASMAX[] = "Set gasMax"; constexpr char TEXT_SETBREMSMIN[] = "Set bremsMin"; constexpr char TEXT_SETBREMSMAX[] = "Set bremsMax"; +constexpr char TEXT_SETDPADDEBOUNCE[] = "Set dpadDebounce"; constexpr char TEXT_GAMETRAKCALIBRATE[] = "Gametrak calibrate"; constexpr char TEXT_SETGAMETRAKXMIN[] = "Set gametrakXMin"; constexpr char TEXT_SETGAMETRAKXMAX[] = "Set gametrakXMax"; diff --git a/src/utils.h b/src/utils.h index 9c9c5f1..ab5cfd5 100644 --- a/src/utils.h +++ b/src/utils.h @@ -9,6 +9,10 @@ #include "display.h" #include "globals.h" +// macros are a shit piece of software +#define STRING2(s) #s +#define STRING(s) STRING2(s) + namespace { bool currentlyReverseBeeping; bool reverseBeepToggle; From 556185b121e3d0387664807986370f31b5b9b95a Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Sat, 6 Jun 2020 23:59:14 +0200 Subject: [PATCH 2/2] Fixed compiling --- src/displays/menus/boardcomputerhardwaresettingsmenu.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/displays/menus/boardcomputerhardwaresettingsmenu.h b/src/displays/menus/boardcomputerhardwaresettingsmenu.h index 0c57b58..92981d0 100644 --- a/src/displays/menus/boardcomputerhardwaresettingsmenu.h +++ b/src/displays/menus/boardcomputerhardwaresettingsmenu.h @@ -146,7 +146,9 @@ class BoardcomputerHardwareSettingsMenu : makeComponent, SwitchScreenAction>, makeComponent, SwitchScreenAction>, makeComponent, SwitchScreenAction>, +#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) makeComponent, SwitchScreenAction>, +#endif #ifdef FEATURE_GAMETRAK makeComponent, DummyAction>, makeComponent, DummyAction>,