Merge branch 'gametrak'

This commit is contained in:
2020-05-25 23:08:55 +02:00
15 changed files with 341 additions and 19 deletions

View File

@@ -85,6 +85,16 @@ build_flags =
-DDEFAULT_BREMSMIN=1300
-DDEFAULT_BREMSMAX=4000
-DFEATURE_BMS
-DFEATURE_GAMETRAK
-DPINS_GAMETRAKX=31
-DPINS_GAMETRAKY=32
-DPINS_GAMETRAKDIST=34
-DDEFAULT_GAMETRAKXMIN=0
-DDEFAULT_GAMETRAKXMAX=4095
-DDEFAULT_GAMETRAKYMIN=0
-DDEFAULT_GAMETRAKYMAX=4095
-DDEFAULT_GAMETRAKDISTMIN=0
-DDEFAULT_GAMETRAKDISTMAX=4095
[env:feedc0de_usb]
platform = ${common_env_data.platform}

View File

@@ -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<ProgressBar, 2> 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()

View File

@@ -0,0 +1,80 @@
#pragma once
#include <array>
#include <WString.h>
#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<BoardcomputerHardwareSettingsMenu>, public BackActionInterface<SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>
{
using Base = DemoDisplay;
public:
void initScreen() override;
void redraw() override;
private:
std::array<Label, 6> 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<ProgressBar, 3> 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_GAMETRAKCALIBRATE, 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);
}
}

View File

@@ -15,6 +15,7 @@
namespace {
class BoardcomputerHardwareSettingsMenu;
class CalibrateDisplay;
class GametrakCalibrateDisplay;
class SettingsMenu;
}
@@ -64,6 +65,64 @@ using BremsMaxChangeScreen = makeComponent<
SwitchScreenAction<BoardcomputerHardwareSettingsMenu>
>;
#ifdef FEATURE_GAMETRAK
struct GametrakXText : public virtual TextInterface {
public:
String text() const override { return String{"gametrakX: "} + raw_gametrakX + ": " + gametrakX; }
};
struct GametrakYText : public virtual TextInterface {
public:
String text() const override { return String{"gametrakY: "} + raw_gametrakY + ": " + gametrakY; }
};
struct GametrakDistText : public virtual TextInterface {
public:
String text() const override { return String{"gametrakDist: "} + raw_gametrakDist + ": " + gametrakDist; }
};
using GametrakXMinChangeScreen = makeComponent<
ChangeValueDisplay<int16_t>,
StaticText<TEXT_SETGAMETRAKXMIN>,
GametrakXMinAccessor,
BackActionInterface<SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
SwitchScreenAction<BoardcomputerHardwareSettingsMenu>
>;
using GametrakXMaxChangeScreen = makeComponent<
ChangeValueDisplay<int16_t>,
StaticText<TEXT_SETGAMETRAKXMAX>,
GametrakXMaxAccessor,
BackActionInterface<SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
SwitchScreenAction<BoardcomputerHardwareSettingsMenu>
>;
using GametrakYMinChangeScreen = makeComponent<
ChangeValueDisplay<int16_t>,
StaticText<TEXT_SETGAMETRAKYMIN>,
GametrakYMinAccessor,
BackActionInterface<SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
SwitchScreenAction<BoardcomputerHardwareSettingsMenu>
>;
using GametrakYMaxChangeScreen = makeComponent<
ChangeValueDisplay<int16_t>,
StaticText<TEXT_SETGAMETRAKYMAX>,
GametrakYMaxAccessor,
BackActionInterface<SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
SwitchScreenAction<BoardcomputerHardwareSettingsMenu>
>;
using GametrakDistMinChangeScreen = makeComponent<
ChangeValueDisplay<int16_t>,
StaticText<TEXT_SETGAMETRAKDISTMIN>,
GametrakDistMinAccessor,
BackActionInterface<SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
SwitchScreenAction<BoardcomputerHardwareSettingsMenu>
>;
using GametrakDistMaxChangeScreen = makeComponent<
ChangeValueDisplay<int16_t>,
StaticText<TEXT_SETGAMETRAKDISTMAX>,
GametrakDistMaxAccessor,
BackActionInterface<SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
SwitchScreenAction<BoardcomputerHardwareSettingsMenu>
>;
#endif
class BoardcomputerHardwareSettingsMenu :
public MenuDisplay,
public StaticText<TEXT_BOARDCOMPUTERHARDWARESETTINGS>,
@@ -77,6 +136,20 @@ class BoardcomputerHardwareSettingsMenu :
makeComponent<MenuItem, StaticText<TEXT_SETGASMAX>, SwitchScreenAction<GasMaxChangeScreen>>,
makeComponent<MenuItem, StaticText<TEXT_SETBREMSMIN>, SwitchScreenAction<BremsMinChangeScreen>>,
makeComponent<MenuItem, StaticText<TEXT_SETBREMSMAX>, SwitchScreenAction<BremsMaxChangeScreen>>,
#ifdef FEATURE_GAMETRAK
makeComponent<MenuItem, StaticText<nullptr>, DummyAction>,
makeComponent<MenuItem, GametrakXText, DisabledColor, StaticFont<2>, DummyAction>,
makeComponent<MenuItem, GametrakYText, DisabledColor, StaticFont<2>, DummyAction>,
makeComponent<MenuItem, GametrakDistText, DisabledColor, StaticFont<2>, DummyAction>,
makeComponent<MenuItem, StaticText<TEXT_GAMETRAKCALIBRATE>, SwitchScreenAction<GametrakCalibrateDisplay>>,
makeComponent<MenuItem, StaticText<TEXT_SETGAMETRAKXMIN>, SwitchScreenAction<GametrakXMinChangeScreen>>,
makeComponent<MenuItem, StaticText<TEXT_SETGAMETRAKXMAX>, SwitchScreenAction<GametrakXMaxChangeScreen>>,
makeComponent<MenuItem, StaticText<TEXT_SETGAMETRAKYMIN>, SwitchScreenAction<GametrakYMinChangeScreen>>,
makeComponent<MenuItem, StaticText<TEXT_SETGAMETRAKYMAX>, SwitchScreenAction<GametrakYMaxChangeScreen>>,
makeComponent<MenuItem, StaticText<TEXT_SETGAMETRAKDISTMIN>, SwitchScreenAction<GametrakDistMinChangeScreen>>,
makeComponent<MenuItem, StaticText<TEXT_SETGAMETRAKDISTMAX>, SwitchScreenAction<GametrakDistMaxChangeScreen>>,
#endif
makeComponent<MenuItem, StaticText<nullptr>, DummyAction>,
makeComponent<MenuItem, StaticText<TEXT_SWAPSCREENBYTES>, ToggleBoolAction, CheckboxIcon, SwapScreenBytesAccessor>,
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&icons::back>>
>

