diff --git a/main/accessors/settingsaccessors.h b/main/accessors/settingsaccessors.h index 46ad53a..0ccd754 100644 --- a/main/accessors/settingsaccessors.h +++ b/main/accessors/settingsaccessors.h @@ -126,6 +126,7 @@ struct CloudSendRateAccessor : public RefAccessorSaveSettings { int16_t #endif struct DefaultModeModelModeAccessor : public RefAccessorSaveSettings { UnifiedModelMode &getRef() const override { return settings.defaultMode.modelMode; } }; +struct DefaultModeHybridModelModeAccessor : public RefAccessorSaveSettings { UnifiedModelMode &getRef() const override { return settings.hybrid.hybridMode; } }; struct DefaultModeSquareGasAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.defaultMode.squareGas; } }; struct DefaultModeSquareBremsAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.defaultMode.squareBrems; } }; @@ -144,6 +145,10 @@ struct DefaultModeGas2WertAccessor : public RefAccessorSaveSettings { i struct DefaultModeBrems1WertAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.defaultMode.brems1_wert; } }; struct DefaultModeBrems2WertAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.defaultMode.brems2_wert; } }; +struct DefaultModeEnableHybridAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.hybrid.enable; } }; +struct DefaultModeHybridActivationLimitAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.hybrid.activationLimit; } }; +struct DefaultModeHybridDeactivationLimitAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.hybrid.deactivationLimit; } }; + struct TempomatModeModelModeAccessor : public RefAccessorSaveSettings { UnifiedModelMode &getRef() const override { return settings.tempomatMode.modelMode; } }; struct LarsmModeModelModeAccessor : public RefAccessorSaveSettings { UnifiedModelMode &getRef() const override { return settings.larsmMode.modelMode; } }; diff --git a/main/displays/menus/defaultmodesettingsmenu.h b/main/displays/menus/defaultmodesettingsmenu.h index 33162cb..36e6456 100644 --- a/main/displays/menus/defaultmodesettingsmenu.h +++ b/main/displays/menus/defaultmodesettingsmenu.h @@ -29,6 +29,13 @@ using DefaultModeModelModeChangeDisplay = makeComponent< BackActionInterface>, SwitchScreenAction >; +using DefaultModeHybridModelModeChangeDisplay = makeComponent< + ChangeValueDisplay, + StaticText, + DefaultModeHybridModelModeAccessor, + BackActionInterface>, + SwitchScreenAction +>; using DefaultModeSmoothingChangeDisplay = makeComponent< ChangeValueDisplay, StaticText, @@ -92,6 +99,20 @@ using DefaultModeBrems2WertChangeDisplay = makeComponent< BackActionInterface>, SwitchScreenAction >; +using DefaultModeHybridActivationLimitChangeDisplay = makeComponent< + ChangeValueDisplay, + StaticText, + DefaultModeHybridActivationLimitAccessor, + BackActionInterface>, + SwitchScreenAction +>; +using DefaultModeHybridDeactivationLimitChangeDisplay = makeComponent< + ChangeValueDisplay, + StaticText, + DefaultModeHybridDeactivationLimitAccessor, + BackActionInterface>, + SwitchScreenAction +>; class DefaultModeSettingsMenu : public MenuDisplay, @@ -102,12 +123,14 @@ public: DefaultModeSettingsMenu() { constructMenuItem, SwitchScreenAction>>(); + constructMenuItem, SwitchScreenAction>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, DefaultModeSquareGasAccessor>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, DefaultModeSquareBremsAccessor>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, DefaultModeEnableSmoothingUpAccessor>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, DefaultModeEnableSmoothingDownAccessor>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, DefaultModeEnableFieldWeakSmoothingUpAccessor>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, DefaultModeEnableFieldWeakSmoothingDownAccessor>>(); + constructMenuItem, ToggleBoolAction, CheckboxIcon, DefaultModeEnableHybridAccessor>>(); constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); @@ -117,6 +140,8 @@ public: constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction>>(); + constructMenuItem, SwitchScreenAction>>(); + constructMenuItem, SwitchScreenAction>>(); constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } }; diff --git a/main/presets.h b/main/presets.h index 6315542..b2687c3 100644 --- a/main/presets.h +++ b/main/presets.h @@ -265,6 +265,13 @@ constexpr Settings::Battery defaultBattery { .applyCalibration = true }; +constexpr Settings::Hybrid defaultHybrid { + .hybridMode = UnifiedModelMode::FocTorque, + .enable = false, + .activationLimit = 1000, + .deactivationLimit = 950, +}; + constexpr Settings defaultSettings { #ifdef FEATURE_BMS .autoConnectBms = false, @@ -291,6 +298,7 @@ constexpr Settings defaultSettings { .ledstrip = defaultLedstrip, #endif .battery = defaultBattery, + .hybrid = defaultHybrid, .lockscreen = defaultLockscreen }; diff --git a/main/settings.h b/main/settings.h index 7a5698e..c9f42c8 100644 --- a/main/settings.h +++ b/main/settings.h @@ -184,6 +184,13 @@ struct Settings bool applyCalibration; } battery; + struct Hybrid { + UnifiedModelMode hybridMode; + bool enable; + int16_t activationLimit; + int16_t deactivationLimit; + } hybrid; + struct LockscreenSettings { bool allowPresetSwitch; std::array pin; @@ -301,6 +308,11 @@ void Settings::executeForEveryCommonSetting(T &&callable) callable("batB50VCal", battery.back50VoltCalibration); callable("applyBatCal", battery.applyCalibration); + callable("hybridMode", hybrid.hybridMode); + callable("hybridEn", hybrid.enable); + callable("hybridAcL", hybrid.activationLimit); + callable("hybridDeacL", hybrid.deactivationLimit); + callable("lockAlwPresetSw", lockscreen.allowPresetSwitch); callable("lockscreenPin", lockscreen.pin); } diff --git a/main/texts.h b/main/texts.h index 1a5ffa3..30d4608 100644 --- a/main/texts.h +++ b/main/texts.h @@ -195,6 +195,7 @@ constexpr char TEXT_DYNAMICMENU[] = "Dynamic menu"; //DefaultModeSettingsMenu //constexpr char TEXT_DEFAULTMODESETTINGS[] = "Default mode settings"; constexpr char TEXT_MODELMODE[] = "Model mode"; +constexpr char TEXT_HYBRIDMODE[] = "Hybrid mode"; constexpr char TEXT_SQUAREGAS[] = "Square gas"; constexpr char TEXT_SQUAREBREMS[] = "Square brems"; constexpr char TEXT_ENABLESMOOTHINGUP[] = "Enable up smoothing"; @@ -210,6 +211,9 @@ constexpr char TEXT_SUBGASVAL[] = "Add Gas"; constexpr char TEXT_SUBBRAKEVAL[] = "Add Brake"; constexpr char TEXT_ADDGASVAL[] = "Sub Gas"; constexpr char TEXT_ADDBRAKEVAL[] = "Sub Brake"; +constexpr char TEXT_HYBRIDENABLE[] = "Enable Hybrid mode"; +constexpr char TEXT_HYBRIDACTIVATIONLIMIT[] = "Hybrid activation-limit"; +constexpr char TEXT_HYBRIDDEACTIVATIONLIMIT[] = "Hybrid deactivation-limit"; //constexpr char TEXT_BACK[] = "Back"; //DynamicDebugMenu