From 5318554786a888a3ca9c51acfc8a8f180b87cd20 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Tue, 20 Jul 2021 20:44:14 +0200 Subject: [PATCH] tempomat improvements --- components/espwifistack | 2 +- main/CMakeLists.txt | 2 +- main/accessors/globalaccessors.h | 5 ++--- ...tion.h => tempomatmodeapplycurrentpeedaction.h} | 6 +++--- main/displays/menus/defaultmodesettingsmenu.h | 13 ------------- main/displays/menus/selectmodemenu.h | 2 +- main/displays/menus/tempomatmodesettingsmenu.h | 12 ++++++++++++ main/modes/defaultmode.h | 13 ++++--------- main/modes/tempomatmode.h | 14 +++++++------- main/texts.h | 5 ++--- main/utils.h | 12 ++++++++++++ main/wifi_bobbycar.h | 12 ++++++------ 12 files changed, 51 insertions(+), 47 deletions(-) rename main/actions/{defaultmodeapplycurrspeedaction.h => tempomatmodeapplycurrentpeedaction.h} (50%) diff --git a/components/espwifistack b/components/espwifistack index 581b478..79e5736 160000 --- a/components/espwifistack +++ b/components/espwifistack @@ -1 +1 @@ -Subproject commit 581b478de00ef8b2854d43c1ec9a6bb8480a577c +Subproject commit 79e5736649a20f1a0e637efce8f96420df77e0cb diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 764b930..55ec31b 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -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 diff --git a/main/accessors/globalaccessors.h b/main/accessors/globalaccessors.h index 5d2fb29..050dfed 100644 --- a/main/accessors/globalaccessors.h +++ b/main/accessors/globalaccessors.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 &getRef() const over struct AvgSpeedKmhAccessor : public RefAccessor { float &getRef() const override { return avgSpeedKmh; } }; struct SumCurrentAccessor : public RefAccessor { float &getRef() const override { return sumCurrent; } }; -struct DefaultModeCruiseCtrlEnaAccessor : public RefAccessor { bool &getRef() const override { return modes::defaultMode.cruiseCtrlEna; } }; -struct DefaultModenCruiseMotTgtAccessor : public RefAccessor { int16_t &getRef() const override { return modes::defaultMode.nCruiseMotTgt; } }; +struct TempomatModeCruiseMotTgtAccessor : public RefAccessor { int16_t &getRef() const override { return modes::tempomatMode.nCruiseMotTgt; } }; } // namespace diff --git a/main/actions/defaultmodeapplycurrspeedaction.h b/main/actions/tempomatmodeapplycurrentpeedaction.h similarity index 50% rename from main/actions/defaultmodeapplycurrspeedaction.h rename to main/actions/tempomatmodeapplycurrentpeedaction.h index fb7adb6..d801822 100644 --- a/main/actions/defaultmodeapplycurrspeedaction.h +++ b/main/actions/tempomatmodeapplycurrentpeedaction.h @@ -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 diff --git a/main/displays/menus/defaultmodesettingsmenu.h b/main/displays/menus/defaultmodesettingsmenu.h index 9b17b78..51861bf 100644 --- a/main/displays/menus/defaultmodesettingsmenu.h +++ b/main/displays/menus/defaultmodesettingsmenu.h @@ -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 >; -using DefaultModeCruiseMotTgtChangeDisplay = makeComponent< - ChangeValueDisplay, - StaticText, - DefaultModenCruiseMotTgtAccessor, - BackActionInterface>, - SwitchScreenAction ->; - class DefaultModeSettingsMenu : public MenuDisplay, public StaticText, @@ -102,9 +92,6 @@ public: DefaultModeSettingsMenu() { constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, ToggleBoolAction, CheckboxIcon, DefaultModeCruiseCtrlEnaAccessor>>(); - constructMenuItem, SwitchScreenAction>>(); - constructMenuItem, DefaultModeApplyCurrentSpeedAction>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, DefaultModeSquareGasAccessor>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, DefaultModeSquareBremsAccessor>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, DefaultModeEnableSmoothingAccessor>>(); diff --git a/main/displays/menus/selectmodemenu.h b/main/displays/menus/selectmodemenu.h index 0330580..a98b5e6 100644 --- a/main/displays/menus/selectmodemenu.h +++ b/main/displays/menus/selectmodemenu.h @@ -44,7 +44,7 @@ public: SelectModeMenu() { constructMenuItem, MultiAction>>>(); - constructMenuItem, MultiAction>>>(); + constructMenuItem, MultiAction>>>(); constructMenuItem, MultiAction>>>(); #ifdef FEATURE_GAMETRAK constructMenuItem, MultiAction>>>(); diff --git a/main/displays/menus/tempomatmodesettingsmenu.h b/main/displays/menus/tempomatmodesettingsmenu.h index eda226d..b33ef24 100644 --- a/main/displays/menus/tempomatmodesettingsmenu.h +++ b/main/displays/menus/tempomatmodesettingsmenu.h @@ -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, + StaticText, + TempomatModeCruiseMotTgtAccessor, + BackActionInterface>, + SwitchScreenAction +>; + using TempomatModeModelModeChangeScreen = makeComponent< ChangeValueDisplay, StaticText, @@ -33,6 +43,8 @@ class TempomatModeSettingsMenu : public: TempomatModeSettingsMenu() { + constructMenuItem, TempomatModeApplyCurrentSpeedAction>>(); + constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); } diff --git a/main/modes/defaultmode.h b/main/modes/defaultmode.h index b18e1d1..1b6a922 100644 --- a/main/modes/defaultmode.h +++ b/main/modes/defaultmode.h @@ -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; } } diff --git a/main/modes/tempomatmode.h b/main/modes/tempomatmode.h index 615a85c..cdc1147 100644 --- a/main/modes/tempomatmode.h +++ b/main/modes/tempomatmode.h @@ -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; } } diff --git a/main/texts.h b/main/texts.h index ece265e..aea5805 100644 --- a/main/texts.h +++ b/main/texts.h @@ -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"; diff --git a/main/utils.h b/main/utils.h index 309e89f..1e9f36c 100644 --- a/main/utils.h +++ b/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() diff --git a/main/wifi_bobbycar.h b/main/wifi_bobbycar.h index f61a7a0..e4b8cfe 100644 --- a/main/wifi_bobbycar.h +++ b/main/wifi_bobbycar.h @@ -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 = { {