Refactored all menus to use the new ContainerMenuDefinition

This commit is contained in:
2021-01-02 23:52:18 +01:00
parent 4d641974d4
commit 67bb5554e4
42 changed files with 719 additions and 601 deletions

View File

@ -2,7 +2,6 @@
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h"
#include "utils.h" #include "utils.h"
#include "actions/setvalueaction.h" #include "actions/setvalueaction.h"
#include "actions/backproxyaction.h" #include "actions/backproxyaction.h"

View File

@ -2,7 +2,6 @@
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h"
#include "actioninterface.h" #include "actioninterface.h"
#include "utils.h" #include "utils.h"
#include "actions/setvalueaction.h" #include "actions/setvalueaction.h"

View File

@ -2,7 +2,6 @@
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h"
#include "utils.h" #include "utils.h"
#include "actions/setvalueaction.h" #include "actions/setvalueaction.h"
#include "actions/backproxyaction.h" #include "actions/backproxyaction.h"

View File

@ -2,7 +2,6 @@
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h"
#include "utils.h" #include "utils.h"
#include "actions/setvalueaction.h" #include "actions/setvalueaction.h"
#include "actions/backproxyaction.h" #include "actions/backproxyaction.h"

View File

@ -2,7 +2,6 @@
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h"
#include "utils.h" #include "utils.h"
#include "actions/setvalueaction.h" #include "actions/setvalueaction.h"
#include "actions/backproxyaction.h" #include "actions/backproxyaction.h"

View File

@ -2,7 +2,6 @@
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h"
#include "utils.h" #include "utils.h"
#include "actions/setvalueaction.h" #include "actions/setvalueaction.h"
#include "actions/backproxyaction.h" #include "actions/backproxyaction.h"

View File

@ -4,7 +4,6 @@
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h"
#include "utils.h" #include "utils.h"
#include "actions/setvalueaction.h" #include "actions/setvalueaction.h"
#include "actions/backproxyaction.h" #include "actions/backproxyaction.h"

View File

@ -4,7 +4,6 @@
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h"
#include "utils.h" #include "utils.h"
#include "actions/setvalueaction.h" #include "actions/setvalueaction.h"
#include "actions/backproxyaction.h" #include "actions/backproxyaction.h"

View File

@ -1,7 +1,8 @@
#pragma once #pragma once
// local includes
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "utils.h" #include "utils.h"
#include "actions/dummyaction.h" #include "actions/dummyaction.h"
#include "actions/switchscreenaction.h" #include "actions/switchscreenaction.h"
@ -9,9 +10,10 @@
#include "esptexthelpers.h" #include "esptexthelpers.h"
#include "texts.h" #include "texts.h"
// forward declares
namespace { namespace {
class SettingsMenu; class SettingsMenu;
} } // namespace
namespace { namespace {
constexpr char TEXT_VERSION[] = "Version: 1.0"; constexpr char TEXT_VERSION[] = "Version: 1.0";
@ -21,29 +23,33 @@ class AboutMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<TEXT_ABOUT>, public StaticText<TEXT_ABOUT>,
public BackActionInterface<SwitchScreenAction<SettingsMenu>>, public BackActionInterface<SwitchScreenAction<SettingsMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, StaticText<TEXT_VERSION>, DummyAction>, {
makeComponent<MenuItem, StaticText<nullptr>, DummyAction>, public:
makeComponent<MenuItem, StaticText<TEXT_ESPINFO>, DummyAction>, AboutMenu()
makeComponent<MenuItem, EspHeapSizeText, StaticFont<2>, DisabledColor, DummyAction>, {
makeComponent<MenuItem, EspFreeHeapText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_VERSION>, DummyAction>>();
makeComponent<MenuItem, EspMinFreeHeapText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<nullptr>, DummyAction>>();
makeComponent<MenuItem, EspMaxAllocHeapText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_ESPINFO>, DummyAction>>();
makeComponent<MenuItem, EspPsramSizeText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, EspHeapSizeText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, EspFreePsramText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, EspFreeHeapText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, EspMinFreePsramText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, EspMinFreeHeapText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, EspMaxAllocPsramText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, EspMaxAllocHeapText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, EspChipRevisionText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, EspPsramSizeText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, EspCpuFreqMHzText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, EspFreePsramText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, EspCycleCountText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, EspMinFreePsramText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, EspSdkVersionText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, EspMaxAllocPsramText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, EspFlashChipSizeText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, EspChipRevisionText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, EspFlashChipSpeedText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, EspCpuFreqMHzText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, EspFlashChipModeText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, EspCycleCountText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, EspSketchSizeText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, EspSdkVersionText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, EspSketchMd5Text, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, EspFlashChipSizeText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, EspFreeSketchSpaceText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, EspFlashChipSpeedText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&icons::back>> constructItem<makeComponent<MenuItem, EspFlashChipModeText, StaticFont<2>, DisabledColor, DummyAction>>();
> constructItem<makeComponent<MenuItem, EspSketchSizeText, StaticFont<2>, DisabledColor, DummyAction>>();
{}; constructItem<makeComponent<MenuItem, EspSketchMd5Text, StaticFont<2>, DisabledColor, DummyAction>>();
} constructItem<makeComponent<MenuItem, EspFreeSketchSpaceText, StaticFont<2>, DisabledColor, DummyAction>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&icons::back>>>();
}
};
} // namespace

View File

@ -1,7 +1,8 @@
#pragma once #pragma once
// local includes
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "menuitem.h" #include "menuitem.h"
#include "actions/dummyaction.h" #include "actions/dummyaction.h"
#include "actions/wifisoftapaction.h" #include "actions/wifisoftapaction.h"
@ -13,29 +14,34 @@
#include "wifitexthelpers.h" #include "wifitexthelpers.h"
#include "texts.h" #include "texts.h"
// forward declares
namespace { namespace {
class WifiSettingsMenu; class WifiSettingsMenu;
} } // namespace
namespace { namespace {
class AccessPointWifiSettingsMenu : class AccessPointWifiSettingsMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<TEXT_ACCESSPOINTWIFISETTINGS>, public StaticText<TEXT_ACCESSPOINTWIFISETTINGS>,
public BackActionInterface<SwitchScreenAction<WifiSettingsMenu>>, public BackActionInterface<SwitchScreenAction<WifiSettingsMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, StaticText<TEXT_WIFISOFTAP>, WifiSoftApAction>, {
makeComponent<MenuItem, StaticText<TEXT_WIFISOFTAPDISCONNECT>, WifiSoftApDisconnectAction>, public:
makeComponent<MenuItem, StaticText<TEXT_WIFISOFTAPDISCONNECTWIFIOFF>, WifiSoftApDisconnectWifioffAction>, AccessPointWifiSettingsMenu()
makeComponent<MenuItem, WifiSoftApGetStationNumText, StaticFont<2>, DisabledColor, DummyAction>, {
makeComponent<MenuItem, WifiSoftApIpText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_WIFISOFTAP>, WifiSoftApAction>>();
makeComponent<MenuItem, WifiSoftApBroadcastIpText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_WIFISOFTAPDISCONNECT>, WifiSoftApDisconnectAction>>();
makeComponent<MenuItem, WifiSoftApNetworkIdText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_WIFISOFTAPDISCONNECTWIFIOFF>, WifiSoftApDisconnectWifioffAction>>();
makeComponent<MenuItem, WifiSoftApSubnetCidrText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, WifiSoftApGetStationNumText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_WIFISOFTAPENABLEIPV6>, WifiSoftApEnableIpV6Action>, constructItem<makeComponent<MenuItem, WifiSoftApIpText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, WifiSoftApIpV6Text, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, WifiSoftApBroadcastIpText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, WifiSoftApHostnameText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, WifiSoftApNetworkIdText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, WifiSoftApMacAddressText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, WifiSoftApSubnetCidrText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<WifiSettingsMenu>, StaticMenuItemIcon<&icons::back>> constructItem<makeComponent<MenuItem, StaticText<TEXT_WIFISOFTAPENABLEIPV6>, WifiSoftApEnableIpV6Action>>();
> constructItem<makeComponent<MenuItem, WifiSoftApIpV6Text, StaticFont<2>, DisabledColor, DummyAction>>();
{}; constructItem<makeComponent<MenuItem, WifiSoftApHostnameText, StaticFont<2>, DisabledColor, DummyAction>>();
} constructItem<makeComponent<MenuItem, WifiSoftApMacAddressText, StaticFont<2>, DisabledColor, DummyAction>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<WifiSettingsMenu>, StaticMenuItemIcon<&icons::back>>>();
}
};
} // namespace

View File

@ -1,8 +1,9 @@
#pragma once #pragma once
// local includes
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "menuitem.h" #include "menuitem.h"
#include "actions/dummyaction.h" #include "actions/dummyaction.h"
#ifdef FEATURE_BLUETOOTH #ifdef FEATURE_BLUETOOTH
@ -18,9 +19,10 @@
#include "icons/back.h" #include "icons/back.h"
#include "texts.h" #include "texts.h"
// forward declares
namespace { namespace {
class SettingsMenu; class SettingsMenu;
} } // namespace
namespace { namespace {
#ifdef FEATURE_BLUETOOTH #ifdef FEATURE_BLUETOOTH
@ -38,20 +40,24 @@ class BluetoothSettingsMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<TEXT_BLUETOOTHSETTINGS>, public StaticText<TEXT_BLUETOOTHSETTINGS>,
public BackActionInterface<SwitchScreenAction<SettingsMenu>>, public BackActionInterface<SwitchScreenAction<SettingsMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, BluetoothAvailableText, DisabledColor, DummyAction>, {
makeComponent<MenuItem, BluetoothHasClientText, DisabledColor, DummyAction>, public:
// makeComponent<MenuItem, BluetoothConnectedText, DisabledColor, DummyAction>, // crashes BluetoothSettingsMenu()
makeComponent<MenuItem, BluetoothIsReadyText, DisabledColor, DummyAction>, {
makeComponent<MenuItem, BluetoothIsReadyMasterText, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, BluetoothAvailableText, DisabledColor, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_BLUETOOTHBEGIN>, BluetoothBeginAction>, constructItem<makeComponent<MenuItem, BluetoothHasClientText, DisabledColor, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_BLUETOOTHBEGINMASTER>, BluetoothBeginMasterAction>, // constructItem<makeComponent<MenuItem, BluetoothConnectedText, DisabledColor, DummyAction>>(); // crashes
makeComponent<MenuItem, StaticText<TEXT_BLUETOOTHFLUSH>, BluetoothFlushAction>, constructItem<makeComponent<MenuItem, BluetoothIsReadyText, DisabledColor, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_BLUETOOTHEND>, BluetoothEndAction>, constructItem<makeComponent<MenuItem, BluetoothIsReadyMasterText, DisabledColor, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_BLUETOOTHDISCONNECT>, BluetoothDisconnectAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_BLUETOOTHBEGIN>, BluetoothBeginAction>>();
makeComponent<MenuItem, StaticText<TEXT_AUTOBLUETOOTHMODE>, SwitchScreenAction<AutoBluetoothModeChangeDisplay>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_BLUETOOTHBEGINMASTER>, BluetoothBeginMasterAction>>();
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&icons::back>> constructItem<makeComponent<MenuItem, StaticText<TEXT_BLUETOOTHFLUSH>, BluetoothFlushAction>>();
> constructItem<makeComponent<MenuItem, StaticText<TEXT_BLUETOOTHEND>, BluetoothEndAction>>();
{}; constructItem<makeComponent<MenuItem, StaticText<TEXT_BLUETOOTHDISCONNECT>, BluetoothDisconnectAction>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_AUTOBLUETOOTHMODE>, SwitchScreenAction<AutoBluetoothModeChangeDisplay>>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&icons::back>>>();
}
};
#endif #endif
} } // namespace

View File

@ -1,7 +1,8 @@
#pragma once #pragma once
// local includes
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "utils.h" #include "utils.h"
#include "menuitem.h" #include "menuitem.h"
#ifdef FEATURE_BLUETOOTH #ifdef FEATURE_BLUETOOTH
@ -18,9 +19,10 @@
#include "icons/back.h" #include "icons/back.h"
#include "texts.h" #include "texts.h"
//forward declares
namespace { namespace {
class MainMenu; class MainMenu;
} } // namespace
namespace { namespace {
#if defined(FEATURE_BLUETOOTH) && defined(FEATURE_BMS) #if defined(FEATURE_BLUETOOTH) && defined(FEATURE_BMS)
@ -28,16 +30,20 @@ class BmsMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<TEXT_BMS>, public StaticText<TEXT_BMS>,
public BackActionInterface<SwitchScreenAction<MainMenu>>, public BackActionInterface<SwitchScreenAction<MainMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, StaticText<TEXT_CONNECTBMS>, BluetoothConnectBmsAction>, {
makeComponent<MenuItem, StaticText<TEXT_DISCONNECTBMS>, BluetoothDisconnectAction>, public:
makeComponent<MenuItem, BluetoothHasClientText, DisabledColor, DummyAction>, BmsMenu()
makeComponent<MenuItem, StaticText<TEXT_TURNONCHARGE>, BmsTurnOnChargeAction>, {
makeComponent<MenuItem, StaticText<TEXT_TURNOFFCHARGE>, BmsTurnOffChargeAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_CONNECTBMS>, BluetoothConnectBmsAction>>();
makeComponent<MenuItem, StaticText<TEXT_TURNONDISCHARGE>, BmsTurnOnDischargeAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_DISCONNECTBMS>, BluetoothDisconnectAction>>();
makeComponent<MenuItem, StaticText<TEXT_TURNOFFDISCHARGE>, BmsTurnOffDischargeAction>, constructItem<makeComponent<MenuItem, BluetoothHasClientText, DisabledColor, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&icons::back>> constructItem<makeComponent<MenuItem, StaticText<TEXT_TURNONCHARGE>, BmsTurnOnChargeAction>>();
> constructItem<makeComponent<MenuItem, StaticText<TEXT_TURNOFFCHARGE>, BmsTurnOffChargeAction>>();
{}; constructItem<makeComponent<MenuItem, StaticText<TEXT_TURNONDISCHARGE>, BmsTurnOnDischargeAction>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_TURNOFFDISCHARGE>, BmsTurnOffDischargeAction>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&icons::back>>>();
}
};
#endif #endif
} } // namespace

