Fixed submodule
This commit is contained in:
@ -128,7 +128,13 @@ struct CloudSendRateAccessor : public RefAccessorSaveSettings<int16_t> { int16_t
|
|||||||
struct DefaultModeModelModeAccessor : public RefAccessorSaveSettings<UnifiedModelMode> { UnifiedModelMode &getRef() const override { return settings.defaultMode.modelMode; } };
|
struct DefaultModeModelModeAccessor : public RefAccessorSaveSettings<UnifiedModelMode> { UnifiedModelMode &getRef() const override { return settings.defaultMode.modelMode; } };
|
||||||
struct DefaultModeSquareGasAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.defaultMode.squareGas; } };
|
struct DefaultModeSquareGasAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.defaultMode.squareGas; } };
|
||||||
struct DefaultModeSquareBremsAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.defaultMode.squareBrems; } };
|
struct DefaultModeSquareBremsAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.defaultMode.squareBrems; } };
|
||||||
struct DefaultModeEnableSmoothingAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.defaultMode.enableSmoothing; } };
|
|
||||||
|
struct DefaultModeEnableSmoothingUpAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.defaultMode.enableSmoothingUp; } };
|
||||||
|
struct DefaultModeEnableSmoothingDownAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.defaultMode.enableSmoothingDown; } };
|
||||||
|
struct DefaultModeEnableFieldWeakSmoothingUpAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.defaultMode.enableFieldWeakSmoothingUp; } };
|
||||||
|
struct DefaultModeEnableFieldWeakSmoothingDownAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.defaultMode.enableFieldWeakSmoothingDown; } };
|
||||||
|
struct DefaultModeEnableFieldWeakSmoothingLowerLimitAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.defaultMode.fwSmoothLowerLimit; } };
|
||||||
|
|
||||||
struct DefaultModeSmoothingAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.defaultMode.smoothing; } };
|
struct DefaultModeSmoothingAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.defaultMode.smoothing; } };
|
||||||
struct DefaultModeFrontPercentageAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.defaultMode.frontPercentage; } };
|
struct DefaultModeFrontPercentageAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.defaultMode.frontPercentage; } };
|
||||||
struct DefaultModeBackPercentageAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.defaultMode.backPercentage; } };
|
struct DefaultModeBackPercentageAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.defaultMode.backPercentage; } };
|
||||||
|
@ -36,6 +36,13 @@ using DefaultModeSmoothingChangeDisplay = makeComponent<
|
|||||||
BackActionInterface<SwitchScreenAction<DefaultModeSettingsMenu>>,
|
BackActionInterface<SwitchScreenAction<DefaultModeSettingsMenu>>,
|
||||||
SwitchScreenAction<DefaultModeSettingsMenu>
|
SwitchScreenAction<DefaultModeSettingsMenu>
|
||||||
>;
|
>;
|
||||||
|
using DefaultModeFwSmoothingLowerLimitChangeDisplay = makeComponent<
|
||||||
|
ChangeValueDisplay<int16_t>,
|
||||||
|
StaticText<TEXT_FWSMOOTHING_LIMIT>,
|
||||||
|
DefaultModeEnableFieldWeakSmoothingLowerLimitAccessor,
|
||||||
|
BackActionInterface<SwitchScreenAction<DefaultModeSettingsMenu>>,
|
||||||
|
SwitchScreenAction<DefaultModeSettingsMenu>
|
||||||
|
>;
|
||||||
using DefaultModeFrontPercentageChangeDisplay = makeComponent<
|
using DefaultModeFrontPercentageChangeDisplay = makeComponent<
|
||||||
ChangeValueDisplay<int16_t>,
|
ChangeValueDisplay<int16_t>,
|
||||||
StaticText<TEXT_FRONTPERCENTAGE>,
|
StaticText<TEXT_FRONTPERCENTAGE>,
|
||||||
@ -97,7 +104,11 @@ public:
|
|||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_MODELMODE>, SwitchScreenAction<DefaultModeModelModeChangeDisplay>>>();
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_MODELMODE>, SwitchScreenAction<DefaultModeModelModeChangeDisplay>>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SQUAREGAS>, ToggleBoolAction, CheckboxIcon, DefaultModeSquareGasAccessor>>();
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SQUAREGAS>, ToggleBoolAction, CheckboxIcon, DefaultModeSquareGasAccessor>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SQUAREBREMS>, ToggleBoolAction, CheckboxIcon, DefaultModeSquareBremsAccessor>>();
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_SQUAREBREMS>, ToggleBoolAction, CheckboxIcon, DefaultModeSquareBremsAccessor>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ENABLESMOOTHING>, ToggleBoolAction, CheckboxIcon, DefaultModeEnableSmoothingAccessor>>();
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ENABLESMOOTHINGUP>, ToggleBoolAction, CheckboxIcon, DefaultModeEnableSmoothingUpAccessor>>();
|
||||||
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ENABLESMOOTHINGDOWN>, ToggleBoolAction, CheckboxIcon, DefaultModeEnableSmoothingDownAccessor>>();
|
||||||
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ENABLEFWSMOOTHINGUP>, ToggleBoolAction, CheckboxIcon, DefaultModeEnableFieldWeakSmoothingUpAccessor>>();
|
||||||
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ENABLEFWSMOOTHINGDOWN>, ToggleBoolAction, CheckboxIcon, DefaultModeEnableFieldWeakSmoothingDownAccessor>>();
|
||||||
|
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_FWSMOOTHING_LIMIT, DefaultModeEnableFieldWeakSmoothingLowerLimitAccessor>, SwitchScreenAction<DefaultModeFwSmoothingLowerLimitChangeDisplay>>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SMOOTHINGVAL, DefaultModeSmoothingAccessor>, SwitchScreenAction<DefaultModeSmoothingChangeDisplay>>>();
|
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_SMOOTHINGVAL, DefaultModeSmoothingAccessor>, SwitchScreenAction<DefaultModeSmoothingChangeDisplay>>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_FRONTPERCENTAGE, DefaultModeFrontPercentageAccessor>, SwitchScreenAction<DefaultModeFrontPercentageChangeDisplay>>>();
|
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_FRONTPERCENTAGE, DefaultModeFrontPercentageAccessor>, SwitchScreenAction<DefaultModeFrontPercentageChangeDisplay>>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_BACKPERCENTAGE, DefaultModeBackPercentageAccessor>, SwitchScreenAction<DefaultModeBackPercentageChangeDisplay>>>();
|
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_BACKPERCENTAGE, DefaultModeBackPercentageAccessor>, SwitchScreenAction<DefaultModeBackPercentageChangeDisplay>>>();
|
||||||
|
@ -84,22 +84,45 @@ void DefaultMode::update()
|
|||||||
{
|
{
|
||||||
pwm = (gas_processed/1000.*settings.defaultMode.gas1_wert) + (brems_processed/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.))
|
if ((settings.defaultMode.enableSmoothingUp || settings.defaultMode.enableSmoothingDown) && (pwm > 1000. || lastPwm > 1000.))
|
||||||
{
|
{
|
||||||
if (lastPwm < pwm)
|
if (lastPwm < pwm && settings.defaultMode.enableSmoothingUp)
|
||||||
{
|
{
|
||||||
pwm = std::min(pwm, lastPwm + (settings.defaultMode.smoothing * std::chrono::milliseconds{now - lastTime}.count() / 100.f));
|
pwm = std::min(pwm, lastPwm + (settings.defaultMode.smoothing * std::chrono::milliseconds{now - lastTime}.count() / 100.f));
|
||||||
if (pwm < 1000.)
|
if (pwm < 1000.)
|
||||||
pwm = 1000.;
|
pwm = 1000.;
|
||||||
}
|
}
|
||||||
else if (lastPwm > pwm)
|
else if (lastPwm > pwm && settings.defaultMode.enableSmoothingDown)
|
||||||
{
|
{
|
||||||
pwm = std::max(pwm, lastPwm - (settings.defaultMode.smoothing * std::chrono::milliseconds{now - lastTime}.count() / 100.f));
|
pwm = std::max(pwm, lastPwm - (settings.defaultMode.smoothing * std::chrono::milliseconds{now - lastTime}.count() / 100.f));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else {
|
||||||
pwm = (gas_processed/1000.*settings.defaultMode.gas2_wert) - (brems_processed/1000.*settings.defaultMode.brems2_wert);
|
pwm = (gas_processed/1000.*settings.defaultMode.gas2_wert) - (brems_processed/1000.*settings.defaultMode.brems2_wert);
|
||||||
|
if (
|
||||||
|
(settings.defaultMode.enableFieldWeakSmoothingUp || settings.defaultMode.enableFieldWeakSmoothingDown) &&
|
||||||
|
(lastPwm > settings.defaultMode.fwSmoothLowerLimit) &&
|
||||||
|
brems_processed > 0)
|
||||||
|
{
|
||||||
|
if (lastPwm < pwm && settings.defaultMode.enableFieldWeakSmoothingUp)
|
||||||
|
{
|
||||||
|
auto effective_smoothing = settings.defaultMode.smoothing;
|
||||||
|
auto difference_to_target = std::abs(pwm-lastPwm);
|
||||||
|
effective_smoothing *= std::max((difference_to_target / 500),0.5f);
|
||||||
|
|
||||||
|
pwm = std::min(pwm, lastPwm + (effective_smoothing * std::chrono::milliseconds{now - lastTime}.count() / 100.f));
|
||||||
|
}
|
||||||
|
else if (lastPwm > pwm && settings.defaultMode.enableFieldWeakSmoothingDown)
|
||||||
|
{
|
||||||
|
auto effective_smoothing = settings.defaultMode.smoothing;
|
||||||
|
auto difference_to_target = std::abs(pwm-lastPwm);
|
||||||
|
effective_smoothing *= std::max((difference_to_target / 500),0.5f);
|
||||||
|
|
||||||
|
pwm = std::max(pwm, lastPwm - (effective_smoothing * std::chrono::milliseconds{now - lastTime}.count() / 100.f));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
lastPwm = pwm;
|
lastPwm = pwm;
|
||||||
lastTime = now;
|
lastTime = now;
|
||||||
|
@ -178,7 +178,10 @@ constexpr Settings::DefaultMode defaultDefaultMode {
|
|||||||
.modelMode = UnifiedModelMode::FocTorque,
|
.modelMode = UnifiedModelMode::FocTorque,
|
||||||
.squareGas = true,
|
.squareGas = true,
|
||||||
.squareBrems = true,
|
.squareBrems = true,
|
||||||
.enableSmoothing = true,
|
.enableSmoothingUp = true,
|
||||||
|
.enableSmoothingDown = true,
|
||||||
|
.enableFieldWeakSmoothingUp = false,
|
||||||
|
.enableFieldWeakSmoothingDown = false,
|
||||||
.smoothing = 20,
|
.smoothing = 20,
|
||||||
.frontPercentage = 100,
|
.frontPercentage = 100,
|
||||||
.backPercentage = 100,
|
.backPercentage = 100,
|
||||||
@ -186,14 +189,18 @@ constexpr Settings::DefaultMode defaultDefaultMode {
|
|||||||
.gas1_wert = 1250,
|
.gas1_wert = 1250,
|
||||||
.gas2_wert = 1250,
|
.gas2_wert = 1250,
|
||||||
.brems1_wert = 250,
|
.brems1_wert = 250,
|
||||||
.brems2_wert = 750
|
.brems2_wert = 750,
|
||||||
|
.fwSmoothLowerLimit = 800
|
||||||
};
|
};
|
||||||
|
|
||||||
constexpr Settings::DefaultMode sinusoidalDefaultMode {
|
constexpr Settings::DefaultMode sinusoidalDefaultMode {
|
||||||
.modelMode = UnifiedModelMode::Sinusoidal,
|
.modelMode = UnifiedModelMode::Sinusoidal,
|
||||||
.squareGas = true,
|
.squareGas = true,
|
||||||
.squareBrems = true,
|
.squareBrems = true,
|
||||||
.enableSmoothing = true,
|
.enableSmoothingUp = true,
|
||||||
|
.enableSmoothingDown = true,
|
||||||
|
.enableFieldWeakSmoothingUp = false,
|
||||||
|
.enableFieldWeakSmoothingDown = false,
|
||||||
.smoothing = 20,
|
.smoothing = 20,
|
||||||
.frontPercentage = 100,
|
.frontPercentage = 100,
|
||||||
.backPercentage = 100,
|
.backPercentage = 100,
|
||||||
@ -201,7 +208,8 @@ constexpr Settings::DefaultMode sinusoidalDefaultMode {
|
|||||||
.gas1_wert = 1250,
|
.gas1_wert = 1250,
|
||||||
.gas2_wert = 1250,
|
.gas2_wert = 1250,
|
||||||
.brems1_wert = 150,
|
.brems1_wert = 150,
|
||||||
.brems2_wert = 1000
|
.brems2_wert = 1000,
|
||||||
|
.fwSmoothLowerLimit = 800
|
||||||
};
|
};
|
||||||
|
|
||||||
constexpr Settings::TempomatMode defaultTempomatMode {
|
constexpr Settings::TempomatMode defaultTempomatMode {
|
||||||
|
@ -127,7 +127,10 @@ struct Settings
|
|||||||
UnifiedModelMode modelMode;
|
UnifiedModelMode modelMode;
|
||||||
bool squareGas;
|
bool squareGas;
|
||||||
bool squareBrems;
|
bool squareBrems;
|
||||||
bool enableSmoothing;
|
bool enableSmoothingUp;
|
||||||
|
bool enableSmoothingDown;
|
||||||
|
bool enableFieldWeakSmoothingUp;
|
||||||
|
bool enableFieldWeakSmoothingDown;
|
||||||
int16_t smoothing;
|
int16_t smoothing;
|
||||||
int16_t frontPercentage;
|
int16_t frontPercentage;
|
||||||
int16_t backPercentage;
|
int16_t backPercentage;
|
||||||
@ -136,6 +139,7 @@ struct Settings
|
|||||||
int16_t gas2_wert;
|
int16_t gas2_wert;
|
||||||
int16_t brems1_wert;
|
int16_t brems1_wert;
|
||||||
int16_t brems2_wert;
|
int16_t brems2_wert;
|
||||||
|
int16_t fwSmoothLowerLimit;
|
||||||
} defaultMode;
|
} defaultMode;
|
||||||
|
|
||||||
struct TempomatMode {
|
struct TempomatMode {
|
||||||
@ -280,7 +284,11 @@ void Settings::executeForEveryProfileSetting(T &&callable)
|
|||||||
callable("invertBackRight", controllerHardware.invertBackRight);
|
callable("invertBackRight", controllerHardware.invertBackRight);
|
||||||
|
|
||||||
callable("default.modelMo", defaultMode.modelMode);
|
callable("default.modelMo", defaultMode.modelMode);
|
||||||
callable("default.enableS", defaultMode.enableSmoothing);
|
callable("default.enSmUp_", defaultMode.enableSmoothingUp);
|
||||||
|
callable("default.enSmDow", defaultMode.enableSmoothingDown);
|
||||||
|
callable("default.enSmFUp", defaultMode.enableFieldWeakSmoothingUp);
|
||||||
|
callable("default.enSmFDo", defaultMode.enableFieldWeakSmoothingDown);
|
||||||
|
callable("default.fwSmLLi", defaultMode.fwSmoothLowerLimit);
|
||||||
callable("default.smoothi", defaultMode.smoothing);
|
callable("default.smoothi", defaultMode.smoothing);
|
||||||
callable("default.frontPe", defaultMode.frontPercentage);
|
callable("default.frontPe", defaultMode.frontPercentage);
|
||||||
callable("default.backPer", defaultMode.backPercentage);
|
callable("default.backPer", defaultMode.backPercentage);
|
||||||
|
@ -170,7 +170,11 @@ constexpr char TEXT_DYNAMICMENU[] = "Dynamic menu";
|
|||||||
constexpr char TEXT_MODELMODE[] = "Model mode";
|
constexpr char TEXT_MODELMODE[] = "Model mode";
|
||||||
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_ENABLESMOOTHINGUP[] = "Enable up smoothing";
|
||||||
|
constexpr char TEXT_ENABLESMOOTHINGDOWN[] = "Enable down smoothing";
|
||||||
|
constexpr char TEXT_ENABLEFWSMOOTHINGUP[] = "Enable fw up smoothing";
|
||||||
|
constexpr char TEXT_ENABLEFWSMOOTHINGDOWN[] = "Enable fw down smoothing";
|
||||||
|
constexpr char TEXT_FWSMOOTHING_LIMIT[] = "Fw smooth lower limit";
|
||||||
constexpr char TEXT_SMOOTHINGVAL[] = "Smoothing";
|
constexpr char TEXT_SMOOTHINGVAL[] = "Smoothing";
|
||||||
constexpr char TEXT_FRONTPERCENTAGE[] = "Front %";
|
constexpr char TEXT_FRONTPERCENTAGE[] = "Front %";
|
||||||
constexpr char TEXT_BACKPERCENTAGE[] = "Back %";
|
constexpr char TEXT_BACKPERCENTAGE[] = "Back %";
|
||||||
|
Reference in New Issue
Block a user