diff --git a/src/displays/menus/presetsmenu.h b/src/displays/menus/presetsmenu.h index 966de49..97d19c2 100644 --- a/src/displays/menus/presetsmenu.h +++ b/src/displays/menus/presetsmenu.h @@ -45,6 +45,27 @@ public: void triggered() override { settings.boardcomputerHardware = *preset; saveSettings(); } }; +template +class ApplyDefaultModePresetAction : public virtual ActionInterface +{ +public: + void triggered() override { settings.defaultMode = *preset; saveSettings(); } +}; + +template +class ApplyTempomatModePresetAction : public virtual ActionInterface +{ +public: + void triggered() override { settings.tempomatMode = *preset; saveSettings(); } +}; + +template +class ApplyLarsmModePresetAction : public virtual ActionInterface +{ +public: + void triggered() override { settings.larsmMode = *preset; saveSettings(); } +}; + class PresetsMenu : public MenuDisplay, public StaticText, @@ -57,10 +78,10 @@ class PresetsMenu : makeComponent, ApplyControllerHardwarePresetAction<&presets::mosfetsOffControllerHardware>>, makeComponent, ApplyControllerHardwarePresetAction<&presets::spinnerControllerHardware>>, makeComponent, ApplyBoardcomputerHardwarePresetAction<&presets::defaultBoardcomputerHardware>>, - makeComponent, DisabledColor, DummyAction>, - makeComponent, DisabledColor, DummyAction>, - makeComponent, DisabledColor, DummyAction>, - makeComponent, DisabledColor, DummyAction>, + makeComponent, ApplyDefaultModePresetAction<&presets::defaultDefaultMode>>, + makeComponent, ApplyDefaultModePresetAction<&presets::sinusodialDefaultMode>>, + makeComponent, ApplyTempomatModePresetAction<&presets::defaultTempomatMode>>, + makeComponent, ApplyLarsmModePresetAction<&presets::defaultLarsmMode>>, makeComponent, SwitchScreenAction, StaticMenuItemIcon<&icons::back>> > {}; diff --git a/src/presets.h b/src/presets.h index 8a1393c..8f20357 100644 --- a/src/presets.h +++ b/src/presets.h @@ -98,6 +98,20 @@ constexpr Settings::DefaultMode defaultDefaultMode { .brems2_wert = 750 }; +constexpr Settings::DefaultMode sinusodialDefaultMode { + .ctrlTyp = ControlType::Sinusoidal, + .ctrlMod = ControlMode::Voltage, + .enableSmoothing = true, + .smoothing = 20, + .frontPercentage = 100, + .backPercentage = 100, + .add_schwelle = 500, + .gas1_wert = 1250, + .gas2_wert = 1250, + .brems1_wert = 150, + .brems2_wert = 1000 +}; + constexpr Settings::TempomatMode defaultTempomatMode { .ctrlTyp = ControlType::FieldOrientedControl, .ctrlMod = ControlMode::Speed diff --git a/src/texts.h b/src/texts.h index 62de1f3..5b45d93 100644 --- a/src/texts.h +++ b/src/texts.h @@ -255,6 +255,10 @@ constexpr char TEXT_DEFAULTCONTROLLERHARDWARE[] = "Default controller H/W"; constexpr char TEXT_MOSFETSOFFCONTROLLERHARDWARE[] = "MOSFETs off controller H/W"; constexpr char TEXT_SPINNERCONTROLLERHARDWARE[] = "Spinner controller H/W"; constexpr char TEXT_DEFAULTBOARDCOMPUTERHARDWARE[] = "Default boardcomputer H/W"; +constexpr char TEXT_DEFAULTDEFAULTMODE[] = "Default defaultMode"; +constexpr char TEXT_SINUSODIALDEFAULTMODE[] = "Sinusodial defaultMode"; +constexpr char TEXT_DEFAULTTEMPOMATMODE[] = "Default tempomatMode"; +constexpr char TEXT_DEFAULTLARSMMODE[] = "Default larsmMode"; constexpr char TEXT_STREET[] = "Street"; constexpr char TEXT_SIDEWALK[] = "Sidewalk"; constexpr char TEXT_POLICE[] = "Police";