View File

@ -1,7 +1,8 @@
#pragma once #pragma once
// local includes
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "utils.h" #include "utils.h"
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
#include "actions/dummyaction.h" #include "actions/dummyaction.h"
@ -12,13 +13,14 @@
#include "texts.h" #include "texts.h"
#include "settingsaccessors.h" #include "settingsaccessors.h"
// forward declares
namespace { namespace {
class BoardcomputerHardwareSettingsMenu; class BoardcomputerHardwareSettingsMenu;
class CalibrateDisplay; class CalibrateDisplay;
class GametrakCalibrateDisplay; class GametrakCalibrateDisplay;
class TimersMenu; class TimersMenu;
class SettingsMenu; class SettingsMenu;
} } // namespace
namespace { namespace {
struct GasText : public virtual TextInterface { struct GasText : public virtual TextInterface {
@ -138,35 +140,39 @@ class BoardcomputerHardwareSettingsMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<TEXT_BOARDCOMPUTERHARDWARESETTINGS>, public StaticText<TEXT_BOARDCOMPUTERHARDWARESETTINGS>,
public BackActionInterface<SwitchScreenAction<SettingsMenu>>, public BackActionInterface<SwitchScreenAction<SettingsMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, GasText, DisabledColor, StaticFont<2>, DummyAction>, {
makeComponent<MenuItem, BremsText, DisabledColor, StaticFont<2>, DummyAction>, public:
makeComponent<MenuItem, StaticText<TEXT_CALIBRATE>, SwitchScreenAction<CalibrateDisplay>>, BoardcomputerHardwareSettingsMenu()
makeComponent<MenuItem, StaticText<TEXT_SETSAMPLECOUNT>, SwitchScreenAction<SampleCountChangeScreen>>, {
makeComponent<MenuItem, StaticText<TEXT_SETGASMIN>, SwitchScreenAction<GasMinChangeScreen>>, constructItem<makeComponent<MenuItem, GasText, DisabledColor, StaticFont<2>, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_SETGASMAX>, SwitchScreenAction<GasMaxChangeScreen>>, constructItem<makeComponent<MenuItem, BremsText, DisabledColor, StaticFont<2>, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_SETBREMSMIN>, SwitchScreenAction<BremsMinChangeScreen>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_CALIBRATE>, SwitchScreenAction<CalibrateDisplay>>>();
makeComponent<MenuItem, StaticText<TEXT_SETBREMSMAX>, SwitchScreenAction<BremsMaxChangeScreen>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_SETSAMPLECOUNT>, SwitchScreenAction<SampleCountChangeScreen>>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_SETGASMIN>, SwitchScreenAction<GasMinChangeScreen>>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_SETGASMAX>, SwitchScreenAction<GasMaxChangeScreen>>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_SETBREMSMIN>, SwitchScreenAction<BremsMinChangeScreen>>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_SETBREMSMAX>, SwitchScreenAction<BremsMaxChangeScreen>>>();
#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) || defined(FEATURE_DPAD_5WIRESW) #if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) || defined(FEATURE_DPAD_5WIRESW)
makeComponent<MenuItem, StaticText<TEXT_SETDPADDEBOUNCE>, SwitchScreenAction<DPadDebounceChangeScreen>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_SETDPADDEBOUNCE>, SwitchScreenAction<DPadDebounceChangeScreen>>>();
#endif #endif
#ifdef FEATURE_GAMETRAK #ifdef FEATURE_GAMETRAK
makeComponent<MenuItem, StaticText<nullptr>, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<nullptr>, DummyAction>,
makeComponent<MenuItem, GametrakXText, DisabledColor, StaticFont<2>, DummyAction>, constructItem<makeComponent<MenuItem, GametrakXText, DisabledColor, StaticFont<2>, DummyAction>>();
makeComponent<MenuItem, GametrakYText, DisabledColor, StaticFont<2>, DummyAction>, constructItem<makeComponent<MenuItem, GametrakYText, DisabledColor, StaticFont<2>, DummyAction>>();
makeComponent<MenuItem, GametrakDistText, DisabledColor, StaticFont<2>, DummyAction>, constructItem<makeComponent<MenuItem, GametrakDistText, DisabledColor, StaticFont<2>, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_GAMETRAKCALIBRATE>, SwitchScreenAction<GametrakCalibrateDisplay>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_GAMETRAKCALIBRATE>, SwitchScreenAction<GametrakCalibrateDisplay>>>();
makeComponent<MenuItem, StaticText<TEXT_SETGAMETRAKXMIN>, SwitchScreenAction<GametrakXMinChangeScreen>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_SETGAMETRAKXMIN>, SwitchScreenAction<GametrakXMinChangeScreen>>>();
makeComponent<MenuItem, StaticText<TEXT_SETGAMETRAKXMAX>, SwitchScreenAction<GametrakXMaxChangeScreen>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_SETGAMETRAKXMAX>, SwitchScreenAction<GametrakXMaxChangeScreen>>>();
makeComponent<MenuItem, StaticText<TEXT_SETGAMETRAKYMIN>, SwitchScreenAction<GametrakYMinChangeScreen>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_SETGAMETRAKYMIN>, SwitchScreenAction<GametrakYMinChangeScreen>>>();
makeComponent<MenuItem, StaticText<TEXT_SETGAMETRAKYMAX>, SwitchScreenAction<GametrakYMaxChangeScreen>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_SETGAMETRAKYMAX>, SwitchScreenAction<GametrakYMaxChangeScreen>>>();
makeComponent<MenuItem, StaticText<TEXT_SETGAMETRAKDISTMIN>, SwitchScreenAction<GametrakDistMinChangeScreen>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_SETGAMETRAKDISTMIN>, SwitchScreenAction<GametrakDistMinChangeScreen>>>();
makeComponent<MenuItem, StaticText<TEXT_SETGAMETRAKDISTMAX>, SwitchScreenAction<GametrakDistMaxChangeScreen>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_SETGAMETRAKDISTMAX>, SwitchScreenAction<GametrakDistMaxChangeScreen>>>();
#endif #endif
makeComponent<MenuItem, StaticText<nullptr>, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<nullptr>, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_SWAPSCREENBYTES>, ToggleBoolAction, CheckboxIcon, SwapScreenBytesAccessor>, constructItem<makeComponent<MenuItem, StaticText<TEXT_SWAPSCREENBYTES>, ToggleBoolAction, CheckboxIcon, SwapScreenBytesAccessor>>();
makeComponent<MenuItem, StaticText<TEXT_TIMERS>, SwitchScreenAction<TimersMenu>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_TIMERS>, SwitchScreenAction<TimersMenu>>>();
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&icons::back>> constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&icons::back>>>();
> }
{}; };
} } // namespace

View File

@ -1,7 +1,8 @@
#pragma once #pragma once
// local includes
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "utils.h" #include "utils.h"
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
#include "menuitem.h" #include "menuitem.h"
@ -13,10 +14,11 @@
#include "globals.h" #include "globals.h"
#include "settingsaccessors.h" #include "settingsaccessors.h"
// forward declares
namespace { namespace {
class BuzzerMenu; class BuzzerMenu;
class SettingsMenu; class SettingsMenu;
} } // namespace
namespace { namespace {
struct FrontFreqAccessor : public RefAccessor<uint8_t> { uint8_t &getRef() const override { return controllers.front.command.buzzer.freq; } }; struct FrontFreqAccessor : public RefAccessor<uint8_t> { uint8_t &getRef() const override { return controllers.front.command.buzzer.freq; } };
@ -88,17 +90,21 @@ class BuzzerMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<TEXT_BUZZER>, public StaticText<TEXT_BUZZER>,
public BackActionInterface<SwitchScreenAction<SettingsMenu>>, public BackActionInterface<SwitchScreenAction<SettingsMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, StaticText<TEXT_FRONTFREQ>, SwitchScreenAction<FrontFreqChangeScreen>>, {
makeComponent<MenuItem, StaticText<TEXT_FRONTPATTERN>, SwitchScreenAction<FrontPatternChangeScreen>>, public:
makeComponent<MenuItem, StaticText<TEXT_BACKFREQ>, SwitchScreenAction<BackFreqChangeScreen>>, BuzzerMenu()
makeComponent<MenuItem, StaticText<TEXT_BACKPATTERN>, SwitchScreenAction<BackPatternChangeScreen>>, {
makeComponent<MenuItem, StaticText<TEXT_REVERSEBEEP>, ToggleBoolAction, CheckboxIcon, ReverseBeepAccessor>, constructItem<makeComponent<MenuItem, StaticText<TEXT_FRONTFREQ>, SwitchScreenAction<FrontFreqChangeScreen>>>();
makeComponent<MenuItem, StaticText<TEXT_REVERSEBEEPFREQ0>, SwitchScreenAction<ReverseBeepFreq0ChangeScreen>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_FRONTPATTERN>, SwitchScreenAction<FrontPatternChangeScreen>>>();
makeComponent<MenuItem, StaticText<TEXT_REVERSEBEEPFREQ1>, SwitchScreenAction<ReverseBeepFreq1ChangeScreen>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_BACKFREQ>, SwitchScreenAction<BackFreqChangeScreen>>>();
makeComponent<MenuItem, StaticText<TEXT_REVERSEBEEPDURATION0>, SwitchScreenAction<ReverseBeepDuration0ChangeScreen>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_BACKPATTERN>, SwitchScreenAction<BackPatternChangeScreen>>>();
makeComponent<MenuItem, StaticText<TEXT_REVERSEBEEPDURATION1>, SwitchScreenAction<ReverseBeepDuration1ChangeScreen>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_REVERSEBEEP>, ToggleBoolAction, CheckboxIcon, ReverseBeepAccessor>>();
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&icons::back>> constructItem<makeComponent<MenuItem, StaticText<TEXT_REVERSEBEEPFREQ0>, SwitchScreenAction<ReverseBeepFreq0ChangeScreen>>>();
> constructItem<makeComponent<MenuItem, StaticText<TEXT_REVERSEBEEPFREQ1>, SwitchScreenAction<ReverseBeepFreq1ChangeScreen>>>();
{}; constructItem<makeComponent<MenuItem, StaticText<TEXT_REVERSEBEEPDURATION0>, SwitchScreenAction<ReverseBeepDuration0ChangeScreen>>>();
} constructItem<makeComponent<MenuItem, StaticText<TEXT_REVERSEBEEPDURATION1>, SwitchScreenAction<ReverseBeepDuration1ChangeScreen>>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&icons::back>>>();
}
};
} // namespace

View File

@ -1,7 +1,8 @@
#pragma once #pragma once
// local includes
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "utils.h" #include "utils.h"
#include "menuitem.h" #include "menuitem.h"
#include "actions/dummyaction.h" #include "actions/dummyaction.h"
@ -10,9 +11,10 @@
#include "texts.h" #include "texts.h"
#include "debugtexthelpers.h" #include "debugtexthelpers.h"
// forward declares
namespace { namespace {
class DebugMenu; class DebugMenu;
} } // namespace
namespace { namespace {
template<const char *Ttext, typename Ttexts> template<const char *Ttext, typename Ttexts>
@ -20,15 +22,20 @@ class CommandDebugMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<Ttext>, public StaticText<Ttext>,
public BackActionInterface<SwitchScreenAction<DebugMenu>>, public BackActionInterface<SwitchScreenAction<DebugMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, typename Ttexts::BuzzerFreqText, DisabledColor, DummyAction>, {
makeComponent<MenuItem, typename Ttexts::BuzzerPatternText, DisabledColor, DummyAction>, public:
makeComponent<MenuItem, typename Ttexts::PoweroffText, DisabledColor, DummyAction>, CommandDebugMenu()
makeComponent<MenuItem, typename Ttexts::LedText, DisabledColor, DummyAction>, {
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<DebugMenu>, StaticMenuItemIcon<&icons::back>> constructItem<makeComponent<MenuItem, typename Ttexts::BuzzerFreqText, DisabledColor, DummyAction>>();
> constructItem<makeComponent<MenuItem, typename Ttexts::BuzzerPatternText, DisabledColor, DummyAction>>();
{}; constructItem<makeComponent<MenuItem, typename Ttexts::PoweroffText, DisabledColor, DummyAction>>();
constructItem<makeComponent<MenuItem, typename Ttexts::LedText, DisabledColor, DummyAction>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<DebugMenu>, StaticMenuItemIcon<&icons::back>>>();
}
};
class FrontCommandDebugMenu : public CommandDebugMenu<TEXT_FRONTCOMMAND, FrontTexts> {}; class FrontCommandDebugMenu : public CommandDebugMenu<TEXT_FRONTCOMMAND, FrontTexts> {};
class BackCommandDebugMenu : public CommandDebugMenu<TEXT_BACKCOMMAND, BackTexts> {}; class BackCommandDebugMenu : public CommandDebugMenu<TEXT_BACKCOMMAND, BackTexts> {};
}
} // namespace

View File

@ -2,8 +2,9 @@
#include <ratio> #include <ratio>
// local includes
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "utils.h" #include "utils.h"
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
#include "actions/toggleboolaction.h" #include "actions/toggleboolaction.h"
@ -14,13 +15,14 @@
#include "globals.h" #include "globals.h"
#include "settingsaccessors.h" #include "settingsaccessors.h"
// forward declares
namespace { namespace {
class ControllerHardwareSettingsMenu; class ControllerHardwareSettingsMenu;
class BoardcomputerHardwareSettingsMenu; class BoardcomputerHardwareSettingsMenu;
class EnableMenu; class EnableMenu;
class InvertMenu; class InvertMenu;
class SettingsMenu; class SettingsMenu;
} } // namespace
namespace { namespace {
using WheelDiameterMmChangeScreen = makeComponent< using WheelDiameterMmChangeScreen = makeComponent<
@ -50,14 +52,18 @@ class ControllerHardwareSettingsMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<TEXT_CONTROLLERHARDWARESETTINGS>, public StaticText<TEXT_CONTROLLERHARDWARESETTINGS>,
public BackActionInterface<SwitchScreenAction<SettingsMenu>>, public BackActionInterface<SwitchScreenAction<SettingsMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, StaticText<TEXT_SETENABLED>, SwitchScreenAction<EnableMenu>>, {
makeComponent<MenuItem, StaticText<TEXT_SETINVERTED>, SwitchScreenAction<InvertMenu>>, public:
makeComponent<MenuItem, StaticText<TEXT_WHEELDIAMETERMM>, SwitchScreenAction<WheelDiameterMmChangeScreen>>, ControllerHardwareSettingsMenu()
makeComponent<MenuItem, StaticText<TEXT_WHEELDIAMETERINCH>, SwitchScreenAction<WheelDiameterInchChangeScreen>>, {
makeComponent<MenuItem, StaticText<TEXT_NUMMAGNETPOLES>, SwitchScreenAction<NumMagnetPolesChangeScreen>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_SETENABLED>, SwitchScreenAction<EnableMenu>>>();
makeComponent<MenuItem, StaticText<TEXT_SWAPFRONTBACK>, ToggleBoolAction, CheckboxIcon, SwapFrontBackAccessor>, constructItem<makeComponent<MenuItem, StaticText<TEXT_SETINVERTED>, SwitchScreenAction<InvertMenu>>>();
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&icons::back>> constructItem<makeComponent<MenuItem, StaticText<TEXT_WHEELDIAMETERMM>, SwitchScreenAction<WheelDiameterMmChangeScreen>>>();
> constructItem<makeComponent<MenuItem, StaticText<TEXT_WHEELDIAMETERINCH>, SwitchScreenAction<WheelDiameterInchChangeScreen>>>();
{}; constructItem<makeComponent<MenuItem, StaticText<TEXT_NUMMAGNETPOLES>, SwitchScreenAction<NumMagnetPolesChangeScreen>>>();
} constructItem<makeComponent<MenuItem, StaticText<TEXT_SWAPFRONTBACK>, ToggleBoolAction, CheckboxIcon, SwapFrontBackAccessor>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&icons::back>>>();
}
};
} // namespace

View File

@ -1,7 +1,8 @@
#pragma once #pragma once
// local includes
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "utils.h" #include "utils.h"
#include "menuitem.h" #include "menuitem.h"
#include "actions/loadsettingsaction.h" #include "actions/loadsettingsaction.h"
@ -16,6 +17,7 @@
#include "texts.h" #include "texts.h"
#include "debugcolorhelpers.h" #include "debugcolorhelpers.h"
// forward declares
namespace { namespace {
class MainMenu; class MainMenu;
class FrontCommandDebugMenu; class FrontCommandDebugMenu;
@ -31,36 +33,40 @@ class FrontRightMotorFeedbackDebugMenu;
class BackLeftMotorFeedbackDebugMenu; class BackLeftMotorFeedbackDebugMenu;
class BackRightMotorFeedbackDebugMenu; class BackRightMotorFeedbackDebugMenu;
class DynamicDebugMenu; class DynamicDebugMenu;
} } // namespace
namespace { namespace {
class DebugMenu : class DebugMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<TEXT_DEBUG>, public StaticText<TEXT_DEBUG>,
public BackActionInterface<SwitchScreenAction<MainMenu>>, public BackActionInterface<SwitchScreenAction<MainMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, StaticText<TEXT_LOADSETTINGS>, LoadSettingsAction>, {
makeComponent<MenuItem, StaticText<TEXT_SAVESETTINGS>, SaveSettingsAction>, public:
makeComponent<MenuItem, StaticText<TEXT_ERASENVS>, EraseNvsAction>, DebugMenu()
makeComponent<MenuItem, StaticText<nullptr>, DummyAction>, {
makeComponent<MenuItem, StaticText<TEXT_FRONTCOMMAND>, SwitchScreenAction<FrontCommandDebugMenu>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_LOADSETTINGS>, LoadSettingsAction>>();
makeComponent<MenuItem, StaticText<TEXT_BACKCOMMAND>, SwitchScreenAction<BackCommandDebugMenu>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_SAVESETTINGS>, SaveSettingsAction>>();
makeComponent<MenuItem, StaticText<nullptr>, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_ERASENVS>, EraseNvsAction>>();
makeComponent<MenuItem, StaticText<TEXT_FRONTLEFTCOMMAND>, SwitchScreenAction<FrontLeftMotorStateDebugMenu>>, constructItem<makeComponent<MenuItem, StaticText<nullptr>, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_FRONTRIGHTCOMMAND>, SwitchScreenAction<FrontRightMotorStateDebugMenu>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_FRONTCOMMAND>, SwitchScreenAction<FrontCommandDebugMenu>>>();
makeComponent<MenuItem, StaticText<TEXT_BACKLEFTCOMMAND>, SwitchScreenAction<BackLeftMotorStateDebugMenu>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_BACKCOMMAND>, SwitchScreenAction<BackCommandDebugMenu>>>();
makeComponent<MenuItem, StaticText<TEXT_BACKRIGHTCOMMAND>, SwitchScreenAction<BackRightMotorStateDebugMenu>>, constructItem<makeComponent<MenuItem, StaticText<nullptr>, DummyAction>>();
makeComponent<MenuItem, StaticText<nullptr>, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_FRONTLEFTCOMMAND>, SwitchScreenAction<FrontLeftMotorStateDebugMenu>>>();
makeComponent<MenuItem, StaticText<TEXT_FRONTFEEDBACK>, SwitchScreenAction<FrontFeedbackDebugMenu>, FrontFeedbackColor<TFT_WHITE>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_FRONTRIGHTCOMMAND>, SwitchScreenAction<FrontRightMotorStateDebugMenu>>>();
makeComponent<MenuItem, StaticText<TEXT_BACKFEEDBACK>, SwitchScreenAction<BackFeedbackDebugMenu>, BackFeedbackColor<TFT_WHITE>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_BACKLEFTCOMMAND>, SwitchScreenAction<BackLeftMotorStateDebugMenu>>>();
makeComponent<MenuItem, StaticText<nullptr>, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_BACKRIGHTCOMMAND>, SwitchScreenAction<BackRightMotorStateDebugMenu>>>();
makeComponent<MenuItem, StaticText<TEXT_FRONTLEFTFEEDBACK>, SwitchScreenAction<FrontLeftMotorFeedbackDebugMenu>, FrontFeedbackColor<TFT_WHITE>>, constructItem<makeComponent<MenuItem, StaticText<nullptr>, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_FRONTRIGHTFEEDBACK>, SwitchScreenAction<FrontRightMotorFeedbackDebugMenu>, FrontFeedbackColor<TFT_WHITE>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_FRONTFEEDBACK>, SwitchScreenAction<FrontFeedbackDebugMenu>, FrontFeedbackColor<TFT_WHITE>>>();
makeComponent<MenuItem, StaticText<TEXT_BACKLEFTFEEDBACK>, SwitchScreenAction<BackLeftMotorFeedbackDebugMenu>, BackFeedbackColor<TFT_WHITE>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_BACKFEEDBACK>, SwitchScreenAction<BackFeedbackDebugMenu>, BackFeedbackColor<TFT_WHITE>>>();
makeComponent<MenuItem, StaticText<TEXT_BACKRIGHTFEEDBACK>, SwitchScreenAction<BackRightMotorFeedbackDebugMenu>, BackFeedbackColor<TFT_WHITE>>, constructItem<makeComponent<MenuItem, StaticText<nullptr>, DummyAction>>();
makeComponent<MenuItem, StaticText<nullptr>, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_FRONTLEFTFEEDBACK>, SwitchScreenAction<FrontLeftMotorFeedbackDebugMenu>, FrontFeedbackColor<TFT_WHITE>>>();
makeComponent<MenuItem, StaticText<TEXT_DYNAMICMENU>, SwitchScreenAction<DynamicDebugMenu>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_FRONTRIGHTFEEDBACK>, SwitchScreenAction<FrontRightMotorFeedbackDebugMenu>, FrontFeedbackColor<TFT_WHITE>>>();
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&icons::back>> constructItem<makeComponent<MenuItem, StaticText<TEXT_BACKLEFTFEEDBACK>, SwitchScreenAction<BackLeftMotorFeedbackDebugMenu>, BackFeedbackColor<TFT_WHITE>>>();
> constructItem<makeComponent<MenuItem, StaticText<TEXT_BACKRIGHTFEEDBACK>, SwitchScreenAction<BackRightMotorFeedbackDebugMenu>, BackFeedbackColor<TFT_WHITE>>>();
{}; constructItem<makeComponent<MenuItem, StaticText<nullptr>, DummyAction>>();
} constructItem<makeComponent<MenuItem, StaticText<TEXT_DYNAMICMENU>, SwitchScreenAction<DynamicDebugMenu>>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&icons::back>>>();
}
};
} // namespace

View File

@ -1,7 +1,8 @@
#pragma once #pragma once
// local includes
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "utils.h" #include "utils.h"
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
#include "menuitem.h" #include "menuitem.h"
@ -12,10 +13,11 @@
#include "texts.h" #include "texts.h"
#include "settingsaccessors.h" #include "settingsaccessors.h"
// forward declares
namespace { namespace {
class DefaultModeSettingsMenu; class DefaultModeSettingsMenu;
class ModesSettingsMenu; class ModesSettingsMenu;
} } // namespace
namespace { namespace {
using DefaultModeModelModeChangeDisplay = makeComponent< using DefaultModeModelModeChangeDisplay = makeComponent<
@ -86,20 +88,24 @@ class DefaultModeSettingsMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<TEXT_DEFAULTMODESETTIGNS>, public StaticText<TEXT_DEFAULTMODESETTIGNS>,
public BackActionInterface<SwitchScreenAction<ModesSettingsMenu>>, public BackActionInterface<SwitchScreenAction<ModesSettingsMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, StaticText<TEXT_SETMODELMODE>, SwitchScreenAction<DefaultModeModelModeChangeDisplay>>, {
makeComponent<MenuItem, StaticText<TEXT_SQUAREGAS>, ToggleBoolAction, CheckboxIcon, DefaultModeSquareGasAccessor>, public:
makeComponent<MenuItem, StaticText<TEXT_SQUAREBREMS>, ToggleBoolAction, CheckboxIcon, DefaultModeSquareBremsAccessor>, DefaultModeSettingsMenu()
makeComponent<MenuItem, StaticText<TEXT_ENABLESMOOTHING>, ToggleBoolAction, CheckboxIcon, DefaultModeEnableSmoothingAccessor>, {
makeComponent<MenuItem, StaticText<TEXT_SETSMOOTHING>, SwitchScreenAction<DefaultModeSmoothingChangeDisplay>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_SETMODELMODE>, SwitchScreenAction<DefaultModeModelModeChangeDisplay>>>();
makeComponent<MenuItem, StaticText<TEXT_SETFRONTPERCENTAGE>, SwitchScreenAction<DefaultModeFrontPercentageChangeDisplay>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_SQUAREGAS>, ToggleBoolAction, CheckboxIcon, DefaultModeSquareGasAccessor>>();
makeComponent<MenuItem, StaticText<TEXT_SETBACKPERCENTAGE>, SwitchScreenAction<DefaultModeBackPercentageChangeDisplay>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_SQUAREBREMS>, ToggleBoolAction, CheckboxIcon, DefaultModeSquareBremsAccessor>>();
makeComponent<MenuItem, StaticText<TEXT_SETADDSCHWELLE>, SwitchScreenAction<DefaultModeAddSchwelleChangeDisplay>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_ENABLESMOOTHING>, ToggleBoolAction, CheckboxIcon, DefaultModeEnableSmoothingAccessor>>();
makeComponent<MenuItem, StaticText<TEXT_SETGAS1WERT>, SwitchScreenAction<DefaultModeGas1WertChangeDisplay>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_SETSMOOTHING>, SwitchScreenAction<DefaultModeSmoothingChangeDisplay>>>();
makeComponent<MenuItem, StaticText<TEXT_SETGAS2WERT>, SwitchScreenAction<DefaultModeGas2WertChangeDisplay>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_SETFRONTPERCENTAGE>, SwitchScreenAction<DefaultModeFrontPercentageChangeDisplay>>>();
makeComponent<MenuItem, StaticText<TEXT_SETBREMS1WERT>, SwitchScreenAction<DefaultModeBrems1WertChangeDisplay>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_SETBACKPERCENTAGE>, SwitchScreenAction<DefaultModeBackPercentageChangeDisplay>>>();
makeComponent<MenuItem, StaticText<TEXT_SETBREMS2WERT>, SwitchScreenAction<DefaultModeBrems2WertChangeDisplay>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_SETADDSCHWELLE>, SwitchScreenAction<DefaultModeAddSchwelleChangeDisplay>>>();
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<ModesSettingsMenu>, StaticMenuItemIcon<&icons::back>> constructItem<makeComponent<MenuItem, StaticText<TEXT_SETGAS1WERT>, SwitchScreenAction<DefaultModeGas1WertChangeDisplay>>>();
> constructItem<makeComponent<MenuItem, StaticText<TEXT_SETGAS2WERT>, SwitchScreenAction<DefaultModeGas2WertChangeDisplay>>>();
{}; constructItem<makeComponent<MenuItem, StaticText<TEXT_SETBREMS1WERT>, SwitchScreenAction<DefaultModeBrems1WertChangeDisplay>>>();
} constructItem<makeComponent<MenuItem, StaticText<TEXT_SETBREMS2WERT>, SwitchScreenAction<DefaultModeBrems2WertChangeDisplay>>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<ModesSettingsMenu>, StaticMenuItemIcon<&icons::back>>>();
}
};
} // namespace

View File

@ -1,32 +1,38 @@
#pragma once #pragma once
// local includes
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "utils.h" #include "utils.h"
#include "menuitem.h" #include "menuitem.h"
#include "actions/switchscreenaction.h" #include "actions/switchscreenaction.h"
#include "icons/back.h" #include "icons/back.h"
#include "texts.h" #include "texts.h"
// forward declares
namespace { namespace {
class StarfieldDisplay; class StarfieldDisplay;
class PingPongDisplay; class PingPongDisplay;
class SpiroDisplay; class SpiroDisplay;
class GameOfLifeDisplay; class GameOfLifeDisplay;
class MainMenu; class MainMenu;
} } // namespace
namespace { namespace {
class DemosMenu : class DemosMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<TEXT_DEMOS>, public StaticText<TEXT_DEMOS>,
public BackActionInterface<SwitchScreenAction<MainMenu>>, public BackActionInterface<SwitchScreenAction<MainMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, StaticText<TEXT_STARFIELD>, SwitchScreenAction<StarfieldDisplay>>, {
makeComponent<MenuItem, StaticText<TEXT_PINGPONG>, SwitchScreenAction<PingPongDisplay>>, public:
makeComponent<MenuItem, StaticText<TEXT_SPIRO>, SwitchScreenAction<SpiroDisplay>>, DemosMenu()
makeComponent<MenuItem, StaticText<TEXT_GAMEOFLIFE>, SwitchScreenAction<GameOfLifeDisplay>>, {
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&icons::back>> constructItem<makeComponent<MenuItem, StaticText<TEXT_STARFIELD>, SwitchScreenAction<StarfieldDisplay>>>();
> constructItem<makeComponent<MenuItem, StaticText<TEXT_PINGPONG>, SwitchScreenAction<PingPongDisplay>>>();
{}; constructItem<makeComponent<MenuItem, StaticText<TEXT_SPIRO>, SwitchScreenAction<SpiroDisplay>>>();
} constructItem<makeComponent<MenuItem, StaticText<TEXT_GAMEOFLIFE>, SwitchScreenAction<GameOfLifeDisplay>>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&icons::back>>>();
}
};
} // namespace

View File

@ -1,10 +1,12 @@
#pragma once #pragma once
// Arduino includes
#include <Arduino.h> #include <Arduino.h>
#include <WString.h> #include <WString.h>
// local includes
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "utils.h" #include "utils.h"
#include "menuitem.h" #include "menuitem.h"
#include "actions/switchscreenaction.h" #include "actions/switchscreenaction.h"
@ -16,9 +18,10 @@
#include "texts.h" #include "texts.h"
#include "types.h" #include "types.h"
// forward declares
namespace { namespace {
class DebugMenu; class DebugMenu;
} } // namespace
namespace { namespace {
class RandomText : public virtual TextInterface class RandomText : public virtual TextInterface
@ -123,33 +126,37 @@ class DynamicDebugMenu :
public MenuDisplay, public MenuDisplay,
public RandomText, public RandomText,
public BackActionInterface<SwitchScreenAction<DebugMenu>>, public BackActionInterface<SwitchScreenAction<DebugMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
{
public:
DynamicDebugMenu()
{
// dummy items to allow for scrolling // dummy items to allow for scrolling
makeComponent<MenuItem, StaticText<TEXT_DUMMYITEM>, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_DUMMYITEM>, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_DUMMYITEM>, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_DUMMYITEM>, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_DUMMYITEM>, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_DUMMYITEM>, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_DUMMYITEM>, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_DUMMYITEM>, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_DUMMYITEM>, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_DUMMYITEM>, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_DUMMYITEM>, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_DUMMYITEM>, DummyAction>>();
// the interesting bits // the interesting bits
makeComponent<MenuItem, RandomText, DummyAction>, constructItem<makeComponent<MenuItem, RandomText, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_DYNAMICCOLOR>, RandomColor, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_DYNAMICCOLOR>, RandomColor, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_DYNAMICFONT>, RandomFont, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_DYNAMICFONT>, RandomFont, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_DYNAMICICON>, RandomIcon, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_DYNAMICICON>, RandomIcon, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_STATICICON>, StaticMenuItemIcon<&icons::lock>, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_STATICICON>, StaticMenuItemIcon<&icons::lock>, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_DEBUGTOGGLE>, ToggleBoolAction, CheckboxIcon, ToggleAccessor>, constructItem<makeComponent<MenuItem, StaticText<TEXT_DEBUGTOGGLE>, ToggleBoolAction, CheckboxIcon, ToggleAccessor>>();
makeComponent<MenuItem, RandomText, RandomColor, RandomFont, RandomIcon, DummyAction>, constructItem<makeComponent<MenuItem, RandomText, RandomColor, RandomFont, RandomIcon, DummyAction>>();
// more scrolling // more scrolling
makeComponent<MenuItem, StaticText<TEXT_DUMMYITEM>, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_DUMMYITEM>, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_DUMMYITEM>, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_DUMMYITEM>, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_DUMMYITEM>, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_DUMMYITEM>, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_DUMMYITEM>, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_DUMMYITEM>, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_DUMMYITEM>, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_DUMMYITEM>, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_DUMMYITEM>, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_DUMMYITEM>, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<DebugMenu>, StaticMenuItemIcon<&icons::back>> constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<DebugMenu>, StaticMenuItemIcon<&icons::back>>>();
> }
{}; };
} } // namespace

View File

@ -1,7 +1,8 @@
#pragma once #pragma once
// local includes
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "utils.h" #include "utils.h"
#include "menuitem.h" #include "menuitem.h"
#include "actions/toggleboolaction.h" #include "actions/toggleboolaction.h"
@ -11,21 +12,26 @@
#include "texts.h" #include "texts.h"
#include "settingsaccessors.h" #include "settingsaccessors.h"
// forward declares
namespace { namespace {
class ControllerHardwareSettingsMenu; class ControllerHardwareSettingsMenu;
} } // namespace
namespace { namespace {
class EnableMenu : class EnableMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<TEXT_SETENABLED>, public StaticText<TEXT_SETENABLED>,
public BackActionInterface<SwitchScreenAction<ControllerHardwareSettingsMenu>>, public BackActionInterface<SwitchScreenAction<ControllerHardwareSettingsMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, StaticText<TEXT_ENABLEFRONTLEFT>, ToggleBoolAction, CheckboxIcon, FrontLeftEnabledAccessor>, {
makeComponent<MenuItem, StaticText<TEXT_ENABLEFRONTRIGHT>, ToggleBoolAction, CheckboxIcon, FrontRightEnabledAccessor>, public:
makeComponent<MenuItem, StaticText<TEXT_ENABLEBACKLEFT>, ToggleBoolAction, CheckboxIcon, BackLeftEnabledAccessor>, EnableMenu()
makeComponent<MenuItem, StaticText<TEXT_ENABLEBACKRIGHT>, ToggleBoolAction, CheckboxIcon, BackRightEnabledAccessor>, {
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<ControllerHardwareSettingsMenu>, StaticMenuItemIcon<&icons::back>> constructItem<makeComponent<MenuItem, StaticText<TEXT_ENABLEFRONTLEFT>, ToggleBoolAction, CheckboxIcon, FrontLeftEnabledAccessor>>();
> constructItem<makeComponent<MenuItem, StaticText<TEXT_ENABLEFRONTRIGHT>, ToggleBoolAction, CheckboxIcon, FrontRightEnabledAccessor>>();
{}; constructItem<makeComponent<MenuItem, StaticText<TEXT_ENABLEBACKLEFT>, ToggleBoolAction, CheckboxIcon, BackLeftEnabledAccessor>>();
} constructItem<makeComponent<MenuItem, StaticText<TEXT_ENABLEBACKRIGHT>, ToggleBoolAction, CheckboxIcon, BackRightEnabledAccessor>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<ControllerHardwareSettingsMenu>, StaticMenuItemIcon<&icons::back>>>();
}
};
} // namespace

View File

@ -1,7 +1,8 @@
#pragma once #pragma once
// local includes
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "utils.h" #include "utils.h"
#include "menuitem.h" #include "menuitem.h"
#include "actions/dummyaction.h" #include "actions/dummyaction.h"
@ -11,9 +12,10 @@
#include "debugtexthelpers.h" #include "debugtexthelpers.h"
#include "debugcolorhelpers.h" #include "debugcolorhelpers.h"
// forward declares
namespace { namespace {
class DebugMenu; class DebugMenu;
} } // namespace
namespace { namespace {
template<const char *Ttext, typename Ttexts, template<int> class ColorInterface> template<const char *Ttext, typename Ttexts, template<int> class ColorInterface>
@ -21,15 +23,21 @@ class FeedbackDebugMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<Ttext>, public StaticText<Ttext>,
public BackActionInterface<SwitchScreenAction<DebugMenu>>, public BackActionInterface<SwitchScreenAction<DebugMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, typename Ttexts::BatVoltageText, ColorInterface<TFT_DARKGREY>, DummyAction>, {
makeComponent<MenuItem, typename Ttexts::BatVoltageFixedText, ColorInterface<TFT_DARKGREY>, DummyAction>, public:
makeComponent<MenuItem, typename Ttexts::BoardTempText, ColorInterface<TFT_DARKGREY>, DummyAction>, FeedbackDebugMenu()
makeComponent<MenuItem, typename Ttexts::BoardTempFixedText, ColorInterface<TFT_DARKGREY>, DummyAction>, {
makeComponent<MenuItem, typename Ttexts::TimeoutCntSerialText, StaticFont<2>, ColorInterface<TFT_DARKGREY>, DummyAction>, constructItem<makeComponent<MenuItem, typename Ttexts::BatVoltageText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<DebugMenu>, StaticMenuItemIcon<&icons::back>> constructItem<makeComponent<MenuItem, typename Ttexts::BatVoltageFixedText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
> constructItem<makeComponent<MenuItem, typename Ttexts::BoardTempText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
{}; constructItem<makeComponent<MenuItem, typename Ttexts::BoardTempFixedText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
constructItem<makeComponent<MenuItem, typename Ttexts::TimeoutCntSerialText, StaticFont<2>, ColorInterface<TFT_DARKGREY>, DummyAction>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<DebugMenu>, StaticMenuItemIcon<&icons::back>>>();
}
};
class FrontFeedbackDebugMenu : public FeedbackDebugMenu<TEXT_FRONTFEEDBACK, FrontTexts, FrontFeedbackColor> {}; class FrontFeedbackDebugMenu : public FeedbackDebugMenu<TEXT_FRONTFEEDBACK, FrontTexts, FrontFeedbackColor> {};
class BackFeedbackDebugMenu : public FeedbackDebugMenu<TEXT_BACKFEEDBACK, BackTexts, FrontFeedbackColor> {}; } class BackFeedbackDebugMenu : public FeedbackDebugMenu<TEXT_BACKFEEDBACK, BackTexts, FrontFeedbackColor> {};
} // namespace

View File

@ -1,26 +1,32 @@
#pragma once #pragma once
// local includes
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "utils.h" #include "utils.h"
#include "menuitem.h" #include "menuitem.h"
#include "actions/switchscreenaction.h" #include "actions/switchscreenaction.h"
#include "icons/back.h" #include "icons/back.h"
#include "texts.h" #include "texts.h"
// forward declares
namespace { namespace {
class ModesSettingsMenu; class ModesSettingsMenu;
} } // namespace
namespace { namespace {
#ifdef FEATURE_GAMETRAK #ifdef FEATURE_GAMETRAK
class GametrakModeSettingsMenu : class ContainerModeSettingsMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<TEXT_GAMETRAKMODESETTINGS>, public StaticText<TEXT_GAMETRAKMODESETTINGS>,
public BackActionInterface<SwitchScreenAction<ModesSettingsMenu>>, public BackActionInterface<SwitchScreenAction<ModesSettingsMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<ModesSettingsMenu>, StaticMenuItemIcon<&icons::back>> {
> public:
{}; ContainerModeSettingsMenu()
{
constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<ModesSettingsMenu>, StaticMenuItemIcon<&icons::back>>>();
}
};
#endif #endif
} } // namespace

View File

@ -1,9 +1,11 @@
#pragma once #pragma once
// Arduino includes
#include <HardwareSerial.h> #include <HardwareSerial.h>
// local includes
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
#include "menuitem.h" #include "menuitem.h"
#include "actions/dummyaction.h" #include "actions/dummyaction.h"
@ -15,10 +17,11 @@
#include "wifiaccessors.h" #include "wifiaccessors.h"
#include "texts.h" #include "texts.h"
// forward declares
namespace { namespace {
class GenericWifiSettingsMenu; class GenericWifiSettingsMenu;
class WifiSettingsMenu; class WifiSettingsMenu;
} } // namespace
namespace { namespace {
using WifiModeChangeScreen = makeComponent< using WifiModeChangeScreen = makeComponent<
@ -41,13 +44,17 @@ class GenericWifiSettingsMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<TEXT_GENERICWIFISETTINGS>, public StaticText<TEXT_GENERICWIFISETTINGS>,
public BackActionInterface<SwitchScreenAction<WifiSettingsMenu>>, public BackActionInterface<SwitchScreenAction<WifiSettingsMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, WifiStatusBitsText, DisabledColor, DummyAction>, {
makeComponent<MenuItem, WifiChannelText, DisabledColor, DummyAction>, public:
makeComponent<MenuItem, StaticText<TEXT_WIFICHANGEMODE>, SwitchScreenAction<WifiModeChangeScreen>>, GenericWifiSettingsMenu()
makeComponent<MenuItem, StaticText<TEXT_WIFICHANGESLEEP>, ToggleBoolAction, CheckboxIcon, WifiSleepAccessor>, {
makeComponent<MenuItem, StaticText<TEXT_WIFICHANGETXPOWER>, SwitchScreenAction<WifiTxPowerChangeScreen>>, constructItem<makeComponent<MenuItem, WifiStatusBitsText, DisabledColor, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<WifiSettingsMenu>, StaticMenuItemIcon<&icons::back>> constructItem<makeComponent<MenuItem, WifiChannelText, DisabledColor, DummyAction>>();
> constructItem<makeComponent<MenuItem, StaticText<TEXT_WIFICHANGEMODE>, SwitchScreenAction<WifiModeChangeScreen>>>();
{}; constructItem<makeComponent<MenuItem, StaticText<TEXT_WIFICHANGESLEEP>, ToggleBoolAction, CheckboxIcon, WifiSleepAccessor>>();
} constructItem<makeComponent<MenuItem, StaticText<TEXT_WIFICHANGETXPOWER>, SwitchScreenAction<WifiTxPowerChangeScreen>>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<WifiSettingsMenu>, StaticMenuItemIcon<&icons::back>>>();
}
};
} // namespace

View File

@ -1,7 +1,8 @@
#pragma once #pragma once
// local includes
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "utils.h" #include "utils.h"
#include "actions/switchscreenaction.h" #include "actions/switchscreenaction.h"
#include "icons/back.h" #include "icons/back.h"
@ -10,10 +11,11 @@
#include "displays/splitgraphdisplay.h" #include "displays/splitgraphdisplay.h"
#include "statistics.h" #include "statistics.h"
// forward declares
namespace { namespace {
class MainMenu; class MainMenu;
class GraphsMenu; class GraphsMenu;
} } // namespace
namespace { namespace {
using GasGraphDisplay = makeComponent< using GasGraphDisplay = makeComponent<
@ -149,26 +151,30 @@ class GraphsMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<TEXT_GRAPHS>, public StaticText<TEXT_GRAPHS>,
public BackActionInterface<SwitchScreenAction<MainMenu>>, public BackActionInterface<SwitchScreenAction<MainMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, StaticText<TEXT_GAS>, SwitchScreenAction<GasGraphDisplay>>, {
makeComponent<MenuItem, StaticText<TEXT_BREMS>, SwitchScreenAction<BremsGraphDisplay>>, public:
makeComponent<MenuItem, StaticText<TEXT_POTIS>, SwitchScreenAction<PotisGraphDisplay>>, GraphsMenu()
makeComponent<MenuItem, StaticText<TEXT_POTIS>, SwitchScreenAction<PotisSplitGraphDisplay>>, {
makeComponent<MenuItem, StaticText<TEXT_AVGSPEED>, SwitchScreenAction<AvgSpeedGraphDisplay>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_GAS>, SwitchScreenAction<GasGraphDisplay>>>();
makeComponent<MenuItem, StaticText<TEXT_AVGSPEEDKMH>, SwitchScreenAction<AvgSpeedKmhGraphDisplay>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_BREMS>, SwitchScreenAction<BremsGraphDisplay>>>();
makeComponent<MenuItem, StaticText<TEXT_SUMCURRENT>, SwitchScreenAction<SumCurrentGraphDisplay>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_POTIS>, SwitchScreenAction<PotisGraphDisplay>>>();
makeComponent<MenuItem, StaticText<TEXT_FRONTVOLTAGE>, SwitchScreenAction<FrontVoltageGraphDisplay>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_POTIS>, SwitchScreenAction<PotisSplitGraphDisplay>>>();
makeComponent<MenuItem, StaticText<TEXT_BACKVOLTAGE>, SwitchScreenAction<BackVoltageGraphDisplay>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_AVGSPEED>, SwitchScreenAction<AvgSpeedGraphDisplay>>>();
makeComponent<MenuItem, StaticText<TEXT_VOLTAGES>, SwitchScreenAction<VoltagesGraphDisplay>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_AVGSPEEDKMH>, SwitchScreenAction<AvgSpeedKmhGraphDisplay>>>();
makeComponent<MenuItem, StaticText<TEXT_VOLTAGES>, SwitchScreenAction<VoltagesSplitGraphDisplay>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_SUMCURRENT>, SwitchScreenAction<SumCurrentGraphDisplay>>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_FRONTVOLTAGE>, SwitchScreenAction<FrontVoltageGraphDisplay>>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_BACKVOLTAGE>, SwitchScreenAction<BackVoltageGraphDisplay>>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_VOLTAGES>, SwitchScreenAction<VoltagesGraphDisplay>>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_VOLTAGES>, SwitchScreenAction<VoltagesSplitGraphDisplay>>>();
#ifdef FEATURE_BMS #ifdef FEATURE_BMS
makeComponent<MenuItem, StaticText<TEXT_BMSVOLTAGE>, SwitchScreenAction<BmsVoltageGraphDisplay>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_BMSVOLTAGE>, SwitchScreenAction<BmsVoltageGraphDisplay>>>();
makeComponent<MenuItem, StaticText<TEXT_BMSCURRENT>, SwitchScreenAction<BmsCurrentGraphDisplay>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_BMSCURRENT>, SwitchScreenAction<BmsCurrentGraphDisplay>>>();
makeComponent<MenuItem, StaticText<TEXT_BMSPOWER>, SwitchScreenAction<BmsPowerGraphDisplay>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_BMSPOWER>, SwitchScreenAction<BmsPowerGraphDisplay>>>();
makeComponent<MenuItem, StaticText<TEXT_SUMCURRENTSCOMPARISON>, SwitchScreenAction<SumCurrentsComparisonGraphDisplay>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_SUMCURRENTSCOMPARISON>, SwitchScreenAction<SumCurrentsComparisonGraphDisplay>>>();
#endif #endif
makeComponent<MenuItem, StaticText<TEXT_MOTORCURRENTS>, SwitchScreenAction<MotorCurrentsGraphDisplay>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_MOTORCURRENTS>, SwitchScreenAction<MotorCurrentsGraphDisplay>>>();
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&icons::back>> constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&icons::back>>>();
> }
{}; };
} } // namespace

View File

@ -1,7 +1,8 @@
#pragma once #pragma once
// local includes
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "utils.h" #include "utils.h"
#include "menuitem.h" #include "menuitem.h"
#include "actions/toggleboolaction.h" #include "actions/toggleboolaction.h"
@ -11,21 +12,26 @@
#include "texts.h" #include "texts.h"
#include "settingsaccessors.h" #include "settingsaccessors.h"
// forward declares
namespace { namespace {
class ControllerHardwareSettingsMenu; class ControllerHardwareSettingsMenu;
} } // namespace
namespace { namespace {
class InvertMenu : class InvertMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<TEXT_SETINVERTED>, public StaticText<TEXT_SETINVERTED>,
public BackActionInterface<SwitchScreenAction<ControllerHardwareSettingsMenu>>, public BackActionInterface<SwitchScreenAction<ControllerHardwareSettingsMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, StaticText<TEXT_INVERTFRONTLEFT>, ToggleBoolAction, CheckboxIcon, FrontLeftInvertedAccessor>, {
makeComponent<MenuItem, StaticText<TEXT_INVERTFRONTRIGHT>, ToggleBoolAction, CheckboxIcon, FrontRightInvertedAccessor>, public:
makeComponent<MenuItem, StaticText<TEXT_INVERTBACKLEFT>, ToggleBoolAction, CheckboxIcon, BackLeftInvertedAccessor>, InvertMenu()
makeComponent<MenuItem, StaticText<TEXT_INVERTBACKRIGHT>, ToggleBoolAction, CheckboxIcon, BackRightInvertedAccessor>, {
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<ControllerHardwareSettingsMenu>, StaticMenuItemIcon<&icons::back>> constructItem<makeComponent<MenuItem, StaticText<TEXT_INVERTFRONTLEFT>, ToggleBoolAction, CheckboxIcon, FrontLeftInvertedAccessor>>();
> constructItem<makeComponent<MenuItem, StaticText<TEXT_INVERTFRONTRIGHT>, ToggleBoolAction, CheckboxIcon, FrontRightInvertedAccessor>>();
{}; constructItem<makeComponent<MenuItem, StaticText<TEXT_INVERTBACKLEFT>, ToggleBoolAction, CheckboxIcon, BackLeftInvertedAccessor>>();
} constructItem<makeComponent<MenuItem, StaticText<TEXT_INVERTBACKRIGHT>, ToggleBoolAction, CheckboxIcon, BackRightInvertedAccessor>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<ControllerHardwareSettingsMenu>, StaticMenuItemIcon<&icons::back>>>();
}
};
} // namespace

View File

@ -1,7 +1,8 @@
#pragma once #pragma once
// local includes
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "utils.h" #include "utils.h"
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
#include "menuitem.h" #include "menuitem.h"
@ -10,10 +11,11 @@
#include "texts.h" #include "texts.h"
#include "settingsaccessors.h" #include "settingsaccessors.h"
// forward declares
namespace { namespace {
class LarsmModeSettingsMenu; class LarsmModeSettingsMenu;
class ModesSettingsMenu; class ModesSettingsMenu;
} } // namespace
namespace { namespace {
using LarsmModeModelModeChangeDisplay = makeComponent< using LarsmModeModelModeChangeDisplay = makeComponent<
@ -42,11 +44,15 @@ class LarsmModeSettingsMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<TEXT_LARSMMODESETTINGS>, public StaticText<TEXT_LARSMMODESETTINGS>,
public BackActionInterface<SwitchScreenAction<ModesSettingsMenu>>, public BackActionInterface<SwitchScreenAction<ModesSettingsMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, StaticText<TEXT_SETMODELMODE>, SwitchScreenAction<LarsmModeModelModeChangeDisplay>>, {
makeComponent<MenuItem, StaticText<TEXT_SETMODE>, SwitchScreenAction<LarsmModeModeChangeDisplay>>, public:
makeComponent<MenuItem, StaticText<TEXT_SETITERATIONS>, SwitchScreenAction<LarsmModeIterationsChangeDisplay>>, LarsmModeSettingsMenu()
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<ModesSettingsMenu>, StaticMenuItemIcon<&icons::back>> {
> constructItem<makeComponent<MenuItem, StaticText<TEXT_SETMODELMODE>, SwitchScreenAction<LarsmModeModelModeChangeDisplay>>>();
{}; constructItem<makeComponent<MenuItem, StaticText<TEXT_SETMODE>, SwitchScreenAction<LarsmModeModeChangeDisplay>>>();
} constructItem<makeComponent<MenuItem, StaticText<TEXT_SETITERATIONS>, SwitchScreenAction<LarsmModeIterationsChangeDisplay>>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<ModesSettingsMenu>, StaticMenuItemIcon<&icons::back>>>();
}
};
} // namespace

View File

@ -1,7 +1,8 @@
#pragma once #pragma once
// local includes
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "utils.h" #include "utils.h"
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
#include "menuitem.h" #include "menuitem.h"
@ -10,10 +11,11 @@
#include "texts.h" #include "texts.h"
#include "settingsaccessors.h" #include "settingsaccessors.h"
// forward declares
namespace { namespace {
class LimitsSettingsMenu; class LimitsSettingsMenu;
class SettingsMenu; class SettingsMenu;
} } // namespace
namespace { namespace {
using IMotMaxChangeScreen = makeComponent< using IMotMaxChangeScreen = makeComponent<
@ -63,14 +65,18 @@ class LimitsSettingsMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<TEXT_LIMITSSETTINGS>, public StaticText<TEXT_LIMITSSETTINGS>,
public BackActionInterface<SwitchScreenAction<SettingsMenu>>, public BackActionInterface<SwitchScreenAction<SettingsMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, StaticText<TEXT_SETIMOTMAX>, SwitchScreenAction<IMotMaxChangeScreen>>, {
makeComponent<MenuItem, StaticText<TEXT_SETIDCMAX>, SwitchScreenAction<IDcMaxChangeScreen>>, public:
makeComponent<MenuItem, StaticText<TEXT_SETNMOTMAXKMH>, SwitchScreenAction<NMotMaxKmhChangeScreen>>, LimitsSettingsMenu()
makeComponent<MenuItem, StaticText<TEXT_SETNMOTMAX>, SwitchScreenAction<NMotMaxRpmChangeScreen>>, {
makeComponent<MenuItem, StaticText<TEXT_SETFIELDWEAKMAX>, SwitchScreenAction<FieldWeakMaxChangeScreen>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_SETIMOTMAX>, SwitchScreenAction<IMotMaxChangeScreen>>>();
makeComponent<MenuItem, StaticText<TEXT_SETPHASEADVMAX>, SwitchScreenAction<PhaseAdvMaxChangeScreen>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_SETIDCMAX>, SwitchScreenAction<IDcMaxChangeScreen>>>();
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&icons::back>> constructItem<makeComponent<MenuItem, StaticText<TEXT_SETNMOTMAXKMH>, SwitchScreenAction<NMotMaxKmhChangeScreen>>>();
> constructItem<makeComponent<MenuItem, StaticText<TEXT_SETNMOTMAX>, SwitchScreenAction<NMotMaxRpmChangeScreen>>>();
{}; constructItem<makeComponent<MenuItem, StaticText<TEXT_SETFIELDWEAKMAX>, SwitchScreenAction<FieldWeakMaxChangeScreen>>>();
} constructItem<makeComponent<MenuItem, StaticText<TEXT_SETPHASEADVMAX>, SwitchScreenAction<PhaseAdvMaxChangeScreen>>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&icons::back>>>();
}
};
} // namespace

View File

@ -1,33 +1,39 @@
#pragma once #pragma once
// local includes
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "menuitem.h" #include "menuitem.h"
#include "actions/switchscreenaction.h" #include "actions/switchscreenaction.h"
#include "icons/back.h" #include "icons/back.h"
#include "texts.h" #include "texts.h"
// forward declares
namespace { namespace {
class DefaultModeSettingsMenu; class DefaultModeSettingsMenu;
class TempomatModeSettingsMenu; class TempomatModeSettingsMenu;
class LarsmModeSettingsMenu; class LarsmModeSettingsMenu;
class GametrakModeSettingsMenu; class GametrakModeSettingsMenu;
class SettingsMenu; class SettingsMenu;
} } // namespace
namespace { namespace {
class ModesSettingsMenu : class ModesSettingsMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<TEXT_MODESSETTINGS>, public StaticText<TEXT_MODESSETTINGS>,
public BackActionInterface<SwitchScreenAction<SettingsMenu>>, public BackActionInterface<SwitchScreenAction<SettingsMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, StaticText<TEXT_DEFAULTMODESETTIGNS>, SwitchScreenAction<DefaultModeSettingsMenu>>, {
makeComponent<MenuItem, StaticText<TEXT_TEMPOMATMODESETTINGS>, SwitchScreenAction<TempomatModeSettingsMenu>>, public:
makeComponent<MenuItem, StaticText<TEXT_LARSMMODESETTINGS>, SwitchScreenAction<LarsmModeSettingsMenu>>, ModesSettingsMenu()
{
constructItem<makeComponent<MenuItem, StaticText<TEXT_DEFAULTMODESETTIGNS>, SwitchScreenAction<DefaultModeSettingsMenu>>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_TEMPOMATMODESETTINGS>, SwitchScreenAction<TempomatModeSettingsMenu>>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_LARSMMODESETTINGS>, SwitchScreenAction<LarsmModeSettingsMenu>>>();
#ifdef FEATURE_GAMETRAK #ifdef FEATURE_GAMETRAK
makeComponent<MenuItem, StaticText<TEXT_GAMETRAKMODESETTINGS>, SwitchScreenAction<GametrakModeSettingsMenu>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_GAMETRAKMODESETTINGS>, SwitchScreenAction<GametrakModeSettingsMenu>>>();
#endif #endif
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&icons::back>> constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&icons::back>>>();
> }
{}; };
} } // namespace

View File

@ -1,7 +1,8 @@
#pragma once #pragma once
// local includes
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "utils.h" #include "utils.h"
#include "menuitem.h" #include "menuitem.h"
#include "actions/toggleboolaction.h" #include "actions/toggleboolaction.h"
@ -11,9 +12,10 @@
#include "texts.h" #include "texts.h"
#include "types.h" #include "types.h"
// forward declares
namespace { namespace {
class MainMenu; class MainMenu;
} } // namespace
namespace { namespace {
#ifdef FEATURE_MOSFETS #ifdef FEATURE_MOSFETS
@ -33,12 +35,16 @@ class MosfetsMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<TEXT_MOSFETS>, public StaticText<TEXT_MOSFETS>,
public BackActionInterface<SwitchScreenAction<MainMenu>>, public BackActionInterface<SwitchScreenAction<MainMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, StaticText<TEXT_MOSFET0>, ToggleBoolAction, CheckboxIcon, Mosfet0Accessor>, {
makeComponent<MenuItem, StaticText<TEXT_MOSFET1>, ToggleBoolAction, CheckboxIcon, Mosfet1Accessor>, public:
makeComponent<MenuItem, StaticText<TEXT_MOSFET2>, ToggleBoolAction, CheckboxIcon, Mosfet2Accessor>, MosfetsMenu()
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&icons::back>> {
> constructItem<makeComponent<MenuItem, StaticText<TEXT_MOSFET0>, ToggleBoolAction, CheckboxIcon, Mosfet0Accessor>>();
{}; constructItem<makeComponent<MenuItem, StaticText<TEXT_MOSFET1>, ToggleBoolAction, CheckboxIcon, Mosfet1Accessor>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_MOSFET2>, ToggleBoolAction, CheckboxIcon, Mosfet2Accessor>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&icons::back>>>();
}
};
#endif #endif
} } // namespace

View File

@ -1,7 +1,8 @@
#pragma once #pragma once
// local includes
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "utils.h" #include "utils.h"
#include "menuitem.h" #include "menuitem.h"
#include "actions/dummyaction.h" #include "actions/dummyaction.h"
@ -11,9 +12,10 @@
#include "debugtexthelpers.h" #include "debugtexthelpers.h"
#include "debugcolorhelpers.h" #include "debugcolorhelpers.h"
// forward declares
namespace { namespace {
class DebugMenu; class DebugMenu;
} } // namespace
namespace { namespace {
template<const char *Ttext, typename Ttexts, template<int> class ColorInterface> template<const char *Ttext, typename Ttexts, template<int> class ColorInterface>
@ -21,21 +23,26 @@ class MotorFeedbackDebugMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<Ttext>, public StaticText<Ttext>,
public BackActionInterface<SwitchScreenAction<DebugMenu>>, public BackActionInterface<SwitchScreenAction<DebugMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, typename Ttexts::AngleText, ColorInterface<TFT_DARKGREY>, DummyAction>, {
makeComponent<MenuItem, typename Ttexts::SpeedText, ColorInterface<TFT_DARKGREY>, DummyAction>, public:
makeComponent<MenuItem, typename Ttexts::SpeedKmhText, ColorInterface<TFT_DARKGREY>, DummyAction>, MotorFeedbackDebugMenu()
makeComponent<MenuItem, typename Ttexts::ErrorText, ColorInterface<TFT_DARKGREY>, DummyAction>, {
makeComponent<MenuItem, typename Ttexts::CurrentText, ColorInterface<TFT_DARKGREY>, DummyAction>, constructItem<makeComponent<MenuItem, typename Ttexts::AngleText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
makeComponent<MenuItem, typename Ttexts::CurrentFixedText, ColorInterface<TFT_DARKGREY>, DummyAction>, constructItem<makeComponent<MenuItem, typename Ttexts::SpeedText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
makeComponent<MenuItem, typename Ttexts::ChopsText, ColorInterface<TFT_DARKGREY>, DummyAction>, constructItem<makeComponent<MenuItem, typename Ttexts::SpeedKmhText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
makeComponent<MenuItem, typename Ttexts::HallText, ColorInterface<TFT_DARKGREY>, DummyAction>, constructItem<makeComponent<MenuItem, typename Ttexts::ErrorText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<DebugMenu>, StaticMenuItemIcon<&icons::back>> constructItem<makeComponent<MenuItem, typename Ttexts::CurrentText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
> constructItem<makeComponent<MenuItem, typename Ttexts::CurrentFixedText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
{}; constructItem<makeComponent<MenuItem, typename Ttexts::ChopsText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
constructItem<makeComponent<MenuItem, typename Ttexts::HallText, ColorInterface<TFT_DARKGREY>, DummyAction>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<DebugMenu>, StaticMenuItemIcon<&icons::back>>>();
}
};
class FrontLeftMotorFeedbackDebugMenu : public MotorFeedbackDebugMenu<TEXT_FRONTLEFTFEEDBACK, FrontTexts::LeftFeedback, FrontFeedbackColor> {}; class FrontLeftMotorFeedbackDebugMenu : public MotorFeedbackDebugMenu<TEXT_FRONTLEFTFEEDBACK, FrontTexts::LeftFeedback, FrontFeedbackColor> {};
class FrontRightMotorFeedbackDebugMenu : public MotorFeedbackDebugMenu<TEXT_FRONTRIGHTFEEDBACK, FrontTexts::RightFeedback, FrontFeedbackColor> {}; class FrontRightMotorFeedbackDebugMenu : public MotorFeedbackDebugMenu<TEXT_FRONTRIGHTFEEDBACK, FrontTexts::RightFeedback, FrontFeedbackColor> {};
class BackLeftMotorFeedbackDebugMenu : public MotorFeedbackDebugMenu<TEXT_BACKLEFTFEEDBACK, BackTexts::LeftFeedback, BackFeedbackColor> {}; class BackLeftMotorFeedbackDebugMenu : public MotorFeedbackDebugMenu<TEXT_BACKLEFTFEEDBACK, BackTexts::LeftFeedback, BackFeedbackColor> {};
class BackRightMotorFeedbackDebugMenu : public MotorFeedbackDebugMenu<TEXT_BACKRIGHTFEEDBACK, BackTexts::RightFeedback, BackFeedbackColor> {}; class BackRightMotorFeedbackDebugMenu : public MotorFeedbackDebugMenu<TEXT_BACKRIGHTFEEDBACK, BackTexts::RightFeedback, BackFeedbackColor> {};
}
} // namespace

View File

@ -1,7 +1,8 @@
#pragma once #pragma once
// local includes
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "utils.h" #include "utils.h"
#include "menuitem.h" #include "menuitem.h"
#include "actions/dummyaction.h" #include "actions/dummyaction.h"
@ -10,9 +11,10 @@
#include "texts.h" #include "texts.h"
#include "debugtexthelpers.h" #include "debugtexthelpers.h"
// forward declares
namespace { namespace {
class DebugMenu; class DebugMenu;
} } // namespace
namespace { namespace {
template<const char *Ttext, typename Ttexts> template<const char *Ttext, typename Ttexts>
@ -20,22 +22,27 @@ class MotorStateDebugMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<Ttext>, public StaticText<Ttext>,
public BackActionInterface<SwitchScreenAction<DebugMenu>>, public BackActionInterface<SwitchScreenAction<DebugMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, typename Ttexts::EnableText, DisabledColor, DummyAction>, {
makeComponent<MenuItem, typename Ttexts::PwmText, DisabledColor, DummyAction>, public:
makeComponent<MenuItem, typename Ttexts::CtrlTypText, DisabledColor, DummyAction>, MotorStateDebugMenu()
makeComponent<MenuItem, typename Ttexts::CtrlModText, DisabledColor, DummyAction>, {
makeComponent<MenuItem, typename Ttexts::IMotMaxText, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, typename Ttexts::EnableText, DisabledColor, DummyAction>>();
makeComponent<MenuItem, typename Ttexts::IDcMaxText, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, typename Ttexts::PwmText, DisabledColor, DummyAction>>();
makeComponent<MenuItem, typename Ttexts::NMotMaxText, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, typename Ttexts::CtrlTypText, DisabledColor, DummyAction>>();
makeComponent<MenuItem, typename Ttexts::FieldWeakMaxText, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, typename Ttexts::CtrlModText, DisabledColor, DummyAction>>();
makeComponent<MenuItem, typename Ttexts::PhaseAdvMaxText, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, typename Ttexts::IMotMaxText, DisabledColor, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<DebugMenu>, StaticMenuItemIcon<&icons::back>> constructItem<makeComponent<MenuItem, typename Ttexts::IDcMaxText, DisabledColor, DummyAction>>();
> constructItem<makeComponent<MenuItem, typename Ttexts::NMotMaxText, DisabledColor, DummyAction>>();
{}; constructItem<makeComponent<MenuItem, typename Ttexts::FieldWeakMaxText, DisabledColor, DummyAction>>();
constructItem<makeComponent<MenuItem, typename Ttexts::PhaseAdvMaxText, DisabledColor, DummyAction>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<DebugMenu>, StaticMenuItemIcon<&icons::back>>>();
}
};
class FrontLeftMotorStateDebugMenu : public MotorStateDebugMenu<TEXT_FRONTLEFTCOMMAND, FrontTexts::LeftCommand> {}; class FrontLeftMotorStateDebugMenu : public MotorStateDebugMenu<TEXT_FRONTLEFTCOMMAND, FrontTexts::LeftCommand> {};
class FrontRightMotorStateDebugMenu : public MotorStateDebugMenu<TEXT_FRONTRIGHTCOMMAND, FrontTexts::RightCommand> {}; class FrontRightMotorStateDebugMenu : public MotorStateDebugMenu<TEXT_FRONTRIGHTCOMMAND, FrontTexts::RightCommand> {};
class BackLeftMotorStateDebugMenu : public MotorStateDebugMenu<TEXT_BACKLEFTCOMMAND, BackTexts::LeftCommand> {}; class BackLeftMotorStateDebugMenu : public MotorStateDebugMenu<TEXT_BACKLEFTCOMMAND, BackTexts::LeftCommand> {};
class BackRightMotorStateDebugMenu : public MotorStateDebugMenu<TEXT_BACKRIGHTCOMMAND, BackTexts::RightCommand> {}; class BackRightMotorStateDebugMenu : public MotorStateDebugMenu<TEXT_BACKRIGHTCOMMAND, BackTexts::RightCommand> {};
}
} // namespace

View File

@ -1,8 +1,9 @@
#pragma once #pragma once
// local includes
#include "actioninterface.h" #include "actioninterface.h"
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "utils.h" #include "utils.h"
#include "actions/multiaction.h" #include "actions/multiaction.h"
#include "actions/switchscreenaction.h" #include "actions/switchscreenaction.h"
@ -12,9 +13,10 @@
#include "presets.h" #include "presets.h"
#include "globals.h" #include "globals.h"
// forward declares
namespace { namespace {
class MainMenu; class MainMenu;
} } // namespace
namespace { namespace {
class ApplyPresetAction : public virtual ActionInterface class ApplyPresetAction : public virtual ActionInterface
@ -76,19 +78,23 @@ class PresetsMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<TEXT_PRESETS>, public StaticText<TEXT_PRESETS>,
public BackActionInterface<SwitchScreenAction<MainMenu>>, public BackActionInterface<SwitchScreenAction<MainMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, StaticText<TEXT_DEFAULTEVERYTHING>, MultiAction<ApplySettingsPresetAction<&presets::defaultSettings>, SwitchScreenAction<MainMenu>>>, {
makeComponent<MenuItem, StaticText<TEXT_DEFAULTLIMITS>, MultiAction<ApplyLimitsPresetAction<&presets::defaultLimits>, SwitchScreenAction<MainMenu>>>, public:
makeComponent<MenuItem, StaticText<TEXT_KIDSLIMITS>, MultiAction<ApplyLimitsPresetAction<&presets::kidsLimits>, SwitchScreenAction<MainMenu>>>, PresetsMenu()
makeComponent<MenuItem, StaticText<TEXT_DEFAULTCONTROLLERHARDWARE>, MultiAction<ApplyControllerHardwarePresetAction<&presets::defaultControllerHardware>, SwitchScreenAction<MainMenu>>>, {
makeComponent<MenuItem, StaticText<TEXT_MOSFETSOFFCONTROLLERHARDWARE>, MultiAction<ApplyControllerHardwarePresetAction<&presets::mosfetsOffControllerHardware>, SwitchScreenAction<MainMenu>>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_DEFAULTEVERYTHING>, MultiAction<ApplySettingsPresetAction<&presets::defaultSettings>, SwitchScreenAction<MainMenu>>>>();
makeComponent<MenuItem, StaticText<TEXT_SPINNERCONTROLLERHARDWARE>, MultiAction<ApplyControllerHardwarePresetAction<&presets::spinnerControllerHardware>, SwitchScreenAction<MainMenu>>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_DEFAULTLIMITS>, MultiAction<ApplyLimitsPresetAction<&presets::defaultLimits>, SwitchScreenAction<MainMenu>>>>();
makeComponent<MenuItem, StaticText<TEXT_DEFAULTBOARDCOMPUTERHARDWARE>, MultiAction<ApplyBoardcomputerHardwarePresetAction<&presets::defaultBoardcomputerHardware>, SwitchScreenAction<MainMenu>>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_KIDSLIMITS>, MultiAction<ApplyLimitsPresetAction<&presets::kidsLimits>, SwitchScreenAction<MainMenu>>>>();
makeComponent<MenuItem, StaticText<TEXT_DEFAULTDEFAULTMODE>, MultiAction<ApplyDefaultModePresetAction<&presets::defaultDefaultMode>, SwitchScreenAction<MainMenu>>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_DEFAULTCONTROLLERHARDWARE>, MultiAction<ApplyControllerHardwarePresetAction<&presets::defaultControllerHardware>, SwitchScreenAction<MainMenu>>>>();
makeComponent<MenuItem, StaticText<TEXT_SINUSOIDALDEFAULTMODE>, MultiAction<ApplyDefaultModePresetAction<&presets::sinusoidalDefaultMode>, SwitchScreenAction<MainMenu>>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_MOSFETSOFFCONTROLLERHARDWARE>, MultiAction<ApplyControllerHardwarePresetAction<&presets::mosfetsOffControllerHardware>, SwitchScreenAction<MainMenu>>>>();
makeComponent<MenuItem, StaticText<TEXT_DEFAULTTEMPOMATMODE>, MultiAction<ApplyTempomatModePresetAction<&presets::defaultTempomatMode>, SwitchScreenAction<MainMenu>>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_SPINNERCONTROLLERHARDWARE>, MultiAction<ApplyControllerHardwarePresetAction<&presets::spinnerControllerHardware>, SwitchScreenAction<MainMenu>>>>();
makeComponent<MenuItem, StaticText<TEXT_DEFAULTLARSMMODE>, MultiAction<ApplyLarsmModePresetAction<&presets::defaultLarsmMode>, SwitchScreenAction<MainMenu>>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_DEFAULTBOARDCOMPUTERHARDWARE>, MultiAction<ApplyBoardcomputerHardwarePresetAction<&presets::defaultBoardcomputerHardware>, SwitchScreenAction<MainMenu>>>>();
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&icons::back>> constructItem<makeComponent<MenuItem, StaticText<TEXT_DEFAULTDEFAULTMODE>, MultiAction<ApplyDefaultModePresetAction<&presets::defaultDefaultMode>, SwitchScreenAction<MainMenu>>>>();
> constructItem<makeComponent<MenuItem, StaticText<TEXT_SINUSOIDALDEFAULTMODE>, MultiAction<ApplyDefaultModePresetAction<&presets::sinusoidalDefaultMode>, SwitchScreenAction<MainMenu>>>>();
{}; constructItem<makeComponent<MenuItem, StaticText<TEXT_DEFAULTTEMPOMATMODE>, MultiAction<ApplyTempomatModePresetAction<&presets::defaultTempomatMode>, SwitchScreenAction<MainMenu>>>>();
} constructItem<makeComponent<MenuItem, StaticText<TEXT_DEFAULTLARSMMODE>, MultiAction<ApplyLarsmModePresetAction<&presets::defaultLarsmMode>, SwitchScreenAction<MainMenu>>>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&icons::back>>>();
}
};
} // namespace

View File

@ -1,27 +1,33 @@
#pragma once #pragma once
// local includes
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "actions/switchprofileaction.h" #include "actions/switchprofileaction.h"
#include "actions/switchscreenaction.h" #include "actions/switchscreenaction.h"
#include "icons/back.h" #include "icons/back.h"
#include "texts.h" #include "texts.h"
// forward declares
namespace { namespace {
class MainMenu; class MainMenu;
} } // namespace
namespace { namespace {
class ProfilesMenu : class ProfilesMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<TEXT_PROFILES>, public StaticText<TEXT_PROFILES>,
public BackActionInterface<SwitchScreenAction<MainMenu>>, public BackActionInterface<SwitchScreenAction<MainMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, StaticText<TEXT_PROFILE0>, SwitchProfileAction<0>>, {
makeComponent<MenuItem, StaticText<TEXT_PROFILE1>, SwitchProfileAction<1>>, public:
makeComponent<MenuItem, StaticText<TEXT_PROFILE2>, SwitchProfileAction<2>>, ProfilesMenu()
makeComponent<MenuItem, StaticText<TEXT_PROFILE3>, SwitchProfileAction<3>>, {
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&icons::back>> constructItem<makeComponent<MenuItem, StaticText<TEXT_PROFILE0>, SwitchProfileAction<0>>>();
> constructItem<makeComponent<MenuItem, StaticText<TEXT_PROFILE1>, SwitchProfileAction<1>>>();
{}; constructItem<makeComponent<MenuItem, StaticText<TEXT_PROFILE2>, SwitchProfileAction<2>>>();
} constructItem<makeComponent<MenuItem, StaticText<TEXT_PROFILE3>, SwitchProfileAction<3>>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&icons::back>>>();
}
};
} // namespace

View File

@ -1,7 +1,8 @@
#pragma once #pragma once
// local includes
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "utils.h" #include "utils.h"
#include "actions/multiaction.h" #include "actions/multiaction.h"
#include "actions/switchscreenaction.h" #include "actions/switchscreenaction.h"
@ -14,9 +15,10 @@
#include "modes/larsmmode.h" #include "modes/larsmmode.h"
#include "modes/gametrakmode.h" #include "modes/gametrakmode.h"
// forward declares
namespace { namespace {
class MainMenu; class MainMenu;
} } // namespace
namespace { namespace {
template<typename T1, T1 &target, typename T2, T2 value> template<typename T1, T1 &target, typename T2, T2 value>
@ -36,19 +38,22 @@ class SelectModeMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<TEXT_SELECTMODE>, public StaticText<TEXT_SELECTMODE>,
public BackActionInterface<SwitchScreenAction<MainMenu>>, public BackActionInterface<SwitchScreenAction<MainMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, StaticText<TEXT_DEFAULT>, MultiAction<SetDefaultModeAction, SwitchScreenAction<MainMenu>>>,
makeComponent<MenuItem, StaticText<TEXT_TEMPOMAT>, MultiAction<SetTempomatModeAction, SwitchScreenAction<MainMenu>>>,
makeComponent<MenuItem, StaticText<TEXT_LARSM>, MultiAction<SetLarsmModeAction, SwitchScreenAction<MainMenu>>>,
#ifdef FEATURE_GAMETRAK
makeComponent<MenuItem, StaticText<TEXT_GAMETRAK>, MultiAction<SetGametrakModeAction, SwitchScreenAction<MainMenu>>>,
#endif
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&icons::back>>
>
{ {
using Base = MenuDisplay; using Base = MenuDisplay;
public: public:
SelectModeMenu()
{
constructItem<makeComponent<MenuItem, StaticText<TEXT_DEFAULT>, MultiAction<SetDefaultModeAction, SwitchScreenAction<MainMenu>>>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_TEMPOMAT>, MultiAction<SetTempomatModeAction, SwitchScreenAction<MainMenu>>>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_LARSM>, MultiAction<SetLarsmModeAction, SwitchScreenAction<MainMenu>>>>();
#ifdef FEATURE_GAMETRAK
constructItem<makeComponent<MenuItem, StaticText<TEXT_GAMETRAK>, MultiAction<SetGametrakModeAction, SwitchScreenAction<MainMenu>>>>();
#endif
constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&icons::back>>>();
}
void start() override; void start() override;
}; };
@ -68,4 +73,4 @@ void SelectModeMenu::start()
setSelectedIndex(3); setSelectedIndex(3);
} }
} }
} } // namespace