View File

@@ -0,0 +1,26 @@
#pragma once
#include "menudisplay.h"
#include "staticmenudefinition.h"
#include "utils.h"
#include "menuitem.h"
#include "actions/switchscreenaction.h"
#include "icons/back.h"
#include "texts.h"
namespace {
class ModesSettingsMenu;
}
namespace {
#ifdef FEATURE_GAMETRAK
class GametrakModeSettingsMenu :
public MenuDisplay,
public StaticText<TEXT_GAMETRAKMODESETTINGS>,
public BackActionInterface<SwitchScreenAction<ModesSettingsMenu>>,
public StaticMenuDefinition<
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<ModesSettingsMenu>, StaticMenuItemIcon<&icons::back>>
>
{};
#endif
}

View File

@@ -11,6 +11,7 @@ namespace {
class DefaultModeSettingsMenu;
class TempomatModeSettingsMenu;
class LarsmModeSettingsMenu;
class GametrakModeSettingsMenu;
class SettingsMenu;
}
@@ -23,6 +24,9 @@ class ModesSettingsMenu :
makeComponent<MenuItem, StaticText<TEXT_DEFAULTMODESETTIGNS>, SwitchScreenAction<DefaultModeSettingsMenu>>,
makeComponent<MenuItem, StaticText<TEXT_TEMPOMATMODESETTINGS>, SwitchScreenAction<TempomatModeSettingsMenu>>,
makeComponent<MenuItem, StaticText<TEXT_LARSMMODESETTINGS>, SwitchScreenAction<LarsmModeSettingsMenu>>,
#ifdef FEATURE_GAMETRAK
makeComponent<MenuItem, StaticText<TEXT_GAMETRAKMODESETTINGS>, SwitchScreenAction<GametrakModeSettingsMenu>>,
#endif
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&icons::back>>
>
{};

