Implemented profiles menu
This commit is contained in:
@ -128,10 +128,12 @@ build_flags =
|
||||
-DDEVICE_PREFIX=bobbyquad
|
||||
-DAP_PASSWORD=Passwort_123
|
||||
-DFEATURE_WEBSERVER
|
||||
; -DFEATURE_DPAD_3WIRESW
|
||||
; -DPINS_DPAD_3WIRESW_OUT=0
|
||||
; -DPINS_DPAD_3WIRESW_IN1=16
|
||||
; -DPINS_DPAD_3WIRESW_IN2=27
|
||||
-DFEATURE_DPAD_5WIRESW
|
||||
-DPINS_DPAD_5WIRESW_OUT=0
|
||||
-DPINS_DPAD_5WIRESW_IN1=16
|
||||
-DPINS_DPAD_5WIRESW_IN2=27
|
||||
-DPINS_DPAD_5WIRESW_IN3=16
|
||||
-DPINS_DPAD_5WIRESW_IN4=27
|
||||
-DDEFAULT_GASMIN=850
|
||||
-DDEFAULT_GASMAX=3700
|
||||
-DDEFAULT_BREMSMIN=1300
|
||||
|
24
src/actions/switchprofileaction.h
Normal file
24
src/actions/switchprofileaction.h
Normal file
@ -0,0 +1,24 @@
|
||||
#pragma once
|
||||
|
||||
#include <HardwareSerial.h>
|
||||
|
||||
#include "actioninterface.h"
|
||||
#include "globals.h"
|
||||
|
||||
namespace {
|
||||
template<uint8_t profile>
|
||||
class SwitchProfileAction : public virtual ActionInterface
|
||||
{
|
||||
public:
|
||||
void triggered() override
|
||||
{
|
||||
if (settingsPersister.openProfile(profile))
|
||||
{
|
||||
if (!settingsPersister.load(settings))
|
||||
Serial.println("SwitchProfileAction::triggered() load failed");
|
||||
}
|
||||
else
|
||||
Serial.println("SwitchProfileAction::triggered() openProfile failed");
|
||||
}
|
||||
};
|
||||
}
|
@ -66,7 +66,7 @@ using BremsMaxChangeScreen = makeComponent<
|
||||
SwitchScreenAction<BoardcomputerHardwareSettingsMenu>
|
||||
>;
|
||||
|
||||
#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW)
|
||||
#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) || defined(FEATURE_DPAD_5WIRESW)
|
||||
using DPadDebounceChangeScreen = makeComponent<
|
||||
ChangeValueDisplay<uint8_t>,
|
||||
StaticText<TEXT_SETDPADDEBOUNCE>,
|
||||
@ -147,7 +147,7 @@ class BoardcomputerHardwareSettingsMenu :
|
||||
makeComponent<MenuItem, StaticText<TEXT_SETGASMAX>, SwitchScreenAction<GasMaxChangeScreen>>,
|
||||
makeComponent<MenuItem, StaticText<TEXT_SETBREMSMIN>, SwitchScreenAction<BremsMinChangeScreen>>,
|
||||
makeComponent<MenuItem, StaticText<TEXT_SETBREMSMAX>, SwitchScreenAction<BremsMaxChangeScreen>>,
|
||||
#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW)
|
||||
#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) || defined(FEATURE_DPAD_5WIRESW)
|
||||
makeComponent<MenuItem, StaticText<TEXT_SETDPADDEBOUNCE>, SwitchScreenAction<DPadDebounceChangeScreen>>,
|
||||
#endif
|
||||
#ifdef FEATURE_GAMETRAK
|
||||
|
@ -21,6 +21,7 @@
|
||||
namespace {
|
||||
class StatusDisplay;
|
||||
class SelectModeMenu;
|
||||
class ProfilesMenu;
|
||||
class PresetsMenu;
|
||||
class GraphsMenu;
|
||||
class BmsMenu;
|
||||
@ -42,6 +43,7 @@ class MainMenu :
|
||||
makeComponent<MenuItem, StaticText<TEXT_SELECTMODE>, SwitchScreenAction<SelectModeMenu>, StaticMenuItemIcon<&icons::modes>>,
|
||||
makeComponent<MenuItem, StaticText<TEXT_MODESETTINGS>, ModeSettingsAction>,
|
||||
makeComponent<MenuItem, StaticText<TEXT_PRESETS>, SwitchScreenAction<PresetsMenu>, StaticMenuItemIcon<&icons::presets>>,
|
||||
makeComponent<MenuItem, StaticText<TEXT_PROFILES>, SwitchScreenAction<ProfilesMenu>>,
|
||||
makeComponent<MenuItem, StaticText<TEXT_GRAPHS>, SwitchScreenAction<GraphsMenu>, StaticMenuItemIcon<&icons::graph>>,
|
||||
#ifdef FEATURE_BMS
|
||||
makeComponent<MenuItem, StaticText<TEXT_BMS>, SwitchScreenAction<BmsMenu>, StaticMenuItemIcon<&icons::bms>>,
|
||||
|
27
src/displays/menus/profilesmenu.h
Normal file
27
src/displays/menus/profilesmenu.h
Normal file
@ -0,0 +1,27 @@
|
||||
#pragma once
|
||||
|
||||
#include "menudisplay.h"
|
||||
#include "staticmenudefinition.h"
|
||||
#include "actions/switchprofileaction.h"
|
||||
#include "actions/switchscreenaction.h"
|
||||
#include "icons/back.h"
|
||||
#include "texts.h"
|
||||
|
||||
namespace {
|
||||
class MainMenu;
|
||||
}
|
||||
|
||||
namespace {
|
||||
class ProfilesMenu :
|
||||
public MenuDisplay,
|
||||
public StaticText<TEXT_PROFILES>,
|
||||
public BackActionInterface<SwitchScreenAction<MainMenu>>,
|
||||
public StaticMenuDefinition<
|
||||
makeComponent<MenuItem, StaticText<TEXT_PROFILE0>, SwitchProfileAction<0>>,
|
||||
makeComponent<MenuItem, StaticText<TEXT_PROFILE1>, SwitchProfileAction<1>>,
|
||||
makeComponent<MenuItem, StaticText<TEXT_PROFILE2>, SwitchProfileAction<2>>,
|
||||
makeComponent<MenuItem, StaticText<TEXT_PROFILE3>, SwitchProfileAction<3>>,
|
||||
makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<MainMenu>, StaticMenuItemIcon<&icons::back>>
|
||||
>
|
||||
{};
|
||||
}
|
187
src/dpad5wire.h
Normal file
187
src/dpad5wire.h
Normal file
@ -0,0 +1,187 @@
|
||||
#pragma once
|
||||
|
||||
#include <tuple>
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <HardwareSerial.h>
|
||||
|
||||
#include "globals.h"
|
||||
#include "types.h"
|
||||
|
||||
namespace {
|
||||
namespace dpad5wire
|
||||
{
|
||||
using State = std::tuple<bool, bool, bool, bool, bool, bool, bool, bool>;
|
||||
|
||||
template<pin_t OUT, pin_t IN1, pin_t IN2, pin_t IN3, pin_t IN4>
|
||||
class Helper
|
||||
{
|
||||
public:
|
||||
static constexpr auto OutPin = OUT;
|
||||
static constexpr auto In1Pin = IN1;
|
||||
static constexpr auto In2Pin = IN2;
|
||||
static constexpr auto In3Pin = IN3;
|
||||
static constexpr auto In4Pin = IN4;
|
||||
|
||||
void begin();
|
||||
|
||||
State read();
|
||||
};
|
||||
|
||||
template<pin_t OUT, pin_t IN1, pin_t IN2, pin_t IN3, pin_t IN4>
|
||||
void Helper<OUT, IN1, IN2, IN3, IN4>::begin()
|
||||
{
|
||||
pinMode(OUT, OUTPUT);
|
||||
}
|
||||
|
||||
template<pin_t OUT, pin_t IN1, pin_t IN2, pin_t IN3, pin_t IN4>
|
||||
State Helper<OUT, IN1, IN2, IN3, IN4>::read()
|
||||
{
|
||||
digitalWrite(OUT, LOW);
|
||||
|
||||
pinMode(IN1, INPUT_PULLUP);
|
||||
pinMode(IN2, INPUT_PULLUP);
|
||||
pinMode(IN3, INPUT_PULLUP);
|
||||
pinMode(IN4, INPUT_PULLUP);
|
||||
|
||||
delay(1);
|
||||
|
||||
const bool result0 = digitalRead(IN1)==LOW;
|
||||
const bool result1 = digitalRead(IN2)==LOW;
|
||||
const bool result2 = digitalRead(IN3)==LOW;
|
||||
const bool result3 = digitalRead(IN4)==LOW;
|
||||
|
||||
digitalWrite(OUT, HIGH);
|
||||
|
||||
pinMode(IN1, INPUT_PULLUP);
|
||||
pinMode(IN2, INPUT_PULLUP);
|
||||
pinMode(IN3, INPUT_PULLUP);
|
||||
pinMode(IN4, INPUT_PULLUP);
|
||||
|
||||
delay(1);
|
||||
|
||||
const bool result4 = digitalRead(IN1);
|
||||
const bool result5 = digitalRead(IN2);
|
||||
const bool result6 = digitalRead(IN3);
|
||||
const bool result7 = digitalRead(IN4);
|
||||
|
||||
return std::make_tuple(result0, result1, result2, result3, result4, result5, result6, result7);
|
||||
}
|
||||
|
||||
#ifdef FEATURE_DPAD_5WIRESW
|
||||
Helper<PINS_DPAD_5WIRESW_OUT, PINS_DPAD_5WIRESW_IN1, PINS_DPAD_5WIRESW_IN2, PINS_DPAD_5WIRESW_IN3, PINS_DPAD_5WIRESW_IN4> helper;
|
||||
State lastState;
|
||||
millis_t debounceUp, debounceDown, debounceConfirm, debounceBack, debounceProfile0, debounceProfile1, debounceProfile2, debounceProfile3;
|
||||
|
||||
void init()
|
||||
{
|
||||
helper.begin();
|
||||
debounceUp = debounceDown = debounceConfirm = debounceBack = debounceProfile0 = debounceProfile1 = debounceProfile2 = debounceProfile3 = millis();
|
||||
}
|
||||
|
||||
void update()
|
||||
{
|
||||
const auto state = helper.read();
|
||||
const auto now = millis();
|
||||
|
||||
enum {
|
||||
ButtonUp = 3,
|
||||
ButtonDown = 0,
|
||||
ButtonConfirm = 1,
|
||||
ButtonBack = 2,
|
||||
ButtonProfile0 = 4,
|
||||
ButtonProfile1 = 5,
|
||||
ButtonProfile2 = 6,
|
||||
ButtonProfile3 = 7,
|
||||
};
|
||||
|
||||
if (std::get<ButtonUp>(lastState) != std::get<ButtonUp>(state) && now-debounceUp > settings.boardcomputerHardware.dpadDebounce)
|
||||
{
|
||||
if (std::get<ButtonUp>(state))
|
||||
InputDispatcher::rotate(-1);
|
||||
std::get<ButtonUp>(lastState) = std::get<ButtonUp>(state);
|
||||
debounceUp = now;
|
||||
}
|
||||
if (std::get<ButtonDown>(lastState) != std::get<ButtonDown>(state) && now-debounceDown > settings.boardcomputerHardware.dpadDebounce)
|
||||
{
|
||||
if (std::get<ButtonDown>(state))
|
||||
InputDispatcher::rotate(1);
|
||||
std::get<ButtonDown>(lastState) = std::get<ButtonDown>(state);
|
||||
debounceDown = now;
|
||||
}
|
||||
if (std::get<ButtonConfirm>(lastState) != std::get<ButtonConfirm>(state) && now-debounceConfirm > settings.boardcomputerHardware.dpadDebounce)
|
||||
{
|
||||
InputDispatcher::confirmButton(std::get<ButtonConfirm>(state));
|
||||
std::get<ButtonConfirm>(lastState) = std::get<ButtonConfirm>(state);
|
||||
debounceConfirm = now;
|
||||
}
|
||||
if (std::get<ButtonBack>(lastState) != std::get<ButtonBack>(state) && now-debounceBack > settings.boardcomputerHardware.dpadDebounce)
|
||||
{
|
||||
InputDispatcher::backButton(std::get<ButtonBack>(state));
|
||||
std::get<ButtonBack>(lastState) = std::get<ButtonBack>(state);
|
||||
debounceBack = now;
|
||||
}
|
||||
if (std::get<ButtonProfile0>(lastState) != std::get<ButtonProfile0>(state) && now-debounceProfile0 > settings.boardcomputerHardware.dpadDebounce)
|
||||
{
|
||||
if (std::get<ButtonProfile0>(state))
|
||||
{
|
||||
if (settingsPersister.openProfile(0))
|
||||
{
|
||||
if (!settingsPersister.load(settings))
|
||||
Serial.println("dpad5wire::update() load 0 failed");
|
||||
}
|
||||
else
|
||||
Serial.println("dpad5wire::update() openProfile 0 failed");
|
||||
}
|
||||
std::get<ButtonProfile0>(lastState) = std::get<ButtonProfile0>(state);
|
||||
debounceProfile0 = now;
|
||||
}
|
||||
if (std::get<ButtonProfile1>(lastState) != std::get<ButtonProfile1>(state) && now-debounceProfile1 > settings.boardcomputerHardware.dpadDebounce)
|
||||
{
|
||||
if (std::get<ButtonProfile1>(state))
|
||||
{
|
||||
if (settingsPersister.openProfile(1))
|
||||
{
|
||||
if (!settingsPersister.load(settings))
|
||||
Serial.println("dpad5wire::update() load 1 failed");
|
||||
}
|
||||
else
|
||||
Serial.println("dpad5wire::update() openProfile 1 failed");
|
||||
}
|
||||
std::get<ButtonProfile1>(lastState) = std::get<ButtonProfile1>(state);
|
||||
debounceProfile1 = now;
|
||||
}
|
||||
if (std::get<ButtonProfile2>(lastState) != std::get<ButtonProfile2>(state) && now-debounceProfile2 > settings.boardcomputerHardware.dpadDebounce)
|
||||
{
|
||||
if (std::get<ButtonProfile2>(state))
|
||||
{
|
||||
if (settingsPersister.openProfile(2))
|
||||
{
|
||||
if (!settingsPersister.load(settings))
|
||||
Serial.println("dpad5wire::update() load 2 failed");
|
||||
}
|
||||
else
|
||||
Serial.println("dpad5wire::update() openProfile 2 failed");
|
||||
}
|
||||
std::get<ButtonProfile2>(lastState) = std::get<ButtonProfile2>(state);
|
||||
debounceProfile2 = now;
|
||||
}
|
||||
if (std::get<ButtonProfile3>(lastState) != std::get<ButtonProfile3>(state) && now-debounceProfile3 > settings.boardcomputerHardware.dpadDebounce)
|
||||
{
|
||||
if (std::get<ButtonProfile3>(state))
|
||||
{
|
||||
if (settingsPersister.openProfile(3))
|
||||
{
|
||||
if (!settingsPersister.load(settings))
|
||||
Serial.println("dpad5wire::update() load 3 failed");
|
||||
}
|
||||
else
|
||||
Serial.println("dpad5wire::update() openProfile 3 failed");
|
||||
}
|
||||
std::get<ButtonProfile3>(lastState) = std::get<ButtonProfile3>(state);
|
||||
debounceProfile3 = now;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
10
src/main.cpp
10
src/main.cpp
@ -15,6 +15,7 @@
|
||||
#include "screens.h"
|
||||
#include "dpad.h"
|
||||
#include "dpad3wire.h"
|
||||
#include "dpad5wire.h"
|
||||
#include "rotary.h"
|
||||
#include "serialhandler.h"
|
||||
#include "ota.h"
|
||||
@ -57,6 +58,11 @@ void setup()
|
||||
dpad3wire::init();
|
||||
#endif
|
||||
|
||||
#ifdef FEATURE_DPAD_5WIRESW
|
||||
bootLabel.redraw("dpad5wire");
|
||||
dpad5wire::init();
|
||||
#endif
|
||||
|
||||
#ifdef FEATURE_ROTARY
|
||||
bootLabel.redraw("rotary");
|
||||
initRotary();
|
||||
@ -179,6 +185,10 @@ void loop()
|
||||
dpad3wire::update();
|
||||
#endif
|
||||
|
||||
#ifdef FEATURE_DPAD_5WIRESW
|
||||
dpad5wire::update();
|
||||
#endif
|
||||
|
||||
if (!lastPotiRead || now - lastPotiRead >= 1000/settings.boardcomputerHardware.timersSettings.potiReadRate)
|
||||
{
|
||||
readPotis();
|
||||
|
@ -90,7 +90,7 @@ constexpr Settings::BoardcomputerHardware defaultBoardcomputerHardware {
|
||||
.gasMax = DEFAULT_GASMAX,
|
||||
.bremsMin = DEFAULT_BREMSMIN,
|
||||
.bremsMax = DEFAULT_BREMSMAX,
|
||||
#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW)
|
||||
#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) || defined(FEATURE_DPAD_5WIRESW)
|
||||
.dpadDebounce = 25,
|
||||
#endif
|
||||
#ifdef FEATURE_GAMETRAK
|
||||
|
@ -27,6 +27,7 @@
|
||||
#include "displays/menus/mosfetsmenu.h"
|
||||
#include "displays/menus/motorfeedbackdebugmenu.h"
|
||||
#include "displays/menus/motorstatedebugmenu.h"
|
||||
#include "displays/menus/profilesmenu.h"
|
||||
#include "displays/menus/presetsmenu.h"
|
||||
#include "displays/menus/boardcomputerhardwaresettingsmenu.h"
|
||||
#include "displays/menus/selectmodemenu.h"
|
||||
@ -100,6 +101,7 @@ union X {
|
||||
BackLeftMotorFeedbackDebugMenu backLeftMotorFeedbackDebugMenu;
|
||||
BackRightMotorFeedbackDebugMenu backRightMotorFeedbackDebugMenu;
|
||||
BoardcomputerHardwareSettingsMenu boardcomputerHardwareSettingsMenu;
|
||||
ProfilesMenu profilesMenu;
|
||||
PresetsMenu presetsMenu;
|
||||
SelectModeMenu selectModeMenu;
|
||||
SettingsMenu settingsMenu;
|
||||
@ -172,7 +174,7 @@ union X {
|
||||
GasMaxChangeScreen changeGasMax;
|
||||
BremsMinChangeScreen changeBremsMin;
|
||||
BremsMaxChangeScreen changeBremsMax;
|
||||
#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW)
|
||||
#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) || defined(FEATURE_DPAD_5WIRESW)
|
||||
DPadDebounceChangeScreen dPadDebounceChangeScreen;
|
||||
#endif
|
||||
#ifdef FEATURE_GAMETRAK
|
||||
@ -254,6 +256,7 @@ template<> decltype(displays.frontLeftMotorFeedbackDebugMenu) &
|
||||
template<> decltype(displays.frontRightMotorFeedbackDebugMenu) &getRefByType<decltype(displays.frontRightMotorFeedbackDebugMenu)>() { return displays.frontRightMotorFeedbackDebugMenu; }
|
||||
template<> decltype(displays.backLeftMotorFeedbackDebugMenu) &getRefByType<decltype(displays.backLeftMotorFeedbackDebugMenu)>() { return displays.backLeftMotorFeedbackDebugMenu; }
|
||||
template<> decltype(displays.backRightMotorFeedbackDebugMenu) &getRefByType<decltype(displays.backRightMotorFeedbackDebugMenu)>() { return displays.backRightMotorFeedbackDebugMenu; }
|
||||
template<> decltype(displays.profilesMenu) &getRefByType<decltype(displays.profilesMenu)>() { return displays.profilesMenu; }
|
||||
template<> decltype(displays.presetsMenu) &getRefByType<decltype(displays.presetsMenu)>() { return displays.presetsMenu; }
|
||||
template<> decltype(displays.selectModeMenu) &getRefByType<decltype(displays.selectModeMenu)>() { return displays.selectModeMenu; }
|
||||
template<> decltype(displays.settingsMenu) &getRefByType<decltype(displays.settingsMenu)>() { return displays.settingsMenu; }
|
||||
@ -327,7 +330,7 @@ template<> decltype(displays.changeGasMin) &
|
||||
template<> decltype(displays.changeGasMax) &getRefByType<decltype(displays.changeGasMax)>() { return displays.changeGasMax; }
|
||||
template<> decltype(displays.changeBremsMin) &getRefByType<decltype(displays.changeBremsMin)>() { return displays.changeBremsMin; }
|
||||
template<> decltype(displays.changeBremsMax) &getRefByType<decltype(displays.changeBremsMax)>() { return displays.changeBremsMax; }
|
||||
#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW)
|
||||
#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) || defined(FEATURE_DPAD_5WIRESW)
|
||||
template<> decltype(displays.dPadDebounceChangeScreen) &getRefByType<decltype(displays.dPadDebounceChangeScreen)>() { return displays.dPadDebounceChangeScreen; }
|
||||
#endif
|
||||
#ifdef FEATURE_GAMETRAK
|
||||
|
@ -53,7 +53,7 @@ struct Settings
|
||||
struct BoardcomputerHardware {
|
||||
int16_t sampleCount;
|
||||
int16_t gasMin, gasMax, bremsMin, bremsMax;
|
||||
#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW)
|
||||
#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) || defined(FEATURE_DPAD_5WIRESW)
|
||||
uint8_t dpadDebounce;
|
||||
#endif
|
||||
#ifdef FEATURE_GAMETRAK
|
||||
@ -141,7 +141,7 @@ void Settings::executeForEverySetting(T &&callable)
|
||||
callable("gasMax", boardcomputerHardware.gasMax);
|
||||
callable("bremsMin", boardcomputerHardware.bremsMin);
|
||||
callable("bremsMax", boardcomputerHardware.bremsMax);
|
||||
#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW)
|
||||
#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) || defined(FEATURE_DPAD_5WIRESW)
|
||||
callable("dpadDebounce", boardcomputerHardware.dpadDebounce);
|
||||
#endif
|
||||
#ifdef FEATURE_GAMETRAK
|
||||
|
@ -64,7 +64,7 @@ struct GasMinAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRe
|
||||
struct GasMaxAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.boardcomputerHardware.gasMax; } };
|
||||
struct BremsMinAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.boardcomputerHardware.bremsMin; } };
|
||||
struct BremsMaxAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.boardcomputerHardware.bremsMax; } };
|
||||
#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW)
|
||||
#if defined(FEATURE_DPAD) || defined(FEATURE_DPAD_3WIRESW) || defined(FEATURE_DPAD_5WIRESW)
|
||||
struct DPadDebounceAccessor : public RefAccessorSaveSettings<uint8_t> { uint8_t &getRef() const override { return settings.boardcomputerHardware.dpadDebounce; } };
|
||||
#endif
|
||||
#ifdef FEATURE_GAMETRAK
|
||||
|
@ -57,6 +57,7 @@ constexpr char TEXT_STATUS[] = "Status";
|
||||
constexpr char TEXT_SELECTMODE[] = "Select mode";
|
||||
constexpr char TEXT_MODESETTINGS[] = "Mode settings";
|
||||
constexpr char TEXT_PRESETS[] = "Presets";
|
||||
constexpr char TEXT_PROFILES[] = "Profiles";
|
||||
constexpr char TEXT_GRAPHS[] = "Graphs";
|
||||
//constexpr char TEXT_BMS[] = "BMS";
|
||||
constexpr char TEXT_SETTINGS[] = "Settings";
|
||||
@ -255,6 +256,14 @@ constexpr char TEXT_SWAPSCREENBYTES[] = "Swap screen bytes";
|
||||
constexpr char TEXT_TIMERS[] = "Timers";
|
||||
//constexpr char TEXT_BACK[] = "Back";
|
||||
|
||||
//ProfilesMenu
|
||||
//constexpr char TEXT_PROFILES[] = "Profiles";
|
||||
constexpr char TEXT_PROFILE0[] = "Profile 0";
|
||||
constexpr char TEXT_PROFILE1[] = "Profile 1";
|
||||
constexpr char TEXT_PROFILE2[] = "Profile 2";
|
||||
constexpr char TEXT_PROFILE3[] = "Profile 3";
|
||||
//constexpr char TEXT_BACK[] = "Back";
|
||||
|
||||
//PresetsMenu
|
||||
//constexpr char TEXT_PRESETS[] = "Presets";
|
||||
constexpr char TEXT_DEFAULTEVERYTHING[] = "Default everything";
|
||||
|
Reference in New Issue
Block a user