View File

@ -1,9 +1,11 @@
#pragma once #pragma once
// Arduino includes
#include <HardwareSerial.h> #include <HardwareSerial.h>
// local includes
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "utils.h" #include "utils.h"
#include "actions/toggleboolaction.h" #include "actions/toggleboolaction.h"
#include "actions/switchscreenaction.h" #include "actions/switchscreenaction.h"
@ -18,7 +20,9 @@
#include "icons/back.h" #include "icons/back.h"
#include "texts.h" #include "texts.h"
#include "globals.h" #include "globals.h"
#include "settingsaccessors.h"
// forward declares
namespace { namespace {
class LimitsSettingsMenu; class LimitsSettingsMenu;
class WifiSettingsMenu; class WifiSettingsMenu;
@ -39,23 +43,27 @@ class SettingsMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<TEXT_SETTINGS>, public StaticText<TEXT_SETTINGS>,
public BackActionInterface<SwitchScreenAction<MainMenu>>, public BackActionInterface<SwitchScreenAction<MainMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, StaticText<TEXT_LIMITSSETTINGS>, SwitchScreenAction<LimitsSettingsMenu>>, {
makeComponent<MenuItem, StaticText<TEXT_WIFISETTINGS>, SwitchScreenAction<WifiSettingsMenu>, StaticMenuItemIcon<&icons::wifi>>, public:
SettingsMenu()
{
constructItem<makeComponent<MenuItem, StaticText<TEXT_LIMITSSETTINGS>, SwitchScreenAction<LimitsSettingsMenu>>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_WIFISETTINGS>, SwitchScreenAction<WifiSettingsMenu>, StaticMenuItemIcon<&icons::wifi>>>();
#ifdef FEATURE_BLUETOOTH #ifdef FEATURE_BLUETOOTH
makeComponent<MenuItem, StaticText<TEXT_BLUETOOTHSETTINGS>, SwitchScreenAction<BluetoothSettingsMenu>, StaticMenuItemIcon<&icons::bluetooth>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_BLUETOOTHSETTINGS>, SwitchScreenAction<BluetoothSettingsMenu>, StaticMenuItemIcon<&icons::bluetooth>>>();
#endif #endif
makeComponent<MenuItem, StaticText<TEXT_MODESSETTINGS>, SwitchScreenAction<ModesSettingsMenu>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_MODESSETTINGS>, SwitchScreenAction<ModesSettingsMenu>>>();
makeComponent<MenuItem, StaticText<TEXT_CONTROLLERHARDWARESETTINGS>, SwitchScreenAction<ControllerHardwareSettingsMenu>, StaticMenuItemIcon<&icons::hardware>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_CONTROLLERHARDWARESETTINGS>, SwitchScreenAction<ControllerHardwareSettingsMenu>, StaticMenuItemIcon<&icons::hardware>>>();
makeComponent<MenuItem, StaticText<TEXT_BOARDCOMPUTERHARDWARESETTINGS>, SwitchScreenAction<BoardcomputerHardwareSettingsMenu>, StaticMenuItemIcon<&icons::hardware>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_BOARDCOMPUTERHARDWARESETTINGS>, SwitchScreenAction<BoardcomputerHardwareSettingsMenu>, StaticMenuItemIcon<&icons::hardware>>>();
#if defined(FEATURE_BLUETOOTH) && defined(FEATURE_BMS) #if defined(FEATURE_BLUETOOTH) && defined(FEATURE_BMS)
makeComponent<MenuItem, StaticText<TEXT_AUTOCONNECTBMS>, ToggleBoolAction, CheckboxIcon, AutoConnectBmsAccessor>, constructItem<makeComponent<MenuItem, StaticText<TEXT_AUTOCONNECTBMS>, ToggleBoolAction, CheckboxIcon, AutoConnectBmsAccessor>>();
#endif #endif
makeComponent<MenuItem, StaticText<TEXT_BUZZER>, SwitchScreenAction<BuzzerMenu>, StaticMenuItemIcon<&icons::buzzer>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_BUZZER>, SwitchScreenAction<BuzzerMenu>, StaticMenuItemIcon<&icons::buzzer>>>();
makeComponent<MenuItem, StaticText<TEXT_FRONTLED>, ToggleBoolAction, CheckboxIcon, FrontLedAccessor>, constructItem<makeComponent<MenuItem, StaticText<TEXT_FRONTLED>, ToggleBoolAction, CheckboxIcon, FrontLedAccessor>>();
makeComponent<MenuItem, StaticText<TEXT_BACKLED>, ToggleBoolAction, CheckboxIcon, BackLedAccessor>, constructItem<makeComponent<MenuItem, StaticText<TEXT_BACKLED>, ToggleBoolAction, CheckboxIcon, BackLedAccessor>>();
makeComponent<MenuItem, StaticText<TEXT_ABOUT>, SwitchScreenAction<AboutMenu>, StaticMenuItemIcon<&icons::info>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_ABOUT>, SwitchScreenAction<AboutMenu>, StaticMenuItemIcon<&icons::info>>>();
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&icons::back>> constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&icons::back>>>();
> }
{}; };
} } // namespace