View File

@@ -12,6 +12,7 @@
#include "modes/defaultmode.h"
#include "modes/tempomatmode.h"
#include "modes/larsmmode.h"
#include "modes/gametrakmode.h"
namespace {
class MainMenu;
@@ -27,6 +28,9 @@ public:
using SetDefaultModeAction = SetterAction<ModeInterface*, currentMode, DefaultMode*, &modes::defaultMode>;
using SetTempomatModeAction = SetterAction<ModeInterface*, currentMode, TempomatMode*, &modes::tempomatMode>;
using SetLarsmModeAction = SetterAction<ModeInterface*, currentMode, LarsmMode*, &modes::larsmMode>;
#ifdef FEATURE_GAMETRAK
using SetGametrakModeAction = SetterAction<ModeInterface*, currentMode, GametrakMode*, &modes::gametrakMode>;
#endif
class SelectModeMenu :
public MenuDisplay,
@@ -36,6 +40,9 @@ class SelectModeMenu :
makeComponent<MenuItem, StaticText<TEXT_DEFAULT>, MultiAction<SetDefaultModeAction, SwitchScreenAction<MainMenu>>>,
makeComponent<MenuItem, StaticText<TEXT_TEMPOMAT>, MultiAction<SetTempomatModeAction, SwitchScreenAction<MainMenu>>>,
makeComponent<MenuItem, StaticText<TEXT_LARSM>, MultiAction<SetLarsmModeAction, SwitchScreenAction<MainMenu>>>,
#ifdef FEATURE_GAMETRAK
makeComponent<MenuItem, StaticText<TEXT_GAMETRAK>, MultiAction<SetGametrakModeAction, SwitchScreenAction<MainMenu>>>,
#endif
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&icons::back>>
>
{

View File

@@ -18,6 +18,10 @@ using pin_t = int;
int16_t raw_gas, raw_brems;
float gas, brems;
#ifdef FEATURE_GAMETRAK
int16_t raw_gametrakX, raw_gametrakY, raw_gametrakDist;
float gametrakX, gametrakY, gametrakDist;
#endif
float avgSpeed, avgSpeedKmh, sumCurrent, sumAbsoluteCurrent;
Settings settings;

37
src/modes/gametrakmode.h Normal file
View File

@@ -0,0 +1,37 @@
#pragma once
#include "modeinterface.h"
#include "globals.h"
#include "utils.h"
#include "bobbycar-protocol/protocol.h"
namespace {
#ifdef FEATURE_GAMETRAK
class GametrakMode : public ModeInterface
{
public:
void update() override;
const char *displayName() const override { return "Gametrak"; }
};
namespace modes {
GametrakMode gametrakMode;
}
void GametrakMode::update()
{
for (MotorState &motor : motors())
{
motor.ctrlTyp = ControlType::FieldOrientedControl;
motor.ctrlMod = ControlMode::Speed;
motor.pwm = 0;
}
fixCommonParams();
sendCommands();
}
#endif
}

View File

@@ -73,6 +73,14 @@ constexpr Settings::BoardcomputerHardware defaultBoardcomputerHardware {
.gasMax = DEFAULT_GASMAX,
.bremsMin = DEFAULT_BREMSMIN,
.bremsMax = DEFAULT_BREMSMAX,
#ifdef FEATURE_GAMETRAK
.gametrakXMin = DEFAULT_GAMETRAKXMIN,
.gametrakXMax = DEFAULT_GAMETRAKXMAX,
.gametrakYMin = DEFAULT_GAMETRAKYMIN,
.gametrakYMax = DEFAULT_GAMETRAKYMAX,
.gametrakDistMin = DEFAULT_GAMETRAKDISTMIN,
.gametrakDistMax = DEFAULT_GAMETRAKDISTMAX,
#endif
.swapScreenBytes = DEFAULT_SWAPSCREENBYTES
};
@@ -83,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,
@@ -97,7 +105,7 @@ constexpr Settings::TempomatMode defaultTempomatMode {
constexpr Settings::LarsmMode defaultLarsmMode {
.mode = LarsmModeMode::Mode4,
.iterations = 5
.iterations = 100
};
constexpr Settings defaultSettings{

View File

@@ -12,6 +12,7 @@
#include "displays/menus/dynamicdebugmenu.h"
#include "displays/menus/enablemenu.h"
#include "displays/menus/feedbackdebugmenu.h"
#include "displays/menus/gametrakmodesettingsmenu.h"
#include "displays/menus/genericwifisettingsmenu.h"
#include "displays/menus/graphsmenu.h"
#include "displays/menus/controllerhardwaresettingsmenu.h"
@@ -34,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"
@@ -69,6 +71,9 @@ union X {
EnableMenu enableMenu;
FrontFeedbackDebugMenu frontFeedbackDebugMenu;
BackFeedbackDebugMenu backFeedbackDebugMenu;
#ifdef FEATURE_GAMETRAK
GametrakModeSettingsMenu gametrakModeSettingsMenu;
#endif
GenericWifiSettingsMenu genericWifiSettingsMenu;
GraphsMenu graphsMenu;
InvertMenu invertMenu;
@@ -99,6 +104,9 @@ union X {
CalibrateDisplay calibrateDisplay;
DualGraphDisplay dualGraphDisplay;
GameOfLifeDisplay gameOfLifeDisplay;
#ifdef FEATURE_GAMETRAK
GametrakCalibrateDisplay gametrakCalibrateDisplay;
#endif
Lockscreen lockScreen;
MetersDisplay metersDisplay;
PingPongDisplay pingPongDisplay;
@@ -152,6 +160,14 @@ union X {
GasMaxChangeScreen changeGasMax;
BremsMinChangeScreen changeBremsMin;
BremsMaxChangeScreen changeBremsMax;
#ifdef FEATURE_GAMETRAK
GametrakXMinChangeScreen changeGametrakXMin;
GametrakXMaxChangeScreen changeGametrakXMax;
GametrakYMinChangeScreen changeGametrakYMin;
GametrakYMaxChangeScreen changeGametrakYMax;
GametrakDistMinChangeScreen changeGametrakDistMin;
GametrakDistMaxChangeScreen changeGametrakDistMax;
#endif
WifiModeChangeScreen wifiModeChangeScreen;
WifiTxPowerChangeScreen wifiTxPowerChangeScreen;
@@ -192,6 +208,9 @@ template<> decltype(displays.dynamicDebugMenu) &
template<> decltype(displays.enableMenu) &getRefByType<decltype(displays.enableMenu)>() { return displays.enableMenu; }
template<> decltype(displays.frontFeedbackDebugMenu) &getRefByType<decltype(displays.frontFeedbackDebugMenu)>() { return displays.frontFeedbackDebugMenu; }
template<> decltype(displays.backFeedbackDebugMenu) &getRefByType<decltype(displays.backFeedbackDebugMenu)>() { return displays.backFeedbackDebugMenu; }
#ifdef FEATURE_GAMETRAK
template<> decltype(displays.gametrakModeSettingsMenu) &getRefByType<decltype(displays.gametrakModeSettingsMenu)>() { return displays.gametrakModeSettingsMenu; }
#endif
template<> decltype(displays.genericWifiSettingsMenu) &getRefByType<decltype(displays.genericWifiSettingsMenu)>() { return displays.genericWifiSettingsMenu; }
template<> decltype(displays.graphsMenu) &getRefByType<decltype(displays.graphsMenu)>() { return displays.graphsMenu; }
template<> decltype(displays.invertMenu) &getRefByType<decltype(displays.invertMenu)>() { return displays.invertMenu; }
@@ -221,6 +240,9 @@ template<> decltype(displays.bmsDisplay) &
template<> decltype(displays.calibrateDisplay) &getRefByType<decltype(displays.calibrateDisplay)>() { return displays.calibrateDisplay; }
template<> decltype(displays.dualGraphDisplay) &getRefByType<decltype(displays.dualGraphDisplay)>() { return displays.dualGraphDisplay; }
template<> decltype(displays.gameOfLifeDisplay) &getRefByType<decltype(displays.gameOfLifeDisplay)>() { return displays.gameOfLifeDisplay; }
#ifdef FEATURE_GAMETRAK
template<> decltype(displays.gametrakCalibrateDisplay) &getRefByType<decltype(displays.gametrakCalibrateDisplay)>() { return displays.gametrakCalibrateDisplay; }
#endif
template<> decltype(displays.lockScreen) &getRefByType<decltype(displays.lockScreen)>() { return displays.lockScreen; }
template<> decltype(displays.metersDisplay) &getRefByType<decltype(displays.metersDisplay)>() { return displays.metersDisplay; }
template<> decltype(displays.pingPongDisplay) &getRefByType<decltype(displays.pingPongDisplay)>() { return displays.pingPongDisplay; }
@@ -274,6 +296,14 @@ template<> decltype(displays.changeGasMin) &
template<> decltype(displays.changeGasMax) &getRefByType<decltype(displays.changeGasMax)>() { return displays.changeGasMax; }
template<> decltype(displays.changeBremsMin) &getRefByType<decltype(displays.changeBremsMin)>() { return displays.changeBremsMin; }
template<> decltype(displays.changeBremsMax) &getRefByType<decltype(displays.changeBremsMax)>() { return displays.changeBremsMax; }
#ifdef FEATURE_GAMETRAK
template<> decltype(displays.changeGametrakXMin) &getRefByType<decltype(displays.changeGametrakXMin)>() { return displays.changeGametrakXMin; }
template<> decltype(displays.changeGametrakXMax) &getRefByType<decltype(displays.changeGametrakXMax)>() { return displays.changeGametrakXMax; }
template<> decltype(displays.changeGametrakYMin) &getRefByType<decltype(displays.changeGametrakYMin)>() { return displays.changeGametrakYMin; }
template<> decltype(displays.changeGametrakYMax) &getRefByType<decltype(displays.changeGametrakYMax)>() { return displays.changeGametrakYMax; }
template<> decltype(displays.changeGametrakDistMin) &getRefByType<decltype(displays.changeGametrakDistMin)>() { return displays.changeGametrakDistMin; }
template<> decltype(displays.changeGametrakDistMax) &getRefByType<decltype(displays.changeGametrakDistMax)>() { return displays.changeGametrakDistMax; }
#endif
template<> decltype(displays.wifiModeChangeScreen) &getRefByType<decltype(displays.wifiModeChangeScreen)>() { return displays.wifiModeChangeScreen; }
template<> decltype(displays.wifiTxPowerChangeScreen) &getRefByType<decltype(displays.wifiTxPowerChangeScreen)>() { return displays.wifiTxPowerChangeScreen; }

View File

@@ -38,6 +38,9 @@ struct Settings
struct BoardcomputerHardware {
int16_t sampleCount;
int16_t gasMin, gasMax, bremsMin, bremsMax;
#ifdef FEATURE_GAMETRAK
int16_t gametrakXMin, gametrakXMax, gametrakYMin, gametrakYMax, gametrakDistMin, gametrakDistMax;
#endif
bool swapScreenBytes;
} boardcomputerHardware;
@@ -105,6 +108,14 @@ void Settings::executeForEverySetting(T &&callable)
callable("gasMax", boardcomputerHardware.gasMax);
callable("bremsMin", boardcomputerHardware.bremsMin);
callable("bremsMax", boardcomputerHardware.bremsMax);
#ifdef FEATURE_GAMETRAK
callable("gametrakXMin", boardcomputerHardware.gametrakXMin);
callable("gametrakXMax", boardcomputerHardware.gametrakXMax);
callable("gametrakYMin", boardcomputerHardware.gametrakYMin);
callable("gametrakYMax", boardcomputerHardware.gametrakYMax);
callable("gametrakDistMin", boardcomputerHardware.gametrakDistMin);
callable("gametrakDistMax", boardcomputerHardware.gametrakDistMax);
#endif
callable("swapScreenBytes", boardcomputerHardware.swapScreenBytes);
callable("default.ctrlTyp", defaultMode.ctrlTyp);

View File

@@ -59,6 +59,14 @@ struct GasMinAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRe
struct GasMaxAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.boardcomputerHardware.gasMax; } };
struct BremsMinAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.boardcomputerHardware.bremsMin; } };
struct BremsMaxAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.boardcomputerHardware.bremsMax; } };
#ifdef FEATURE_GAMETRAK
struct GametrakXMinAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.boardcomputerHardware.gametrakXMin; } };
struct GametrakXMaxAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.boardcomputerHardware.gametrakXMax; } };
struct GametrakYMinAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.boardcomputerHardware.gametrakYMin; } };
struct GametrakYMaxAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.boardcomputerHardware.gametrakYMax; } };
struct GametrakDistMinAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.boardcomputerHardware.gametrakDistMin; } };
struct GametrakDistMaxAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.boardcomputerHardware.gametrakDistMax; } };
#endif
struct SwapScreenBytesAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.boardcomputerHardware.swapScreenBytes; } };
struct DefaultModeCtrlTypAccessor : public RefAccessorSaveSettings<ControlType> { ControlType &getRef() const override { return settings.defaultMode.ctrlTyp; } };

