diff --git a/src/displays/menus/defaultmodesettingsmenu.h b/src/displays/menus/defaultmodesettingsmenu.h index 538b52b..aba50a7 100644 --- a/src/displays/menus/defaultmodesettingsmenu.h +++ b/src/displays/menus/defaultmodesettingsmenu.h @@ -88,6 +88,8 @@ class DefaultModeSettingsMenu : public BackActionInterface>, public StaticMenuDefinition< makeComponent, SwitchScreenAction>, + makeComponent, ToggleBoolAction, CheckboxIcon, DefaultModeSquareGasAccessor>, + makeComponent, ToggleBoolAction, CheckboxIcon, DefaultModeSquareBremsAccessor>, makeComponent, ToggleBoolAction, CheckboxIcon, DefaultModeEnableSmoothingAccessor>, makeComponent, SwitchScreenAction>, makeComponent, SwitchScreenAction>, diff --git a/src/modes/defaultmode.h b/src/modes/defaultmode.h index a6cca51..f4756e4 100644 --- a/src/modes/defaultmode.h +++ b/src/modes/defaultmode.h @@ -47,15 +47,15 @@ void DefaultMode::update() brems = 0; } - const auto gas_squared = (gas * gas) / 1000; - const auto brems_squared = (brems * brems) / 1000; + const auto gas_processed = settings.defaultMode.squareGas ? (gas * gas) / 1000.f : gas; + const auto brems_processed = settings.defaultMode.squareBrems ? (brems * brems) / 1000 : brems; const auto now = millis(); float pwm; - if (gas_squared >= settings.defaultMode.add_schwelle) + if (gas_processed >= settings.defaultMode.add_schwelle) { - pwm = (gas_squared/1000.*settings.defaultMode.gas1_wert) + (brems_squared/1000.*settings.defaultMode.brems1_wert); + pwm = (gas_processed/1000.*settings.defaultMode.gas1_wert) + (brems_processed/1000.*settings.defaultMode.brems1_wert); if (settings.defaultMode.enableSmoothing && (pwm > 1000. || lastPwm > 1000.)) { @@ -72,7 +72,7 @@ void DefaultMode::update() } } else - pwm = (gas_squared/1000.*settings.defaultMode.gas2_wert) - (brems_squared/1000.*settings.defaultMode.brems2_wert); + pwm = (gas_processed/1000.*settings.defaultMode.gas2_wert) - (brems_processed/1000.*settings.defaultMode.brems2_wert); lastPwm = pwm; lastTime = now; diff --git a/src/presets.h b/src/presets.h index a37da5f..0e5d61c 100644 --- a/src/presets.h +++ b/src/presets.h @@ -107,6 +107,8 @@ constexpr Settings::BoardcomputerHardware defaultBoardcomputerHardware { constexpr Settings::DefaultMode defaultDefaultMode { .modelMode = UnifiedModelMode::FocTorque, + .squareGas = true, + .squareBrems = true, .enableSmoothing = true, .smoothing = 20, .frontPercentage = 100, @@ -120,6 +122,8 @@ constexpr Settings::DefaultMode defaultDefaultMode { constexpr Settings::DefaultMode sinusoidalDefaultMode { .modelMode = UnifiedModelMode::Sinusoidal, + .squareGas = true, + .squareBrems = true, .enableSmoothing = true, .smoothing = 20, .frontPercentage = 100, diff --git a/src/settings.h b/src/settings.h index b26902b..447b1f7 100644 --- a/src/settings.h +++ b/src/settings.h @@ -72,6 +72,8 @@ struct Settings struct DefaultMode { UnifiedModelMode modelMode; + bool squareGas; + bool squareBrems; bool enableSmoothing; int16_t smoothing; int16_t frontPercentage; diff --git a/src/settingsaccessors.h b/src/settingsaccessors.h index a619c6f..e130259 100644 --- a/src/settingsaccessors.h +++ b/src/settingsaccessors.h @@ -83,6 +83,8 @@ struct DisplayUpdateRateAccessor : public RefAccessorSaveSettings { int struct DisplayRedrawRateAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.boardcomputerHardware.timersSettings.displayRedrawRate; } }; struct DefaultModeModelModeAccessor : public RefAccessorSaveSettings { UnifiedModelMode &getRef() const override { return settings.defaultMode.modelMode; } }; +struct DefaultModeSquareGasAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.defaultMode.squareGas; } }; +struct DefaultModeSquareBremsAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.defaultMode.squareBrems; } }; struct DefaultModeEnableSmoothingAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.defaultMode.enableSmoothing; } }; struct DefaultModeSmoothingAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.defaultMode.smoothing; } }; struct DefaultModeFrontPercentageAccessor : public RefAccessorSaveSettings { int16_t &getRef() const override { return settings.defaultMode.frontPercentage; } }; diff --git a/src/texts.h b/src/texts.h index 8f5a3f4..196e66c 100644 --- a/src/texts.h +++ b/src/texts.h @@ -141,6 +141,8 @@ constexpr char TEXT_DYNAMICMENU[] = "Dynamic menu"; //DefaultModeSettingsMenu //constexpr char TEXT_DEFAULTMODESETTINGS[] = "Default mode settings"; constexpr char TEXT_SETMODELMODE[] = "Set model mode"; +constexpr char TEXT_SQUAREGAS[] = "Square gas"; +constexpr char TEXT_SQUAREBREMS[] = "Square brems"; constexpr char TEXT_ENABLESMOOTHING[] = "Enable smoothing"; constexpr char TEXT_SETSMOOTHING[] = "Set smoothing"; constexpr char TEXT_SETFRONTPERCENTAGE[] = "Set front percentage";