View File

@ -1,9 +1,11 @@
#pragma once #pragma once
// Arduino includes
#include <WiFi.h> #include <WiFi.h>
// local includes
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "utils.h" #include "utils.h"
#include "menuitem.h" #include "menuitem.h"
#include "actions/dummyaction.h" #include "actions/dummyaction.h"
@ -18,38 +20,43 @@
#include "wifiaccessors.h" #include "wifiaccessors.h"
#include "texts.h" #include "texts.h"
// forward declares
namespace { namespace {
class WifiSettingsMenu; class WifiSettingsMenu;
} } // namespace
namespace { namespace {
class StationWifiSettingsMenu : class StationWifiSettingsMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<TEXT_STATIONWIFISETTINGS>, public StaticText<TEXT_STATIONWIFISETTINGS>,
public BackActionInterface<SwitchScreenAction<WifiSettingsMenu>>, public BackActionInterface<SwitchScreenAction<WifiSettingsMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, StaticText<TEXT_WIFIRECONNECT>, WifiReconnectAction>, {
makeComponent<MenuItem, StaticText<TEXT_WIFIDISCONNECT>, WifiDisconnectAction>, public:
makeComponent<MenuItem, WifiIsConnectedText, StaticFont<2>, DisabledColor, DummyAction>, StationWifiSettingsMenu()
makeComponent<MenuItem, StaticText<TEXT_WIFICHANGEAUTOCONNECT>, ToggleBoolAction, CheckboxIcon, WifiAutoConnectAccessor>, {
makeComponent<MenuItem, StaticText<TEXT_WIFICHANGEAUTORECONNECT>, ToggleBoolAction, CheckboxIcon, WifiAutoReconnectAccessor>, constructItem<makeComponent<MenuItem, StaticText<TEXT_WIFIRECONNECT>, WifiReconnectAction>>();
makeComponent<MenuItem, WifiLocalIpText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_WIFIDISCONNECT>, WifiDisconnectAction>>();
makeComponent<MenuItem, WifiMacAddressText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, WifiIsConnectedText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, WifiSubnetMaskText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_WIFICHANGEAUTOCONNECT>, ToggleBoolAction, CheckboxIcon, WifiAutoConnectAccessor>>();
makeComponent<MenuItem, WifiGatewayIpText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_WIFICHANGEAUTORECONNECT>, ToggleBoolAction, CheckboxIcon, WifiAutoReconnectAccessor>>();
makeComponent<MenuItem, WifiDnsIpText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, WifiLocalIpText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, WifiBroadcastIpText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, WifiMacAddressText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, WifiNetworkIdText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, WifiSubnetMaskText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, WifiSubnetCIDRText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, WifiGatewayIpText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_WIFIENABLEIPV6>, WifiEnableIpV6Action>, constructItem<makeComponent<MenuItem, WifiDnsIpText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, WifiLocalIpV6Text, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, WifiBroadcastIpText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, WifiHostnameText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, WifiNetworkIdText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, WifiStatusText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, WifiSubnetCIDRText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, WifiSsidText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, StaticText<TEXT_WIFIENABLEIPV6>, WifiEnableIpV6Action>>();
makeComponent<MenuItem, WifiPskText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, WifiLocalIpV6Text, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, WifiBssidText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, WifiHostnameText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, WifiRssiText, StaticFont<2>, DisabledColor, DummyAction>, constructItem<makeComponent<MenuItem, WifiStatusText, StaticFont<2>, DisabledColor, DummyAction>>();
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<WifiSettingsMenu>, StaticMenuItemIcon<&icons::back>> constructItem<makeComponent<MenuItem, WifiSsidText, StaticFont<2>, DisabledColor, DummyAction>>();
> constructItem<makeComponent<MenuItem, WifiPskText, StaticFont<2>, DisabledColor, DummyAction>>();
{}; constructItem<makeComponent<MenuItem, WifiBssidText, StaticFont<2>, DisabledColor, DummyAction>>();
} constructItem<makeComponent<MenuItem, WifiRssiText, StaticFont<2>, DisabledColor, DummyAction>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<WifiSettingsMenu>, StaticMenuItemIcon<&icons::back>>>();
}
};
} // namespace

