DefaultMode tempomat preperations

This commit is contained in:
2021-07-20 15:58:38 +02:00
parent 589f188b15
commit 455f98a4a0
27 changed files with 161 additions and 61 deletions

View File

@ -1,5 +1,8 @@
set(headers set(headers
accessorinterface.h accessorinterface.h
accessors/globalaccessors.h
accessors/settingsaccessors.h
accessors/wifiaccessors.h
actioninterface.h actioninterface.h
actions/backproxyaction.h actions/backproxyaction.h
actions/bluetoothbeginaction.h actions/bluetoothbeginaction.h
@ -12,6 +15,7 @@ set(headers
actions/bmsturnoffdischargeaction.h actions/bmsturnoffdischargeaction.h
actions/bmsturnonchargeaction.h actions/bmsturnonchargeaction.h
actions/bmsturnondischargeaction.h actions/bmsturnondischargeaction.h
actions/defaultmodeapplycurrspeedaction.h
actions/dummyaction.h actions/dummyaction.h
actions/erasenvsaction.h actions/erasenvsaction.h
actions/loadsettingsaction.h actions/loadsettingsaction.h
@ -136,7 +140,6 @@ set(headers
widgets/vumeter.h widgets/vumeter.h
widgets/graph.h widgets/graph.h
widgets/label.h widgets/label.h
wifiaccessors.h
esptexthelpers.h esptexthelpers.h
presets.h presets.h
bluetoothtexthelpers.h bluetoothtexthelpers.h
@ -159,7 +162,6 @@ set(headers
ota.h ota.h
serialhandler.h serialhandler.h
settings.h settings.h
settingsaccessors.h
settingspersister.h settingspersister.h
settingsutils.h settingsutils.h
statistics.h statistics.h

View File

@ -0,0 +1,17 @@
#pragma once
// local includes
#include "accessorinterface.h"
#include "globals.h"
#include "modes/defaultmode.h"
namespace {
struct AvgSpeedAccessor : public RefAccessor<float> { float &getRef() const override { return avgSpeed; } };
struct AvgSpeedKmhAccessor : public RefAccessor<float> { float &getRef() const override { return avgSpeedKmh; } };
struct SumCurrentAccessor : public RefAccessor<float> { float &getRef() const override { return sumCurrent; } };
struct DefaultModeCruiseCtrlEnaAccessor : public RefAccessor<bool> { bool &getRef() const override { return modes::defaultMode.cruiseCtrlEna; } };
struct DefaultModenCruiseMotTgtAccessor : public RefAccessor<int16_t> { int16_t &getRef() const override { return modes::defaultMode.nCruiseMotTgt; } };
} // namespace

View File

@ -0,0 +1,17 @@
#pragma once
// local includes
#include "actioninterface.h"
#include "globals.h"
#include "modes/defaultmode.h"
namespace {
class DefaultModeApplyCurrentSpeedAction : public virtual ActionInterface
{
public:
void triggered() override
{
modes::defaultMode.nCruiseMotTgt = avgSpeed;
}
};
} // namespace

View File

@ -14,7 +14,7 @@
#endif #endif
#include "actions/switchscreenaction.h" #include "actions/switchscreenaction.h"
#include "bluetoothtexthelpers.h" #include "bluetoothtexthelpers.h"
#include "settingsaccessors.h" #include "accessors/settingsaccessors.h"
#include "icons/back.h" #include "icons/back.h"
#include "texts.h" #include "texts.h"

View File

@ -10,7 +10,7 @@
#include "icons/back.h" #include "icons/back.h"
#include "checkboxicon.h" #include "checkboxicon.h"
#include "texts.h" #include "texts.h"
#include "settingsaccessors.h" #include "accessors/settingsaccessors.h"
// forward declares // forward declares
namespace { namespace {

View File

@ -11,7 +11,7 @@
#include "icons/back.h" #include "icons/back.h"
#include "texts.h" #include "texts.h"
#include "globals.h" #include "globals.h"
#include "settingsaccessors.h" #include "accessors/settingsaccessors.h"
// forward declares // forward declares
namespace { namespace {

View File

@ -12,7 +12,7 @@
#include "icons/back.h" #include "icons/back.h"
#include "texts.h" #include "texts.h"
#include "globals.h" #include "globals.h"
#include "settingsaccessors.h" #include "accessors/settingsaccessors.h"
// forward declares // forward declares
namespace { namespace {

View File

@ -10,7 +10,9 @@
#include "checkboxicon.h" #include "checkboxicon.h"
#include "icons/back.h" #include "icons/back.h"
#include "texts.h" #include "texts.h"
#include "settingsaccessors.h" #include "accessors/settingsaccessors.h"
#include "accessors/globalaccessors.h"
#include "actions/defaultmodeapplycurrspeedaction.h"
// forward declares // forward declares
namespace { namespace {
@ -21,68 +23,76 @@ class ModesSettingsMenu;
namespace { namespace {
using DefaultModeModelModeChangeDisplay = makeComponent< using DefaultModeModelModeChangeDisplay = makeComponent<
ChangeValueDisplay<UnifiedModelMode>, ChangeValueDisplay<UnifiedModelMode>,
StaticText<TEXT_SETMODELMODE>, StaticText<TEXT_MODELMODE>,
DefaultModeModelModeAccessor, DefaultModeModelModeAccessor,
BackActionInterface<SwitchScreenAction<DefaultModeSettingsMenu>>, BackActionInterface<SwitchScreenAction<DefaultModeSettingsMenu>>,
SwitchScreenAction<DefaultModeSettingsMenu> SwitchScreenAction<DefaultModeSettingsMenu>
>; >;
using DefaultModeSmoothingChangeDisplay = makeComponent< using DefaultModeSmoothingChangeDisplay = makeComponent<
ChangeValueDisplay<int16_t>, ChangeValueDisplay<int16_t>,
StaticText<TEXT_SETSMOOTHING>, StaticText<TEXT_SMOOTHINGVAL>,
DefaultModeSmoothingAccessor, DefaultModeSmoothingAccessor,
BackActionInterface<SwitchScreenAction<DefaultModeSettingsMenu>>, BackActionInterface<SwitchScreenAction<DefaultModeSettingsMenu>>,
SwitchScreenAction<DefaultModeSettingsMenu> SwitchScreenAction<DefaultModeSettingsMenu>
>; >;
using DefaultModeFrontPercentageChangeDisplay = makeComponent< using DefaultModeFrontPercentageChangeDisplay = makeComponent<
ChangeValueDisplay<int16_t>, ChangeValueDisplay<int16_t>,
StaticText<TEXT_SETFRONTPERCENTAGE>, StaticText<TEXT_FRONTPERCENTAGE>,
DefaultModeFrontPercentageAccessor, DefaultModeFrontPercentageAccessor,
BackActionInterface<SwitchScreenAction<DefaultModeSettingsMenu>>, BackActionInterface<SwitchScreenAction<DefaultModeSettingsMenu>>,
SwitchScreenAction<DefaultModeSettingsMenu> SwitchScreenAction<DefaultModeSettingsMenu>
>; >;
using DefaultModeBackPercentageChangeDisplay = makeComponent< using DefaultModeBackPercentageChangeDisplay = makeComponent<
ChangeValueDisplay<int16_t>, ChangeValueDisplay<int16_t>,
StaticText<TEXT_SETBACKPERCENTAGE>, StaticText<TEXT_BACKPERCENTAGE>,
DefaultModeBackPercentageAccessor, DefaultModeBackPercentageAccessor,
BackActionInterface<SwitchScreenAction<DefaultModeSettingsMenu>>, BackActionInterface<SwitchScreenAction<DefaultModeSettingsMenu>>,
SwitchScreenAction<DefaultModeSettingsMenu> SwitchScreenAction<DefaultModeSettingsMenu>
>; >;
using DefaultModeAddSchwelleChangeDisplay = makeComponent< using DefaultModeAddSchwelleChangeDisplay = makeComponent<
ChangeValueDisplay<int16_t>, ChangeValueDisplay<int16_t>,
StaticText<TEXT_SETADDSCHWELLE>, StaticText<TEXT_ADDSCHWELLE>,
DefaultModeAddSchwelleAccessor, DefaultModeAddSchwelleAccessor,
BackActionInterface<SwitchScreenAction<DefaultModeSettingsMenu>>, BackActionInterface<SwitchScreenAction<DefaultModeSettingsMenu>>,
SwitchScreenAction<DefaultModeSettingsMenu> SwitchScreenAction<DefaultModeSettingsMenu>
>; >;
using DefaultModeGas1WertChangeDisplay = makeComponent< using DefaultModeGas1WertChangeDisplay = makeComponent<
ChangeValueDisplay<int16_t>, ChangeValueDisplay<int16_t>,
StaticText<TEXT_SETGAS1WERT>, StaticText<TEXT_ADDGASVAL>,
DefaultModeGas1WertAccessor, DefaultModeGas1WertAccessor,
BackActionInterface<SwitchScreenAction<DefaultModeSettingsMenu>>, BackActionInterface<SwitchScreenAction<DefaultModeSettingsMenu>>,
SwitchScreenAction<DefaultModeSettingsMenu> SwitchScreenAction<DefaultModeSettingsMenu>
>; >;
using DefaultModeGas2WertChangeDisplay = makeComponent< using DefaultModeGas2WertChangeDisplay = makeComponent<
ChangeValueDisplay<int16_t>, ChangeValueDisplay<int16_t>,
StaticText<TEXT_SETGAS2WERT>, StaticText<TEXT_SUBGASVAL>,
DefaultModeGas2WertAccessor, DefaultModeGas2WertAccessor,
BackActionInterface<SwitchScreenAction<DefaultModeSettingsMenu>>, BackActionInterface<SwitchScreenAction<DefaultModeSettingsMenu>>,
SwitchScreenAction<DefaultModeSettingsMenu> SwitchScreenAction<DefaultModeSettingsMenu>
>; >;
using DefaultModeBrems1WertChangeDisplay = makeComponent< using DefaultModeBrems1WertChangeDisplay = makeComponent<
ChangeValueDisplay<int16_t>, ChangeValueDisplay<int16_t>,
StaticText<TEXT_SETBREMS1WERT>, StaticText<TEXT_ADDBRAKEVAL>,
DefaultModeBrems1WertAccessor, DefaultModeBrems1WertAccessor,
BackActionInterface<SwitchScreenAction<DefaultModeSettingsMenu>>, BackActionInterface<SwitchScreenAction<DefaultModeSettingsMenu>>,
SwitchScreenAction<DefaultModeSettingsMenu> SwitchScreenAction<DefaultModeSettingsMenu>
>; >;
using DefaultModeBrems2WertChangeDisplay = makeComponent< using DefaultModeBrems2WertChangeDisplay = makeComponent<
ChangeValueDisplay<int16_t>, ChangeValueDisplay<int16_t>,
StaticText<TEXT_SETBREMS2WERT>, StaticText<TEXT_SUBBRAKEVAL>,
DefaultModeBrems2WertAccessor, DefaultModeBrems2WertAccessor,
BackActionInterface<SwitchScreenAction<DefaultModeSettingsMenu>>, BackActionInterface<SwitchScreenAction<DefaultModeSettingsMenu>>,
SwitchScreenAction<DefaultModeSettingsMenu> SwitchScreenAction<DefaultModeSettingsMenu>
>; >;
using DefaultModeCruiseMotTgtChangeDisplay = makeComponent<
ChangeValueDisplay<int16_t>,
StaticText<TEXT_NCRUISEMOTTGT>,
DefaultModenCruiseMotTgtAccessor,
BackActionInterface<SwitchScreenAction<DefaultModeSettingsMenu>>,
SwitchScreenAction<DefaultModeSettingsMenu>
>;
class DefaultModeSettingsMenu : class DefaultModeSettingsMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<TEXT_DEFAULTMODESETTIGNS>, public StaticText<TEXT_DEFAULTMODESETTIGNS>,
@ -91,19 +101,22 @@ class DefaultModeSettingsMenu :
public: public:
DefaultModeSettingsMenu() DefaultModeSettingsMenu()
{ {
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SETMODELMODE>, SwitchScreenAction<DefaultModeModelModeChangeDisplay>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_MODELMODE>, SwitchScreenAction<DefaultModeModelModeChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SQUAREGAS>, ToggleBoolAction, CheckboxIcon, DefaultModeSquareGasAccessor>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CRUISECTRLENA>, ToggleBoolAction, CheckboxIcon, DefaultModeCruiseCtrlEnaAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SQUAREBREMS>, ToggleBoolAction, CheckboxIcon, DefaultModeSquareBremsAccessor>>(); constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_NCRUISEMOTTGT, DefaultModenCruiseMotTgtAccessor>, SwitchScreenAction<DefaultModeCruiseMotTgtChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ENABLESMOOTHING>, ToggleBoolAction, CheckboxIcon, DefaultModeEnableSmoothingAccessor>>(); constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_APPLYCURRSPEED, AvgSpeedAccessor>, DefaultModeApplyCurrentSpeedAction>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SETSMOOTHING>, SwitchScreenAction<DefaultModeSmoothingChangeDisplay>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SQUAREGAS>, ToggleBoolAction, CheckboxIcon, DefaultModeSquareGasAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SETFRONTPERCENTAGE>, SwitchScreenAction<DefaultModeFrontPercentageChangeDisplay>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SQUAREBREMS>, ToggleBoolAction, CheckboxIcon, DefaultModeSquareBremsAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SETBACKPERCENTAGE>, SwitchScreenAction<DefaultModeBackPercentageChangeDisplay>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ENABLESMOOTHING>, ToggleBoolAction, CheckboxIcon, DefaultModeEnableSmoothingAccessor>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SETADDSCHWELLE>, SwitchScreenAction<DefaultModeAddSchwelleChangeDisplay>>>(); constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SMOOTHINGVAL, DefaultModeSmoothingAccessor>, SwitchScreenAction<DefaultModeSmoothingChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SETGAS1WERT>, SwitchScreenAction<DefaultModeGas1WertChangeDisplay>>>(); constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_FRONTPERCENTAGE, DefaultModeFrontPercentageAccessor>, SwitchScreenAction<DefaultModeFrontPercentageChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SETGAS2WERT>, SwitchScreenAction<DefaultModeGas2WertChangeDisplay>>>(); constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_BACKPERCENTAGE, DefaultModeBackPercentageAccessor>, SwitchScreenAction<DefaultModeBackPercentageChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SETBREMS1WERT>, SwitchScreenAction<DefaultModeBrems1WertChangeDisplay>>>(); constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_ADDSCHWELLE, DefaultModeAddSchwelleAccessor>, SwitchScreenAction<DefaultModeAddSchwelleChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SETBREMS2WERT>, SwitchScreenAction<DefaultModeBrems2WertChangeDisplay>>>(); constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SUBGASVAL, DefaultModeGas2WertAccessor>, SwitchScreenAction<DefaultModeGas2WertChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<ModesSettingsMenu>, StaticMenuItemIcon<&icons::back>>>(); constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SUBBRAKEVAL, DefaultModeBrems2WertAccessor>, SwitchScreenAction<DefaultModeBrems2WertChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_ADDGASVAL, DefaultModeGas1WertAccessor>, SwitchScreenAction<DefaultModeGas1WertChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_ADDBRAKEVAL, DefaultModeBrems1WertAccessor>, SwitchScreenAction<DefaultModeBrems1WertChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<ModesSettingsMenu>, StaticMenuItemIcon<&icons::back>>>();
} }
}; };
} // namespace } // namespace

View File

@ -9,7 +9,7 @@
#include "checkboxicon.h" #include "checkboxicon.h"
#include "icons/back.h" #include "icons/back.h"
#include "texts.h" #include "texts.h"
#include "settingsaccessors.h" #include "accessors/settingsaccessors.h"
// forward declares // forward declares
namespace { namespace {

View File

@ -10,7 +10,7 @@
#include "checkboxicon.h" #include "checkboxicon.h"
#include "icons/back.h" #include "icons/back.h"
#include "wifitexthelpers.h" #include "wifitexthelpers.h"
#include "wifiaccessors.h" #include "accessors/wifiaccessors.h"
#include "texts.h" #include "texts.h"
// forward declares // forward declares

View File

@ -9,7 +9,7 @@
#include "checkboxicon.h" #include "checkboxicon.h"
#include "icons/back.h" #include "icons/back.h"
#include "texts.h" #include "texts.h"
#include "settingsaccessors.h" #include "accessors/settingsaccessors.h"
// forward declares // forward declares
namespace { namespace {

View File

@ -8,7 +8,7 @@
#include "actions/switchscreenaction.h" #include "actions/switchscreenaction.h"
#include "icons/back.h" #include "icons/back.h"
#include "texts.h" #include "texts.h"
#include "settingsaccessors.h" #include "accessors/settingsaccessors.h"
// forward declares // forward declares
namespace { namespace {
@ -19,7 +19,7 @@ class ModesSettingsMenu;
namespace { namespace {
using LarsmModeModelModeChangeDisplay = makeComponent< using LarsmModeModelModeChangeDisplay = makeComponent<
ChangeValueDisplay<UnifiedModelMode>, ChangeValueDisplay<UnifiedModelMode>,
StaticText<TEXT_SETMODELMODE>, StaticText<TEXT_MODELMODE>,
LarsmModeModelModeAccessor, LarsmModeModelModeAccessor,
BackActionInterface<SwitchScreenAction<LarsmModeSettingsMenu>>, BackActionInterface<SwitchScreenAction<LarsmModeSettingsMenu>>,
SwitchScreenAction<LarsmModeSettingsMenu> SwitchScreenAction<LarsmModeSettingsMenu>
@ -47,7 +47,7 @@ class LarsmModeSettingsMenu :
public: public:
LarsmModeSettingsMenu() LarsmModeSettingsMenu()
{ {
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SETMODELMODE>, SwitchScreenAction<LarsmModeModelModeChangeDisplay>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_MODELMODE>, SwitchScreenAction<LarsmModeModelModeChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SETMODE>, SwitchScreenAction<LarsmModeModeChangeDisplay>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SETMODE>, SwitchScreenAction<LarsmModeModeChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SETITERATIONS>, SwitchScreenAction<LarsmModeIterationsChangeDisplay>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SETITERATIONS>, SwitchScreenAction<LarsmModeIterationsChangeDisplay>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<ModesSettingsMenu>, StaticMenuItemIcon<&icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<ModesSettingsMenu>, StaticMenuItemIcon<&icons::back>>>();

View File

@ -8,7 +8,7 @@
#include "actions/switchscreenaction.h" #include "actions/switchscreenaction.h"
#include "icons/back.h" #include "icons/back.h"
#include "texts.h" #include "texts.h"
#include "settingsaccessors.h" #include "accessors/settingsaccessors.h"
// forward declares // forward declares
namespace { namespace {
@ -17,12 +17,6 @@ class SettingsMenu;
} // namespace } // namespace
namespace { namespace {
template<const char *Tprefix, typename Taccessor>
struct TextWithValueHelper : public virtual TextInterface
{
std::string text() const override { return Tprefix + (' ' + std::to_string(Taccessor{}.getValue())); }
};
using IMotMaxChangeScreen = makeComponent< using IMotMaxChangeScreen = makeComponent<
ChangeValueDisplay<int16_t>, ChangeValueDisplay<int16_t>,
StaticText<TEXT_IMOTMAX>, StaticText<TEXT_IMOTMAX>,

View File

@ -16,7 +16,7 @@
#include "icons/back.h" #include "icons/back.h"
#include "texts.h" #include "texts.h"
#include "globals.h" #include "globals.h"
#include "settingsaccessors.h" #include "accessors/settingsaccessors.h"
// forward declares // forward declares
namespace { namespace {

View File

@ -13,7 +13,7 @@
#include "checkboxicon.h" #include "checkboxicon.h"
#include "icons/back.h" #include "icons/back.h"
#include "wifitexthelpers.h" #include "wifitexthelpers.h"
#include "wifiaccessors.h" #include "accessors/wifiaccessors.h"
#include "texts.h" #include "texts.h"
// forward declares // forward declares

View File

@ -8,7 +8,7 @@
#include "actions/switchscreenaction.h" #include "actions/switchscreenaction.h"
#include "icons/back.h" #include "icons/back.h"
#include "texts.h" #include "texts.h"
#include "settingsaccessors.h" #include "accessors/settingsaccessors.h"
// forward declares // forward declares
namespace { namespace {
@ -19,7 +19,7 @@ class ModesSettingsMenu;
namespace { namespace {
using TempomatModeModelModeChangeScreen = makeComponent< using TempomatModeModelModeChangeScreen = makeComponent<
ChangeValueDisplay<UnifiedModelMode>, ChangeValueDisplay<UnifiedModelMode>,
StaticText<TEXT_SETMODELMODE>, StaticText<TEXT_MODELMODE>,
TempomatModeModelModeAccessor, TempomatModeModelModeAccessor,
BackActionInterface<SwitchScreenAction<TempomatModeSettingsMenu>>, BackActionInterface<SwitchScreenAction<TempomatModeSettingsMenu>>,
SwitchScreenAction<TempomatModeSettingsMenu> SwitchScreenAction<TempomatModeSettingsMenu>
@ -33,8 +33,8 @@ class TempomatModeSettingsMenu :
public: public:
TempomatModeSettingsMenu() TempomatModeSettingsMenu()
{ {
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SETMODELMODE>, SwitchScreenAction<TempomatModeModelModeChangeScreen>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_MODELMODE>, SwitchScreenAction<TempomatModeModelModeChangeScreen>>>();
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<ModesSettingsMenu>, StaticMenuItemIcon<&icons::back>>>(); constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<ModesSettingsMenu>, StaticMenuItemIcon<&icons::back>>>();
} }
}; };
} // namespace } // namespace

View File

@ -7,7 +7,7 @@
#include "actions/switchscreenaction.h" #include "actions/switchscreenaction.h"
#include "icons/back.h" #include "icons/back.h"
#include "texts.h" #include "texts.h"
#include "settingsaccessors.h" #include "accessors/settingsaccessors.h"
// forward declares // forward declares
namespace { namespace {

View File

@ -10,7 +10,7 @@
#include "icons/scan.h" #include "icons/scan.h"
#include "icons/back.h" #include "icons/back.h"
#include "texts.h" #include "texts.h"
#include "settingsaccessors.h" #include "accessors/settingsaccessors.h"
// forward declares // forward declares
namespace { namespace {

View File

@ -13,7 +13,10 @@
namespace { namespace {
class DefaultMode : public ModeInterface class DefaultMode : public ModeInterface
{ {
using Base = ModeInterface;
public: public:
void start() override;
void update() override; void update() override;
const char *displayName() const override { return "Default"; } const char *displayName() const override { return "Default"; }
@ -21,6 +24,9 @@ public:
bool waitForGasLoslass{false}; bool waitForGasLoslass{false};
bool waitForBremsLoslass{false}; bool waitForBremsLoslass{false};
bool cruiseCtrlEna{false};
int16_t nCruiseMotTgt{0};
private: private:
espchrono::millis_clock::time_point lastTime{espchrono::millis_clock::now()}; espchrono::millis_clock::time_point lastTime{espchrono::millis_clock::now()};
float lastPwm{0}; float lastPwm{0};
@ -30,6 +36,13 @@ namespace modes {
DefaultMode defaultMode; DefaultMode defaultMode;
} }
void DefaultMode::start()
{
Base::start();
cruiseCtrlEna = false;
nCruiseMotTgt = 0;
}
void DefaultMode::update() void DefaultMode::update()
{ {
if (!gas || !brems) if (!gas || !brems)
@ -41,6 +54,8 @@ void DefaultMode::update()
motor.ctrlTyp = bobbycar::protocol::ControlType::FieldOrientedControl; motor.ctrlTyp = bobbycar::protocol::ControlType::FieldOrientedControl;
motor.ctrlMod = bobbycar::protocol::ControlMode::OpenMode; motor.ctrlMod = bobbycar::protocol::ControlMode::OpenMode;
motor.pwm = 0; motor.pwm = 0;
motor.cruiseCtrlEna = false;
motor.nCruiseMotTgt = 0;
} }
} }
else else
@ -100,12 +115,16 @@ void DefaultMode::update()
motor.ctrlTyp = pair.first; motor.ctrlTyp = pair.first;
motor.ctrlMod = pair.second; motor.ctrlMod = pair.second;
motor.pwm = pwm / 100. * settings.defaultMode.frontPercentage; motor.pwm = pwm / 100. * settings.defaultMode.frontPercentage;
motor.cruiseCtrlEna = cruiseCtrlEna;
motor.nCruiseMotTgt = nCruiseMotTgt;
} }
for (bobbycar::protocol::serial::MotorState &motor : motorsInController(controllers.back)) for (bobbycar::protocol::serial::MotorState &motor : motorsInController(controllers.back))
{ {
motor.ctrlTyp = pair.first; motor.ctrlTyp = pair.first;
motor.ctrlMod = pair.second; motor.ctrlMod = pair.second;
motor.pwm = pwm / 100. * settings.defaultMode.backPercentage; motor.pwm = pwm / 100. * settings.defaultMode.backPercentage;
motor.cruiseCtrlEna = cruiseCtrlEna;
motor.nCruiseMotTgt = nCruiseMotTgt;
} }
} }

View File

@ -20,6 +20,8 @@ namespace {
#ifdef FEATURE_GAMETRAK #ifdef FEATURE_GAMETRAK
class GametrakMode : public ModeInterface class GametrakMode : public ModeInterface
{ {
using Base = ModeInterface;
public: public:
void start() override; void start() override;
void update() override; void update() override;
@ -36,6 +38,7 @@ GametrakMode gametrakMode;
void GametrakMode::start() void GametrakMode::start()
{ {
Base::start();
m_flag = false; m_flag = false;
} }
@ -50,6 +53,8 @@ void GametrakMode::update()
motor.ctrlTyp = bobbycar::protocol::ControlType::FieldOrientedControl; motor.ctrlTyp = bobbycar::protocol::ControlType::FieldOrientedControl;
motor.ctrlMod = bobbycar::protocol::ControlMode::OpenMode; motor.ctrlMod = bobbycar::protocol::ControlMode::OpenMode;
motor.pwm = 0; motor.pwm = 0;
motor.cruiseCtrlEna = false;
motor.nCruiseMotTgt = 0;
} }
} }
else else
@ -84,6 +89,8 @@ void GametrakMode::update()
motor.ctrlTyp = bobbycar::protocol::ControlType::FieldOrientedControl; motor.ctrlTyp = bobbycar::protocol::ControlType::FieldOrientedControl;
motor.ctrlMod = bobbycar::protocol::ControlMode::Speed; motor.ctrlMod = bobbycar::protocol::ControlMode::Speed;
motor.pwm = pwm; motor.pwm = pwm;
motor.cruiseCtrlEna = false;
motor.nCruiseMotTgt = 0;
} }
} }

View File

@ -32,6 +32,8 @@ void IgnoreInputMode::update()
motor.ctrlTyp = m_ctrlTyp; motor.ctrlTyp = m_ctrlTyp;
motor.ctrlMod = m_ctrlMod; motor.ctrlMod = m_ctrlMod;
motor.pwm = m_pwm; motor.pwm = m_pwm;
motor.cruiseCtrlEna = false;
motor.nCruiseMotTgt = 0;
} }
fixCommonParams(); fixCommonParams();

View File

@ -9,6 +9,8 @@
namespace { namespace {
class LarsmMode : public ModeInterface class LarsmMode : public ModeInterface
{ {
using Base = ModeInterface;
public: public:
void start() override; void start() override;
void update() override; void update() override;
@ -28,6 +30,8 @@ LarsmMode larsmMode;
void LarsmMode::start() void LarsmMode::start()
{ {
Base::start();
adc1_filtered = 0.f; adc1_filtered = 0.f;
adc2_filtered = 0.f; adc2_filtered = 0.f;
speed = 0; speed = 0;
@ -45,6 +49,8 @@ void LarsmMode::update()
motor.ctrlTyp = bobbycar::protocol::ControlType::FieldOrientedControl; motor.ctrlTyp = bobbycar::protocol::ControlType::FieldOrientedControl;
motor.ctrlMod = bobbycar::protocol::ControlMode::OpenMode; motor.ctrlMod = bobbycar::protocol::ControlMode::OpenMode;
motor.pwm = 0; motor.pwm = 0;
motor.cruiseCtrlEna = false;
motor.nCruiseMotTgt = 0;
} }
} }
else else
@ -115,6 +121,8 @@ void LarsmMode::update()
motor.ctrlTyp = pair.first; motor.ctrlTyp = pair.first;
motor.ctrlMod = pair.second; motor.ctrlMod = pair.second;
motor.pwm = speed + weak; motor.pwm = speed + weak;
motor.cruiseCtrlEna = false;
motor.nCruiseMotTgt = 0;
} }
} }

View File

@ -12,6 +12,8 @@
namespace { namespace {
class TempomatMode : public ModeInterface class TempomatMode : public ModeInterface
{ {
using Base = ModeInterface;
public: public:
void start() override; void start() override;
void update() override; void update() override;
@ -27,6 +29,7 @@ TempomatMode tempomatMode;
void TempomatMode::start() void TempomatMode::start()
{ {
Base::start();
pwm = 0; pwm = 0;
} }
@ -41,6 +44,8 @@ void TempomatMode::update()
motor.ctrlTyp = bobbycar::protocol::ControlType::FieldOrientedControl; motor.ctrlTyp = bobbycar::protocol::ControlType::FieldOrientedControl;
motor.ctrlMod = bobbycar::protocol::ControlMode::OpenMode; motor.ctrlMod = bobbycar::protocol::ControlMode::OpenMode;
motor.pwm = 0; motor.pwm = 0;
motor.cruiseCtrlEna = false;
motor.nCruiseMotTgt = 0;
} }
} }
else else
@ -62,6 +67,8 @@ void TempomatMode::update()
motor.ctrlTyp = pair.first; motor.ctrlTyp = pair.first;
motor.ctrlMod = pair.second; motor.ctrlMod = pair.second;
motor.pwm = pwm; motor.pwm = pwm;
motor.cruiseCtrlEna = false;
motor.nCruiseMotTgt = 0;
} }
} }

View File

@ -1,7 +1,12 @@
#pragma once #pragma once
// system includes
#include <string> #include <string>
// 3rdparty lib includes
#include <fmt/core.h>
// local includes
#include "utils.h" #include "utils.h"
namespace { namespace {
@ -80,4 +85,10 @@ public:
return text; return text;
} }
}; };
template<const char *Tprefix, typename Taccessor>
struct TextWithValueHelper : public virtual TextInterface
{
std::string text() const override { return fmt::format("{} {}", Tprefix, Taccessor{}.getValue()); }
};
} }

View File

@ -146,18 +146,21 @@ constexpr char TEXT_DYNAMICMENU[] = "Dynamic menu";
//DefaultModeSettingsMenu //DefaultModeSettingsMenu
//constexpr char TEXT_DEFAULTMODESETTINGS[] = "Default mode settings"; //constexpr char TEXT_DEFAULTMODESETTINGS[] = "Default mode settings";
constexpr char TEXT_SETMODELMODE[] = "Set model mode"; constexpr char TEXT_MODELMODE[] = "Model mode";
constexpr char TEXT_CRUISECTRLENA[] = "Enable tempomat";
constexpr char TEXT_NCRUISEMOTTGT[] = "Tempomat";
constexpr char TEXT_APPLYCURRSPEED[] = "Apply";
constexpr char TEXT_SQUAREGAS[] = "Square gas"; constexpr char TEXT_SQUAREGAS[] = "Square gas";
constexpr char TEXT_SQUAREBREMS[] = "Square brems"; constexpr char TEXT_SQUAREBREMS[] = "Square brems";
constexpr char TEXT_ENABLESMOOTHING[] = "Enable smoothing"; constexpr char TEXT_ENABLESMOOTHING[] = "Enable smoothing";
constexpr char TEXT_SETSMOOTHING[] = "Set smoothing"; constexpr char TEXT_SMOOTHINGVAL[] = "Smoothing";
constexpr char TEXT_SETFRONTPERCENTAGE[] = "Set front percentage"; constexpr char TEXT_FRONTPERCENTAGE[] = "Front %";
constexpr char TEXT_SETBACKPERCENTAGE[] = "Set back percentage"; constexpr char TEXT_BACKPERCENTAGE[] = "Back %";
constexpr char TEXT_SETADDSCHWELLE[] = "Set add Schwelle"; constexpr char TEXT_ADDSCHWELLE[] = "Add/Sub Lim";
constexpr char TEXT_SETGAS1WERT[] = "Set Gas 1 Wert"; constexpr char TEXT_SUBGASVAL[] = "Add Gas";
constexpr char TEXT_SETGAS2WERT[] = "Set Gas 2 Wert"; constexpr char TEXT_SUBBRAKEVAL[] = "Add Brake";
constexpr char TEXT_SETBREMS1WERT[] = "Set Brems 1 Wert"; constexpr char TEXT_ADDGASVAL[] = "Sub Gas";
constexpr char TEXT_SETBREMS2WERT[] = "Set Brems 2 Wert"; constexpr char TEXT_ADDBRAKEVAL[] = "Sub Brake";
//constexpr char TEXT_BACK[] = "Back"; //constexpr char TEXT_BACK[] = "Back";
//DynamicDebugMenu //DynamicDebugMenu
@ -211,7 +214,7 @@ constexpr char TEXT_INVERTBACKRIGHT[] = "Invert back right";
//LarsmModeSettingsMenu //LarsmModeSettingsMenu
constexpr char TEXT_LARSMMODESETTINGS[] = "Larsm mode settings"; constexpr char TEXT_LARSMMODESETTINGS[] = "Larsm mode settings";
//constexpr char TEXT_SETMODELMODE[] = "Set model mode"; //constexpr char TEXT_MODELMODE[] = "Model mode";
constexpr char TEXT_SETMODE[] = "Set mode"; constexpr char TEXT_SETMODE[] = "Set mode";
constexpr char TEXT_SETITERATIONS[] = "Set iterations"; constexpr char TEXT_SETITERATIONS[] = "Set iterations";
//constexpr char TEXT_BACK[] = "Back"; //constexpr char TEXT_BACK[] = "Back";
@ -232,7 +235,7 @@ constexpr char TEXT_MOSFET2[] = "Mosfet2";
//TempomatModeSettingsMenu //TempomatModeSettingsMenu
//constexpr char TEXT_TEMPOMATMODESETTINGS[] = "Tempomat mode settings"; //constexpr char TEXT_TEMPOMATMODESETTINGS[] = "Tempomat mode settings";
//constexpr char TEXT_SETMODELMODE[] = "Set model mode"; //constexpr char TEXT_MODELMODE[] = "Model mode";
//constexpr char TEXT_BACK[] = "Back"; //constexpr char TEXT_BACK[] = "Back";
//WiFiSettingsMenu //WiFiSettingsMenu