diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index c139075..27ff81e 100644 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -102,6 +102,7 @@ set(headers displays/menus/cloudsettingsmenu.h displays/menus/commanddebugmenu.h displays/menus/controllerhardwaresettingsmenu.h + displays/menus/crashmenu.h displays/menus/debugmenu.h displays/menus/defaultmodesettingsmenu.h displays/menus/demosmenu.h @@ -278,6 +279,7 @@ set(sources displays/menus/cloudsettingsmenu.cpp displays/menus/commanddebugmenu.cpp displays/menus/controllerhardwaresettingsmenu.cpp + displays/menus/crashmenu.cpp displays/menus/debugmenu.cpp displays/menus/defaultmodesettingsmenu.cpp displays/menus/demosmenu.cpp diff --git a/main/displays/menus/crashmenu.cpp b/main/displays/menus/crashmenu.cpp new file mode 100644 index 0000000..e69de29 diff --git a/main/displays/menus/crashmenu.h b/main/displays/menus/crashmenu.h new file mode 100644 index 0000000..474f1d7 --- /dev/null +++ b/main/displays/menus/crashmenu.h @@ -0,0 +1,39 @@ +#pragma once + +// local includes +#include "menudisplay.h" +#include "utils.h" +#include "actions/dummyaction.h" +#include "icons/back.h" +#include "texts.h" +#include + + +// forward declares +namespace { +class SettingsMenu; + +class AssertAction : public virtual ActionInterface { public: void triggered() override { assert(0); } }; +class DivideByZeroAction : public virtual ActionInterface { public: void triggered() override { int goodbye = 42 / 0; ESP_LOGW("divByZero", "%i", goodbye); } }; + + +} // namespace + +using namespace espgui; + +namespace { + +class CrashMenu : + public MenuDisplay, + public StaticText, + public BackActionInterface> +{ +public: + CrashMenu() + { + constructMenuItem, AssertAction>>(); + constructMenuItem, DivideByZeroAction>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); + } +}; +} // namespace diff --git a/main/displays/menus/settingsmenu.h b/main/displays/menus/settingsmenu.h index ee00557..9ae9248 100644 --- a/main/displays/menus/settingsmenu.h +++ b/main/displays/menus/settingsmenu.h @@ -14,6 +14,7 @@ #include "icons/hardware.h" #include "icons/buzzer.h" #include "icons/info.h" +#include "icons/demos.h" #include "icons/back.h" #include "texts.h" #include "globals.h" @@ -33,6 +34,7 @@ class BoardcomputerHardwareSettingsMenu; class BuzzerMenu; class AboutMenu; class MainMenu; +class CrashMenu; } using namespace espgui; @@ -83,6 +85,7 @@ public: constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&bobbyicons::buzzer>>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, FrontLedAccessor>>(); constructMenuItem, ToggleBoolAction, CheckboxIcon, BackLedAccessor>>(); + constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&bobbyicons::demos>>>(); constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&bobbyicons::info>>>(); constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&espgui::icons::back>>>(); } diff --git a/main/main.cpp b/main/main.cpp index 534b9f3..a1a0932 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -38,6 +38,7 @@ using namespace std::chrono_literals; #endif #include "displays/menus/buzzermenu.h" #include "displays/menus/commanddebugmenu.h" +#include "displays/menus/crashmenu.h" #include "displays/menus/debugmenu.h" #include "displays/menus/defaultmodesettingsmenu.h" #include "displays/menus/demosmenu.h" diff --git a/main/settingsutils.h b/main/settingsutils.h index 8fd4df6..a72191e 100644 --- a/main/settingsutils.h +++ b/main/settingsutils.h @@ -10,9 +10,6 @@ namespace { void switchProfile(uint8_t index) { - settings = presets::defaultSettings; - stringSettings = presets::makeDefaultStringSettings(); - #ifdef SIMPLIFIED_TRIGGER_TRIGGERONPRESET if (index == SIMPLIFIED_TRIGGER_TRIGGERONPRESET) { @@ -24,6 +21,9 @@ void switchProfile(uint8_t index) } #endif + settings = presets::defaultSettings; + stringSettings = presets::makeDefaultStringSettings(); + if (!settingsPersister.openProfile(index)) { ESP_LOGE("BOBBY", "openProfile() failed"); diff --git a/main/texts.h b/main/texts.h index ce4d9f8..fa4961f 100644 --- a/main/texts.h +++ b/main/texts.h @@ -466,6 +466,11 @@ constexpr char TEXT_WIFI_POWER_2dBm[] = "2dBm"; constexpr char TEXT_WIFI_POWER_MINUS_1dBm[] = "-1dBm"; //constexpr char TEXT_BACK[] = "Back"; +//Crashmenu +constexpr char TEXT_CRASHMENU[] = "Crash Menu"; +constexpr char TEXT_CRASH_ASSERT[] = "assert(0)"; +constexpr char TEXT_CRASH_DIVZERO[] = "42 / 0"; + #ifdef FEATURE_CAN constexpr char TEXT_POWERSUPPLY[] = "Powersupply"; #endif