View File

@ -1,7 +1,8 @@
#pragma once #pragma once
// local includes
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "utils.h" #include "utils.h"
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
#include "menuitem.h" #include "menuitem.h"
@ -10,10 +11,11 @@
#include "texts.h" #include "texts.h"
#include "settingsaccessors.h" #include "settingsaccessors.h"
// forward declares
namespace { namespace {
class TempomatModeSettingsMenu; class TempomatModeSettingsMenu;
class ModesSettingsMenu; class ModesSettingsMenu;
} } // namespace
namespace { namespace {
using TempomatModeModelModeChangeScreen = makeComponent< using TempomatModeModelModeChangeScreen = makeComponent<
@ -28,9 +30,13 @@ class TempomatModeSettingsMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<TEXT_TEMPOMATMODESETTINGS>, public StaticText<TEXT_TEMPOMATMODESETTINGS>,
public BackActionInterface<SwitchScreenAction<ModesSettingsMenu>>, public BackActionInterface<SwitchScreenAction<ModesSettingsMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, StaticText<TEXT_SETMODELMODE>, SwitchScreenAction<TempomatModeModelModeChangeScreen>>, {
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<ModesSettingsMenu>, StaticMenuItemIcon<&icons::back>> public:
> TempomatModeSettingsMenu()
{}; {
} constructItem<makeComponent<MenuItem, StaticText<TEXT_SETMODELMODE>, SwitchScreenAction<TempomatModeModelModeChangeScreen>>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<ModesSettingsMenu>, StaticMenuItemIcon<&icons::back>>>();
}
};
} // namespace

