tempomat improvements
This commit is contained in:
Submodule components/espwifistack updated: 581b478de0...79e5736649
@ -15,7 +15,6 @@ set(headers
|
||||
actions/bmsturnoffdischargeaction.h
|
||||
actions/bmsturnonchargeaction.h
|
||||
actions/bmsturnondischargeaction.h
|
||||
actions/defaultmodeapplycurrspeedaction.h
|
||||
actions/dummyaction.h
|
||||
actions/erasenvsaction.h
|
||||
actions/loadsettingsaction.h
|
||||
@ -25,6 +24,7 @@ set(headers
|
||||
actions/savesettingsaction.h
|
||||
actions/setvalueaction.h
|
||||
actions/switchscreenaction.h
|
||||
actions/tempomatmodeapplycurrentpeedaction.h
|
||||
actions/toggleboolaction.h
|
||||
actions/wifidisconnectaction.h
|
||||
actions/wifienableipv6action.h
|
||||
|
@ -3,7 +3,7 @@
|
||||
// local includes
|
||||
#include "accessorinterface.h"
|
||||
#include "globals.h"
|
||||
#include "modes/defaultmode.h"
|
||||
#include "modes/tempomatmode.h"
|
||||
|
||||
namespace {
|
||||
|
||||
@ -11,7 +11,6 @@ struct AvgSpeedAccessor : public RefAccessor<float> { float &getRef() const over
|
||||
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; } };
|
||||
struct TempomatModeCruiseMotTgtAccessor : public RefAccessor<int16_t> { int16_t &getRef() const override { return modes::tempomatMode.nCruiseMotTgt; } };
|
||||
|
||||
} // namespace
|
||||
|
@ -3,15 +3,15 @@
|
||||
// local includes
|
||||
#include "actioninterface.h"
|
||||
#include "globals.h"
|
||||
#include "modes/defaultmode.h"
|
||||
#include "modes/tempomatmode.h"
|
||||
|
||||
namespace {
|
||||
class DefaultModeApplyCurrentSpeedAction : public virtual ActionInterface
|
||||
class TempomatModeApplyCurrentSpeedAction : public virtual ActionInterface
|
||||
{
|
||||
public:
|
||||
void triggered() override
|
||||
{
|
||||
modes::defaultMode.nCruiseMotTgt = avgSpeed;
|
||||
modes::tempomatMode.nCruiseMotTgt = avgSpeed;
|
||||
}
|
||||
};
|
||||
} // namespace
|
@ -11,8 +11,6 @@
|
||||
#include "icons/back.h"
|
||||
#include "texts.h"
|
||||
#include "accessors/settingsaccessors.h"
|
||||
#include "accessors/globalaccessors.h"
|
||||
#include "actions/defaultmodeapplycurrspeedaction.h"
|
||||
|
||||
// forward declares
|
||||
namespace {
|
||||
@ -85,14 +83,6 @@ using DefaultModeBrems2WertChangeDisplay = makeComponent<
|
||||
SwitchScreenAction<DefaultModeSettingsMenu>
|
||||
>;
|
||||
|
||||
using DefaultModeCruiseMotTgtChangeDisplay = makeComponent<
|
||||
ChangeValueDisplay<int16_t>,
|
||||
StaticText<TEXT_NCRUISEMOTTGT>,
|
||||
DefaultModenCruiseMotTgtAccessor,
|
||||
BackActionInterface<SwitchScreenAction<DefaultModeSettingsMenu>>,
|
||||
SwitchScreenAction<DefaultModeSettingsMenu>
|
||||
>;
|
||||
|
||||
class DefaultModeSettingsMenu :
|
||||
public MenuDisplay,
|
||||
public StaticText<TEXT_DEFAULTMODESETTIGNS>,
|
||||
@ -102,9 +92,6 @@ public:
|
||||
DefaultModeSettingsMenu()
|
||||
{
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_MODELMODE>, SwitchScreenAction<DefaultModeModelModeChangeDisplay>>>();
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CRUISECTRLENA>, ToggleBoolAction, CheckboxIcon, DefaultModeCruiseCtrlEnaAccessor>>();
|
||||
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_NCRUISEMOTTGT, DefaultModenCruiseMotTgtAccessor>, SwitchScreenAction<DefaultModeCruiseMotTgtChangeDisplay>>>();
|
||||
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_APPLYCURRSPEED, AvgSpeedAccessor>, DefaultModeApplyCurrentSpeedAction>>();
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SQUAREGAS>, ToggleBoolAction, CheckboxIcon, DefaultModeSquareGasAccessor>>();
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SQUAREBREMS>, ToggleBoolAction, CheckboxIcon, DefaultModeSquareBremsAccessor>>();
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ENABLESMOOTHING>, ToggleBoolAction, CheckboxIcon, DefaultModeEnableSmoothingAccessor>>();
|
||||
|
@ -44,7 +44,7 @@ public:
|
||||
SelectModeMenu()
|
||||
{
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_DEFAULT>, MultiAction<SetDefaultModeAction, SwitchScreenAction<MainMenu>>>>();
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_TEMPOMAT>, MultiAction<SetTempomatModeAction, SwitchScreenAction<MainMenu>>>>();
|
||||
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_TEMPOMAT, AvgSpeedAccessor>, MultiAction<SetTempomatModeAction, SwitchScreenAction<MainMenu>>>>();
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LARSM>, MultiAction<SetLarsmModeAction, SwitchScreenAction<MainMenu>>>>();
|
||||
#ifdef FEATURE_GAMETRAK
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_GAMETRAK>, MultiAction<SetGametrakModeAction, SwitchScreenAction<MainMenu>>>>();
|
||||
|
@ -9,6 +9,8 @@
|
||||
#include "icons/back.h"
|
||||
#include "texts.h"
|
||||
#include "accessors/settingsaccessors.h"
|
||||
#include "accessors/globalaccessors.h"
|
||||
#include "actions/tempomatmodeapplycurrentpeedaction.h"
|
||||
|
||||
// forward declares
|
||||
namespace {
|
||||
@ -17,6 +19,14 @@ class ModesSettingsMenu;
|
||||
} // namespace
|
||||
|
||||
namespace {
|
||||
using DefaultModeCruiseMotTgtChangeDisplay = makeComponent<
|
||||
ChangeValueDisplay<int16_t>,
|
||||
StaticText<TEXT_NCRUISEMOTTGT>,
|
||||
TempomatModeCruiseMotTgtAccessor,
|
||||
BackActionInterface<SwitchScreenAction<DefaultModeSettingsMenu>>,
|
||||
SwitchScreenAction<DefaultModeSettingsMenu>
|
||||
>;
|
||||
|
||||
using TempomatModeModelModeChangeScreen = makeComponent<
|
||||
ChangeValueDisplay<UnifiedModelMode>,
|
||||
StaticText<TEXT_MODELMODE>,
|
||||
@ -33,6 +43,8 @@ class TempomatModeSettingsMenu :
|
||||
public:
|
||||
TempomatModeSettingsMenu()
|
||||
{
|
||||
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_APPLY, AvgSpeedAccessor>, TempomatModeApplyCurrentSpeedAction>>();
|
||||
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_NCRUISEMOTTGT, TempomatModeCruiseMotTgtAccessor>, SwitchScreenAction<TempomatModeModelModeChangeScreen>>>();
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_MODELMODE>, SwitchScreenAction<TempomatModeModelModeChangeScreen>>>();
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<ModesSettingsMenu>, StaticMenuItemIcon<&icons::back>>>();
|
||||
}
|
||||
|
@ -24,9 +24,6 @@ public:
|
||||
bool waitForGasLoslass{false};
|
||||
bool waitForBremsLoslass{false};
|
||||
|
||||
bool cruiseCtrlEna{false};
|
||||
int16_t nCruiseMotTgt{0};
|
||||
|
||||
private:
|
||||
espchrono::millis_clock::time_point lastTime{espchrono::millis_clock::now()};
|
||||
float lastPwm{0};
|
||||
@ -39,8 +36,6 @@ DefaultMode defaultMode;
|
||||
void DefaultMode::start()
|
||||
{
|
||||
Base::start();
|
||||
cruiseCtrlEna = false;
|
||||
nCruiseMotTgt = 0;
|
||||
}
|
||||
|
||||
void DefaultMode::update()
|
||||
@ -115,16 +110,16 @@ void DefaultMode::update()
|
||||
motor.ctrlTyp = pair.first;
|
||||
motor.ctrlMod = pair.second;
|
||||
motor.pwm = pwm / 100. * settings.defaultMode.frontPercentage;
|
||||
motor.cruiseCtrlEna = cruiseCtrlEna;
|
||||
motor.nCruiseMotTgt = nCruiseMotTgt;
|
||||
motor.cruiseCtrlEna = false;
|
||||
motor.nCruiseMotTgt = 0;
|
||||
}
|
||||
for (bobbycar::protocol::serial::MotorState &motor : motorsInController(controllers.back))
|
||||
{
|
||||
motor.ctrlTyp = pair.first;
|
||||
motor.ctrlMod = pair.second;
|
||||
motor.pwm = pwm / 100. * settings.defaultMode.backPercentage;
|
||||
motor.cruiseCtrlEna = cruiseCtrlEna;
|
||||
motor.nCruiseMotTgt = nCruiseMotTgt;
|
||||
motor.cruiseCtrlEna = false;
|
||||
motor.nCruiseMotTgt = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -20,7 +20,7 @@ public:
|
||||
|
||||
const char *displayName() const override { return "Tempomat"; }
|
||||
|
||||
int16_t pwm;
|
||||
int16_t nCruiseMotTgt;
|
||||
};
|
||||
|
||||
namespace modes {
|
||||
@ -30,7 +30,7 @@ TempomatMode tempomatMode;
|
||||
void TempomatMode::start()
|
||||
{
|
||||
Base::start();
|
||||
pwm = 0;
|
||||
nCruiseMotTgt = avgSpeed;
|
||||
}
|
||||
|
||||
void TempomatMode::update()
|
||||
@ -52,23 +52,23 @@ void TempomatMode::update()
|
||||
{
|
||||
if (*gas > 500. && *brems > 500.)
|
||||
{
|
||||
pwm = 0;
|
||||
nCruiseMotTgt = 0;
|
||||
modes::defaultMode.waitForGasLoslass = true;
|
||||
modes::defaultMode.waitForBremsLoslass = true;
|
||||
currentMode = &modes::defaultMode;
|
||||
return;
|
||||
}
|
||||
|
||||
pwm += (*gas/1000.) - (*brems/1000.);
|
||||
nCruiseMotTgt += (*gas/1000.) - (*brems/1000.);
|
||||
|
||||
for (bobbycar::protocol::serial::MotorState &motor : motors())
|
||||
{
|
||||
const auto pair = split(settings.tempomatMode.modelMode);
|
||||
motor.ctrlTyp = pair.first;
|
||||
motor.ctrlMod = pair.second;
|
||||
motor.pwm = pwm;
|
||||
motor.cruiseCtrlEna = false;
|
||||
motor.nCruiseMotTgt = 0;
|
||||
motor.pwm = 0;
|
||||
motor.cruiseCtrlEna = true;
|
||||
motor.nCruiseMotTgt = nCruiseMotTgt;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -147,9 +147,6 @@ constexpr char TEXT_DYNAMICMENU[] = "Dynamic menu";
|
||||
//DefaultModeSettingsMenu
|
||||
//constexpr char TEXT_DEFAULTMODESETTINGS[] = "Default mode settings";
|
||||
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_SQUAREBREMS[] = "Square brems";
|
||||
constexpr char TEXT_ENABLESMOOTHING[] = "Enable smoothing";
|
||||
@ -235,6 +232,8 @@ constexpr char TEXT_MOSFET2[] = "Mosfet2";
|
||||
|
||||
//TempomatModeSettingsMenu
|
||||
//constexpr char TEXT_TEMPOMATMODESETTINGS[] = "Tempomat mode settings";
|
||||
constexpr char TEXT_APPLY[] = "Apply";
|
||||
constexpr char TEXT_NCRUISEMOTTGT[] = "nCruiseMotTgt";
|
||||
//constexpr char TEXT_MODELMODE[] = "Model mode";
|
||||
//constexpr char TEXT_BACK[] = "Back";
|
||||
|
||||
|
12
main/utils.h
12
main/utils.h
@ -221,13 +221,25 @@ void fixCommonParams()
|
||||
controllers.back.command.right.enable = settings.controllerHardware.enableBackRight;
|
||||
|
||||
if (settings.controllerHardware.invertFrontLeft)
|
||||
{
|
||||
controllers.front.command.left.pwm = -controllers.front.command.left.pwm;
|
||||
controllers.front.command.left.nCruiseMotTgt = -controllers.front.command.left.nCruiseMotTgt;
|
||||
}
|
||||
if (settings.controllerHardware.invertFrontRight)
|
||||
{
|
||||
controllers.front.command.right.pwm = -controllers.front.command.right.pwm;
|
||||
controllers.front.command.right.nCruiseMotTgt = -controllers.front.command.right.nCruiseMotTgt;
|
||||
}
|
||||
if (settings.controllerHardware.invertBackLeft)
|
||||
{
|
||||
controllers.back.command.left.pwm = -controllers.back.command.left.pwm;
|
||||
controllers.back.command.left.nCruiseMotTgt = -controllers.back.command.left.nCruiseMotTgt;
|
||||
}
|
||||
if (settings.controllerHardware.invertBackRight)
|
||||
{
|
||||
controllers.back.command.right.pwm = -controllers.back.command.right.pwm;
|
||||
controllers.back.command.right.nCruiseMotTgt = -controllers.back.command.right.nCruiseMotTgt;
|
||||
}
|
||||
}
|
||||
|
||||
void sendCommands()
|
||||
|
@ -25,12 +25,12 @@ wifi_stack::config wifi_create_config()
|
||||
wifi_stack::wifi_entry { .ssid = {}, .key = {} }
|
||||
},
|
||||
.sta_ip = {
|
||||
.dhcpEnabled = true,
|
||||
.staticIp = {},
|
||||
.staticGateway = {},
|
||||
.staticSubnet = {},
|
||||
.staticDns1 = {},
|
||||
.staticDns2 = {}
|
||||
.staticIpEnabled = false,
|
||||
// .staticIp = {},
|
||||
// .staticGateway = {},
|
||||
// .staticSubnet = {},
|
||||
// .staticDns1 = {},
|
||||
// .staticDns2 = {}
|
||||
},
|
||||
.ap = {
|
||||
{
|
||||
|
Reference in New Issue
Block a user