View File

@@ -157,6 +157,9 @@ constexpr char TEXT_ENABLEBACKLEFT[] = "Enable back left";
constexpr char TEXT_ENABLEBACKRIGHT[] = "Enable back right";
//constexpr char TEXT_BACK[] = "Back";
//GametrakModeSettingsMenu
constexpr char TEXT_GAMETRAKMODESETTINGS[] = "Gametrak mode settings";
//GenericWifiSettingsMenu
constexpr char TEXT_GENERICWIFISETTINGS[] = "Generic WiFi settings";
constexpr char TEXT_WIFICHANGEMODE[] = "Change mode";
@@ -202,6 +205,7 @@ constexpr char TEXT_LARSMMODECHANGEITERATIONS[] = "Change iterations";
constexpr char TEXT_DEFAULTMODESETTIGNS[] = "Default mode settings";
constexpr char TEXT_TEMPOMATMODESETTINGS[] = "Tempomat mode settings";
//constexpr char TEXT_LARSMMODESETTINGS[] = "Larsm mode settings";
//constexpr char TEXT_GAMETRAKMODESETTINGS[] = "Gametrak mode settings";
//constexpr char TEXT_BACK[] = "Back";
//TempomatModeSettingsMenu
@@ -223,6 +227,13 @@ 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";
constexpr char TEXT_SETGAMETRAKYMAX[] = "Set gametrakYMax";
constexpr char TEXT_SETGAMETRAKDISTMIN[] = "Set gametrakDistMin";
constexpr char TEXT_SETGAMETRAKDISTMAX[] = "Set gametrakDistMax";
constexpr char TEXT_SWAPSCREENBYTES[] = "Swap screen bytes";
//constexpr char TEXT_BACK[] = "Back";
@@ -246,7 +257,7 @@ constexpr char TEXT_RACE[] = "Race";
constexpr char TEXT_DEFAULT[] = "Default";
constexpr char TEXT_TEMPOMAT[] = "Tempomat";
constexpr char TEXT_LARSM[] = "Larsm";
constexpr char TEXT_BLUETOOTH[] = "Bluetooth";
constexpr char TEXT_GAMETRAK[] = "Gametrak";
//constexpr char TEXT_BACK[] = "Back";
//ChangeValueDisplay<bool>

View File

@@ -315,5 +315,16 @@ void readPotis()
raw_brems = sampleMultipleTimes(PINS_BREMS);
brems = scaleBetween<float>(raw_brems, settings.boardcomputerHardware.bremsMin, settings.boardcomputerHardware.bremsMax, 0., 1000.);
#ifdef FEATURE_GAMETRAK
raw_gametrakX = sampleMultipleTimes(PINS_GAMETRAKX);
gametrakX = scaleBetween<float>(raw_gametrakX, settings.boardcomputerHardware.gametrakXMin, settings.boardcomputerHardware.gametrakXMax, 0., 1000.);
raw_gametrakY = sampleMultipleTimes(PINS_GAMETRAKY);
gametrakY = scaleBetween<float>(raw_gametrakY, settings.boardcomputerHardware.gametrakYMin, settings.boardcomputerHardware.gametrakYMax, 0., 1000.);
raw_gametrakDist = sampleMultipleTimes(PINS_GAMETRAKDIST);
gametrakDist = scaleBetween<float>(raw_gametrakDist, settings.boardcomputerHardware.gametrakDistMin, settings.boardcomputerHardware.gametrakDistMax, 0., 1000.);
#endif
}
}