View File

@ -1,17 +1,19 @@
#pragma once #pragma once
// local includes
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "utils.h" #include "utils.h"
#include "actions/switchscreenaction.h" #include "actions/switchscreenaction.h"
#include "icons/back.h" #include "icons/back.h"
#include "texts.h" #include "texts.h"
#include "settingsaccessors.h" #include "settingsaccessors.h"
// forward declares
namespace { namespace {
class BoardcomputerHardwareSettingsMenu; class BoardcomputerHardwareSettingsMenu;
} } // namespace
namespace { namespace {
class TimersMenu; class TimersMenu;
@ -60,13 +62,17 @@ class TimersMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<TEXT_TIMERS>, public StaticText<TEXT_TIMERS>,
public BackActionInterface<SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>, public BackActionInterface<SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, StaticText<TEXT_POTIREADRATE>, SwitchScreenAction<PotiReadRateChangeDisplay>>, {
makeComponent<MenuItem, StaticText<TEXT_MODEUPDATERATE>, SwitchScreenAction<ModeUpdateRateChangeDisplay>>, public:
makeComponent<MenuItem, StaticText<TEXT_STATSUPDATERATE>, SwitchScreenAction<StatsUpdateRateChangeDisplay>>, TimersMenu()
makeComponent<MenuItem, StaticText<TEXT_DISPLAYUPDATERATE>, SwitchScreenAction<DisplayUpdateRateChangeDisplay>>, {
makeComponent<MenuItem, StaticText<TEXT_DISPLAYREDRAWRATE>, SwitchScreenAction<DisplayRedrawRateChangeDisplay>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_POTIREADRATE>, SwitchScreenAction<PotiReadRateChangeDisplay>>>();
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<BoardcomputerHardwareSettingsMenu>, StaticMenuItemIcon<&icons::back>> constructItem<makeComponent<MenuItem, StaticText<TEXT_MODEUPDATERATE>, SwitchScreenAction<ModeUpdateRateChangeDisplay>>>();
> constructItem<makeComponent<MenuItem, StaticText<TEXT_STATSUPDATERATE>, SwitchScreenAction<StatsUpdateRateChangeDisplay>>>();
{}; constructItem<makeComponent<MenuItem, StaticText<TEXT_DISPLAYUPDATERATE>, SwitchScreenAction<DisplayUpdateRateChangeDisplay>>>();
} constructItem<makeComponent<MenuItem, StaticText<TEXT_DISPLAYREDRAWRATE>, SwitchScreenAction<DisplayRedrawRateChangeDisplay>>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<BoardcomputerHardwareSettingsMenu>, StaticMenuItemIcon<&icons::back>>>();
}
};
} // namespace

