diff --git a/src/displays/calibratedisplay.h b/src/displays/calibratedisplay.h index b45d85c..61f1c20 100644 --- a/src/displays/calibratedisplay.h +++ b/src/displays/calibratedisplay.h @@ -47,8 +47,10 @@ private: Label{25, 125} // 100, 23 }}; - ProgressBar m_progressBar0{20, 200, 200, 10, 0, 1000}; - ProgressBar m_progressBar1{20, 230, 200, 10, 0, 1000}; + std::array m_progressBars {{ + ProgressBar{20, 200, 200, 10, 0, 1000}, + ProgressBar{20, 230, 200, 10, 0, 1000} + }}; }; CalibrateDisplay::CalibrateDisplay(bool bootup) : @@ -77,8 +79,8 @@ void CalibrateDisplay::initScreen() for (auto &label : m_labels) label.start(); - m_progressBar0.start(); - m_progressBar1.start(); + for (auto &progressBar : m_progressBars) + progressBar.start(); } void CalibrateDisplay::redraw() @@ -89,8 +91,8 @@ void CalibrateDisplay::redraw() m_labels[2].redraw(String{brems}); m_labels[3].redraw(String{raw_brems}); - m_progressBar0.redraw(gas); - m_progressBar1.redraw(brems); + m_progressBars[0].redraw(gas); + m_progressBars[1].redraw(brems); } void CalibrateDisplay::stop() diff --git a/src/displays/gametrakcalibratedisplay.h b/src/displays/gametrakcalibratedisplay.h new file mode 100644 index 0000000..72a40fc --- /dev/null +++ b/src/displays/gametrakcalibratedisplay.h @@ -0,0 +1,80 @@ +#pragma once + +#include + +#include + +#include "demodisplay.h" +#include "actions/switchscreenaction.h" +#include "globals.h" +#include "texts.h" +#include "widgets/label.h" +#include "widgets/progressbar.h" +#include "modes/ignoreinputmode.h" + +namespace { +class StatusDisplay; +class BoardcomputerHardwareSettingsMenu; +} + +namespace { +class GametrakCalibrateDisplay : public DemoDisplay, public SwitchScreenAction, public BackActionInterface> +{ + using Base = DemoDisplay; + +public: + void initScreen() override; + void redraw() override; + +private: + std::array m_labels {{ + Label{25, 50}, // 100, 23 + Label{120, 50}, // 100, 23 + Label{25, 75}, // 100, 23 + Label{120, 75}, // 100, 23 + Label{25, 100}, // 100, 23 + Label{120, 100} // 100, 23 + }}; + + std::array m_progressBars {{ + ProgressBar{20, 200, 200, 10, 0, 1000}, + ProgressBar{20, 230, 200, 10, 0, 1000}, + ProgressBar{20, 260, 200, 10, 0, 1000} + }}; +}; + +void GametrakCalibrateDisplay::initScreen() +{ + tft.fillScreen(TFT_BLACK); + tft.setTextFont(4); + tft.setTextColor(TFT_YELLOW); + + tft.drawString(TEXT_CALIBRATE, 5, 5, 4); + + tft.fillRect(0, 34, tft.width(), 3, TFT_WHITE); + + tft.setTextColor(TFT_WHITE, TFT_BLACK); + + for (auto &label : m_labels) + label.start(); + + for (auto &progressBar : m_progressBars) + progressBar.start(); +} + +void GametrakCalibrateDisplay::redraw() +{ + m_labels[0].redraw(String{gametrakX}); + m_labels[1].redraw(String{raw_gametrakX}); + + m_labels[2].redraw(String{gametrakY}); + m_labels[3].redraw(String{raw_gametrakY}); + + m_labels[4].redraw(String{gametrakDist}); + m_labels[5].redraw(String{raw_gametrakDist}); + + m_progressBars[0].redraw(gametrakX); + m_progressBars[1].redraw(gametrakY); + m_progressBars[2].redraw(gametrakDist); +} +} diff --git a/src/displays/menus/boardcomputerhardwaresettingsmenu.h b/src/displays/menus/boardcomputerhardwaresettingsmenu.h index 56ec50d..8520a3d 100644 --- a/src/displays/menus/boardcomputerhardwaresettingsmenu.h +++ b/src/displays/menus/boardcomputerhardwaresettingsmenu.h @@ -15,6 +15,7 @@ namespace { class BoardcomputerHardwareSettingsMenu; class CalibrateDisplay; +class GametrakCalibrateDisplay; class SettingsMenu; } @@ -122,6 +123,7 @@ class BoardcomputerHardwareSettingsMenu : makeComponent, SwitchScreenAction>, makeComponent, SwitchScreenAction>, #ifdef FEATURE_GAMETRAK + makeComponent, SwitchScreenAction>, makeComponent, SwitchScreenAction>, makeComponent, SwitchScreenAction>, makeComponent, SwitchScreenAction>, diff --git a/src/presets.h b/src/presets.h index 409e58e..cd8c20b 100644 --- a/src/presets.h +++ b/src/presets.h @@ -91,7 +91,7 @@ constexpr Settings::DefaultMode defaultDefaultMode { .smoothing = 20, .frontPercentage = 100, .backPercentage = 100, - .add_schwelle = 950, + .add_schwelle = 750, .gas1_wert = 1250, .gas2_wert = 1250, .brems1_wert = 250, @@ -105,7 +105,7 @@ constexpr Settings::TempomatMode defaultTempomatMode { constexpr Settings::LarsmMode defaultLarsmMode { .mode = LarsmModeMode::Mode4, - .iterations = 5 + .iterations = 100 }; constexpr Settings defaultSettings{ diff --git a/src/screens.h b/src/screens.h index f9a94f3..d2b5109 100644 --- a/src/screens.h +++ b/src/screens.h @@ -35,6 +35,7 @@ #include "displays/calibratedisplay.h" #include "displays/dualgraphdisplay.h" #include "displays/gameoflifedisplay.h" +#include "displays/gametrakcalibratedisplay.h" #include "displays/lockscreen.h" #include "displays/metersdisplay.h" #include "displays/pingpongdisplay.h" @@ -103,6 +104,9 @@ union X { CalibrateDisplay calibrateDisplay; DualGraphDisplay dualGraphDisplay; GameOfLifeDisplay gameOfLifeDisplay; +#ifdef FEATURE_GAMETRAK + GametrakCalibrateDisplay gametrakCalibrateDisplay; +#endif Lockscreen lockScreen; MetersDisplay metersDisplay; PingPongDisplay pingPongDisplay; @@ -236,6 +240,9 @@ template<> decltype(displays.bmsDisplay) & template<> decltype(displays.calibrateDisplay) &getRefByType() { return displays.calibrateDisplay; } template<> decltype(displays.dualGraphDisplay) &getRefByType() { return displays.dualGraphDisplay; } template<> decltype(displays.gameOfLifeDisplay) &getRefByType() { return displays.gameOfLifeDisplay; } +#ifdef FEATURE_GAMETRAK +template<> decltype(displays.gametrakCalibrateDisplay) &getRefByType() { return displays.gametrakCalibrateDisplay; } +#endif template<> decltype(displays.lockScreen) &getRefByType() { return displays.lockScreen; } template<> decltype(displays.metersDisplay) &getRefByType() { return displays.metersDisplay; } template<> decltype(displays.pingPongDisplay) &getRefByType() { return displays.pingPongDisplay; } diff --git a/src/texts.h b/src/texts.h index f8c6360..e67fa00 100644 --- a/src/texts.h +++ b/src/texts.h @@ -227,6 +227,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_GAMETRAKCALIBRATE[] = "Gametrak calibrate"; constexpr char TEXT_SETGAMETRAKXMIN[] = "Set gametrakXMin"; constexpr char TEXT_SETGAMETRAKXMAX[] = "Set gametrakXMax"; constexpr char TEXT_SETGAMETRAKYMIN[] = "Set gametrakYMin";