View File

@ -1,10 +1,13 @@
#pragma once #pragma once
// system includes
#include <vector> #include <vector>
// Arduino includes
#include <Arduino.h> #include <Arduino.h>
#include <WiFi.h> #include <WiFi.h>
// local includes
#include "menudisplay.h" #include "menudisplay.h"
#include "utils.h" #include "utils.h"
#include "actions/multiaction.h" #include "actions/multiaction.h"
@ -14,9 +17,10 @@
#include "texts.h" #include "texts.h"
#include "types.h" #include "types.h"
// forward declares
namespace { namespace {
class WifiSettingsMenu; class WifiSettingsMenu;
} } // namespace
namespace { namespace {
class WifiScanMenu : public MenuDisplay, public BackActionInterface<SwitchScreenAction<WifiSettingsMenu>> class WifiScanMenu : public MenuDisplay, public BackActionInterface<SwitchScreenAction<WifiSettingsMenu>>
@ -34,18 +38,24 @@ public:
MenuItem& getMenuItem(std::size_t index) override MenuItem& getMenuItem(std::size_t index) override
{ {
if (index < vec.size())
return vec[index];
if (index == vec.size()) if (index == vec.size())
return m_backItem; return m_backItem;
return vec[index]; throw "aua";
} }
const MenuItem& getMenuItem(std::size_t index) const override const MenuItem& getMenuItem(std::size_t index) const override
{ {
if (index < vec.size())
return vec[index];
if (index == vec.size()) if (index == vec.size())
return m_backItem; return m_backItem;
return vec[index]; throw "aua";
} }
void runForEveryMenuItem(std::function<void(MenuItem&)> &&callback) override void runForEveryMenuItem(std::function<void(MenuItem&)> &&callback) override
@ -132,4 +142,4 @@ void WifiScanMenu::stop()
{ {
WiFi.scanDelete(); WiFi.scanDelete();
} }
} } // namespace

View File

@ -1,8 +1,9 @@
#pragma once #pragma once
// local includes
#include "changevaluedisplay.h" #include "changevaluedisplay.h"
#include "menudisplay.h" #include "menudisplay.h"
#include "staticmenudefinition.h" #include "containermenudefinition.h"
#include "utils.h" #include "utils.h"
#include "actions/switchscreenaction.h" #include "actions/switchscreenaction.h"
#include "actions/toggleboolaction.h" #include "actions/toggleboolaction.h"
@ -12,13 +13,14 @@
#include "texts.h" #include "texts.h"
#include "settingsaccessors.h" #include "settingsaccessors.h"
// forward declares
namespace { namespace {
class GenericWifiSettingsMenu; class GenericWifiSettingsMenu;
class StationWifiSettingsMenu; class StationWifiSettingsMenu;
class WifiScanMenu; class WifiScanMenu;
class AccessPointWifiSettingsMenu; class AccessPointWifiSettingsMenu;
class SettingsMenu; class SettingsMenu;
} } // namespace
namespace { namespace {
class WifiSettingsMenu; class WifiSettingsMenu;
@ -35,14 +37,18 @@ class WifiSettingsMenu :
public MenuDisplay, public MenuDisplay,
public StaticText<TEXT_WIFISETTINGS>, public StaticText<TEXT_WIFISETTINGS>,
public BackActionInterface<SwitchScreenAction<SettingsMenu>>, public BackActionInterface<SwitchScreenAction<SettingsMenu>>,
public StaticMenuDefinition< public ContainerMenuDefinition
makeComponent<MenuItem, StaticText<TEXT_AUTOWIFIMODE>, SwitchScreenAction<AutoWifiModeChangeDisplay>>, {
makeComponent<MenuItem, StaticText<TEXT_AUTOENABLEAP>, ToggleBoolAction, CheckboxIcon, AutoEnableApAccessor>, public:
makeComponent<MenuItem, StaticText<TEXT_GENERICWIFISETTINGS>, SwitchScreenAction<GenericWifiSettingsMenu>>, WifiSettingsMenu()
makeComponent<MenuItem, StaticText<TEXT_STATIONWIFISETTINGS>, SwitchScreenAction<StationWifiSettingsMenu>>, {
makeComponent<MenuItem, StaticText<TEXT_WIFISCAN>, SwitchScreenAction<WifiScanMenu>, StaticMenuItemIcon<&icons::scan>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_AUTOWIFIMODE>, SwitchScreenAction<AutoWifiModeChangeDisplay>>>();
makeComponent<MenuItem, StaticText<TEXT_ACCESSPOINTWIFISETTINGS>, SwitchScreenAction<AccessPointWifiSettingsMenu>>, constructItem<makeComponent<MenuItem, StaticText<TEXT_AUTOENABLEAP>, ToggleBoolAction, CheckboxIcon, AutoEnableApAccessor>>();
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&icons::back>> constructItem<makeComponent<MenuItem, StaticText<TEXT_GENERICWIFISETTINGS>, SwitchScreenAction<GenericWifiSettingsMenu>>>();
> constructItem<makeComponent<MenuItem, StaticText<TEXT_STATIONWIFISETTINGS>, SwitchScreenAction<StationWifiSettingsMenu>>>();
{}; constructItem<makeComponent<MenuItem, StaticText<TEXT_WIFISCAN>, SwitchScreenAction<WifiScanMenu>, StaticMenuItemIcon<&icons::scan>>>();
} constructItem<makeComponent<MenuItem, StaticText<TEXT_ACCESSPOINTWIFISETTINGS>, SwitchScreenAction<AccessPointWifiSettingsMenu>>>();
constructItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<SettingsMenu>, StaticMenuItemIcon<&icons::back>>>();
}
};
} // namespace

View File

@ -1,85 +0,0 @@
#pragma once
// local includes
#include "menudefinitioninterface.h"
namespace {
template<typename ...T>
class StaticMenuDefinition;
template<typename T>
class StaticMenuDefinition<T> : public virtual MenuDefinitionInterface
{
public:
std::size_t size() const override { return 1; }
MenuItem& getMenuItem(std::size_t index) override
{
if (index == 0)
return item;
throw "aua";
}
const MenuItem& getMenuItem(std::size_t index) const override
{
if (index == 0)
return item;
throw "aua";
}
void runForEveryMenuItem(std::function<void(MenuItem&)> &&callback) override
{
callback(item);
}
void runForEveryMenuItem(std::function<void(const MenuItem&)> &&callback) const override
{
callback(item);
}
private:
T item;
};
template<typename T, typename ...Tmore>
class StaticMenuDefinition<T, Tmore...> : public virtual StaticMenuDefinition<Tmore...>
{
using Base = StaticMenuDefinition<Tmore...>;
public:
std::size_t size() const override { return 1 + sizeof...(Tmore); }
MenuItem& getMenuItem(std::size_t index) override
{
if (index == 0)
return item;
return Base::getMenuItem(index - 1);
}
const MenuItem& getMenuItem(std::size_t index) const override
{
if (index == 0)
return item;
return Base::getMenuItem(index - 1);
}
void runForEveryMenuItem(std::function<void(MenuItem&)> &&callback) override
{
callback(item);
Base::runForEveryMenuItem(std::move(callback));
}
void runForEveryMenuItem(std::function<void(const MenuItem&)> &&callback) const override
{
callback(item);
Base::runForEveryMenuItem(std::move(callback));
}
private:
T item;
};
} // namespace