Lock screen pin now configurable
This commit is contained in:
Submodule components/cpputils updated: 3cfb45a8ec...43682439fe
Submodule components/espcpputils updated: 1e0af13a52...6274c103b4
2
esp-idf
2
esp-idf
Submodule esp-idf updated: 9e9abdf483...0e76163859
@ -71,6 +71,7 @@ set(headers
|
|||||||
displays/menus/boardcomputerhardwaresettingsmenu.h
|
displays/menus/boardcomputerhardwaresettingsmenu.h
|
||||||
displays/menus/dynamicdebugmenu.h
|
displays/menus/dynamicdebugmenu.h
|
||||||
displays/menus/limitssettingsmenu.h
|
displays/menus/limitssettingsmenu.h
|
||||||
|
displays/menus/lockscreensettingsmenu.h
|
||||||
displays/menus/mainmenu.h
|
displays/menus/mainmenu.h
|
||||||
displays/menus/motorfeedbackdebugmenu.h
|
displays/menus/motorfeedbackdebugmenu.h
|
||||||
displays/menus/wifiscanmenu.h
|
displays/menus/wifiscanmenu.h
|
||||||
|
@ -151,4 +151,8 @@ struct CenterOffsetAccessor : public RefAccessorSaveSettings<int16_t> { int16_t
|
|||||||
struct SmallOffsetAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.ledstrip.smallOffset; } };
|
struct SmallOffsetAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.ledstrip.smallOffset; } };
|
||||||
struct BigOffsetAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.ledstrip.bigOffset; } };
|
struct BigOffsetAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.ledstrip.bigOffset; } };
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
struct LockscreenAllowPresetSwitchAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.lockscreen.allowPresetSwitch; } };
|
||||||
|
template<uint8_t index>
|
||||||
|
struct LockscreenPinDigitAccessor : public RefAccessorSaveSettings<int8_t> { int8_t &getRef() const override { return settings.lockscreen.pin[index]; } };
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
// 3rdparty lib includes
|
||||||
|
#include <fmt/core.h>
|
||||||
|
|
||||||
// local includes
|
// local includes
|
||||||
#include "textinterface.h"
|
#include "textinterface.h"
|
||||||
#include "globals.h"
|
#include "globals.h"
|
||||||
@ -20,21 +23,21 @@ using BluetoothHasClientText = BluetoothStatusTextHelper<TEXT_BLUETOOTHHASCLIENT
|
|||||||
//using BluetoothConnectedText = BluetoothStatusTextHelper<TEXT_BLUETOOTHCONNECTED, bool, &BluetoothSerial::connected>;
|
//using BluetoothConnectedText = BluetoothStatusTextHelper<TEXT_BLUETOOTHCONNECTED, bool, &BluetoothSerial::connected>;
|
||||||
struct BluetoothConnectedText : public virtual TextInterface {
|
struct BluetoothConnectedText : public virtual TextInterface {
|
||||||
public:
|
public:
|
||||||
std::string text() const override { return std::string{"connected: "} + to_string(bluetoothSerial.connected()); }
|
std::string text() const override { return fmt::format("{}: {}", TEXT_BLUETOOTHCONNECTED, to_string(bluetoothSerial.connected())); }
|
||||||
};
|
};
|
||||||
|
|
||||||
//constexpr char TEXT_BLUETOOTHISREADY[] = "Is ready: ";
|
//constexpr char TEXT_BLUETOOTHISREADY[] = "Is ready: ";
|
||||||
//using BluetoothIsReadyText = BluetoothStatusTextHelper<TEXT_BLUETOOTHISREADY, bool, &BluetoothSerial::isReady>;
|
//using BluetoothIsReadyText = BluetoothStatusTextHelper<TEXT_BLUETOOTHISREADY, bool, &BluetoothSerial::isReady>;
|
||||||
struct BluetoothIsReadyText : public virtual TextInterface {
|
struct BluetoothIsReadyText : public virtual TextInterface {
|
||||||
public:
|
public:
|
||||||
std::string text() const override { return std::string{"isReady: "} + to_string(bluetoothSerial.isReady()); }
|
std::string text() const override { return fmt::format("{}: {}", TEXT_BLUETOOTHISREADY, to_string(bluetoothSerial.isReady())); }
|
||||||
};
|
};
|
||||||
|
|
||||||
//constexpr char TEXT_BLUETOOTHISREADYMASTER[] = "Is ready (M): ";
|
//constexpr char TEXT_BLUETOOTHISREADYMASTER[] = "Is ready (M): ";
|
||||||
//using BluetoothIsReadyMasterText = BluetoothStatusTextHelper<TEXT_BLUETOOTHISREADYMASTER, bool, &BluetoothSerial::isReady>;
|
//using BluetoothIsReadyMasterText = BluetoothStatusTextHelper<TEXT_BLUETOOTHISREADYMASTER, bool, &BluetoothSerial::isReady>;
|
||||||
class BluetoothIsReadyMasterText : public virtual TextInterface {
|
class BluetoothIsReadyMasterText : public virtual TextInterface {
|
||||||
public:
|
public:
|
||||||
std::string text() const override { return std::string{"isReady (M): "} + to_string(bluetoothSerial.isReady(true)); }
|
std::string text() const override { return fmt::format("{}: {}", TEXT_BLUETOOTHISREADYMASTER, to_string(bluetoothSerial.isReady(true))); }
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,8 @@ bool confirmButtonLongPressed{};
|
|||||||
bool backButtonPressed{};
|
bool backButtonPressed{};
|
||||||
bool backButtonLongPressed{};
|
bool backButtonLongPressed{};
|
||||||
|
|
||||||
|
bool profileButtonDisabled{};
|
||||||
|
|
||||||
std::optional<espchrono::millis_clock::time_point> upPressedSince;
|
std::optional<espchrono::millis_clock::time_point> upPressedSince;
|
||||||
int upPressRepeat{};
|
int upPressRepeat{};
|
||||||
std::optional<espchrono::millis_clock::time_point> downPressedSince;
|
std::optional<espchrono::millis_clock::time_point> downPressedSince;
|
||||||
@ -126,6 +128,9 @@ public:
|
|||||||
if (!pressed)
|
if (!pressed)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (profileButtonDisabled)
|
||||||
|
return;
|
||||||
|
|
||||||
switchProfile(index);
|
switchProfile(index);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -1,13 +1,16 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
// system includes
|
||||||
#include <array>
|
#include <array>
|
||||||
|
|
||||||
|
// local includes
|
||||||
#include "display.h"
|
#include "display.h"
|
||||||
#include "widgets/label.h"
|
#include "widgets/label.h"
|
||||||
#include "globals.h"
|
#include "globals.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
#include "texts.h"
|
#include "texts.h"
|
||||||
#include "modes/ignoreinputmode.h"
|
#include "modes/ignoreinputmode.h"
|
||||||
|
#include "buttons.h"
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
class MainMenu;
|
class MainMenu;
|
||||||
@ -25,7 +28,7 @@ class Lockscreen : public Display, public DummyBack
|
|||||||
public:
|
public:
|
||||||
void start() override;
|
void start() override;
|
||||||
void initScreen() override;
|
void initScreen() override;
|
||||||
void update() override {}
|
void update() override;
|
||||||
void redraw() override;
|
void redraw() override;
|
||||||
void stop() override;
|
void stop() override;
|
||||||
|
|
||||||
@ -62,6 +65,8 @@ void Lockscreen::start()
|
|||||||
|
|
||||||
m_oldMode = currentMode;
|
m_oldMode = currentMode;
|
||||||
currentMode = &m_mode;
|
currentMode = &m_mode;
|
||||||
|
|
||||||
|
profileButtonDisabled = !settings.lockscreen.allowPresetSwitch;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Lockscreen::initScreen()
|
void Lockscreen::initScreen()
|
||||||
@ -95,6 +100,12 @@ void Lockscreen::initScreen()
|
|||||||
m_labels[0].redraw(std::to_string(m_numbers[0]));
|
m_labels[0].redraw(std::to_string(m_numbers[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Lockscreen::update()
|
||||||
|
{
|
||||||
|
// just in case someone changes that settings somehow
|
||||||
|
profileButtonDisabled = !settings.lockscreen.allowPresetSwitch;
|
||||||
|
}
|
||||||
|
|
||||||
void Lockscreen::redraw()
|
void Lockscreen::redraw()
|
||||||
{
|
{
|
||||||
if (m_pressed)
|
if (m_pressed)
|
||||||
@ -104,7 +115,7 @@ void Lockscreen::redraw()
|
|||||||
|
|
||||||
if (++m_currentIndex>=4)
|
if (++m_currentIndex>=4)
|
||||||
{
|
{
|
||||||
if (m_numbers == decltype(m_numbers){1,2,3,4})
|
if (m_numbers == settings.lockscreen.pin)
|
||||||
{
|
{
|
||||||
switchScreen<MainMenu>();
|
switchScreen<MainMenu>();
|
||||||
return;
|
return;
|
||||||
@ -150,6 +161,8 @@ void Lockscreen::stop()
|
|||||||
|
|
||||||
currentMode = m_oldMode;
|
currentMode = m_oldMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
profileButtonDisabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Lockscreen::confirm()
|
void Lockscreen::confirm()
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
#include "actions/dummyaction.h"
|
#include "actions/dummyaction.h"
|
||||||
#include "actions/switchscreenaction.h"
|
#include "actions/switchscreenaction.h"
|
||||||
#include "actions/toggleboolaction.h"
|
#include "actions/toggleboolaction.h"
|
||||||
|
#include "icons/lock.h"
|
||||||
#include "icons/back.h"
|
#include "icons/back.h"
|
||||||
#include "checkboxicon.h"
|
#include "checkboxicon.h"
|
||||||
#include "texts.h"
|
#include "texts.h"
|
||||||
@ -18,6 +19,7 @@
|
|||||||
// forward declares
|
// forward declares
|
||||||
namespace {
|
namespace {
|
||||||
class BoardcomputerHardwareSettingsMenu;
|
class BoardcomputerHardwareSettingsMenu;
|
||||||
|
class LockscreenSettingsMenu;
|
||||||
class CalibrateDisplay;
|
class CalibrateDisplay;
|
||||||
class GametrakCalibrateDisplay;
|
class GametrakCalibrateDisplay;
|
||||||
class TimersMenu;
|
class TimersMenu;
|
||||||
@ -31,20 +33,20 @@ struct GasText : public virtual TextInterface {
|
|||||||
public:
|
public:
|
||||||
std::string text() const override
|
std::string text() const override
|
||||||
{
|
{
|
||||||
return std::string{"gas: "} +
|
return fmt::format("{}: {}: {}",
|
||||||
(raw_gas ? std::to_string(*raw_gas) : "?") +
|
"gas",
|
||||||
": " +
|
raw_gas ? std::to_string(*raw_gas) : "?",
|
||||||
(gas ? fmt::format("{:.02f}", *gas) : "?");
|
gas ? fmt::format("{:.02f}", *gas) : "?");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
struct BremsText : public virtual TextInterface {
|
struct BremsText : public virtual TextInterface {
|
||||||
public:
|
public:
|
||||||
std::string text() const override
|
std::string text() const override
|
||||||
{
|
{
|
||||||
return std::string{"brems: "} +
|
return fmt::format("{}: {}: {}",
|
||||||
(raw_brems ? std::to_string(*raw_brems) : "?") +
|
"brems",
|
||||||
": " +
|
raw_brems ? std::to_string(*raw_brems) : "?",
|
||||||
(brems ? fmt::format("{:.02f}", *brems) : "?");
|
brems ? fmt::format("{:.02f}", *brems) : "?");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -160,6 +162,7 @@ class BoardcomputerHardwareSettingsMenu :
|
|||||||
public:
|
public:
|
||||||
BoardcomputerHardwareSettingsMenu()
|
BoardcomputerHardwareSettingsMenu()
|
||||||
{
|
{
|
||||||
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LOCKSCREENSETTINGS>, SwitchScreenAction<LockscreenSettingsMenu>, StaticMenuItemIcon<&icons::lock>>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, GasText, DisabledColor, StaticFont<2>, DummyAction>>();
|
constructMenuItem<makeComponent<MenuItem, GasText, DisabledColor, StaticFont<2>, DummyAction>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, BremsText, DisabledColor, StaticFont<2>, DummyAction>>();
|
constructMenuItem<makeComponent<MenuItem, BremsText, DisabledColor, StaticFont<2>, DummyAction>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CALIBRATE>, SwitchScreenAction<CalibrateDisplay>>>();
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_CALIBRATE>, SwitchScreenAction<CalibrateDisplay>>>();
|
||||||
|
72
main/displays/menus/lockscreensettingsmenu.h
Normal file
72
main/displays/menus/lockscreensettingsmenu.h
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
// local includes
|
||||||
|
#include "menudisplay.h"
|
||||||
|
#include "menuitem.h"
|
||||||
|
#include "actions/toggleboolaction.h"
|
||||||
|
#include "actions/switchscreenaction.h"
|
||||||
|
#include "texts.h"
|
||||||
|
#include "icons/back.h"
|
||||||
|
#include "checkboxicon.h"
|
||||||
|
#include "globals.h"
|
||||||
|
#include "accessors/settingsaccessors.h"
|
||||||
|
#include "changevaluedisplay.h"
|
||||||
|
|
||||||
|
// forward declares
|
||||||
|
namespace {
|
||||||
|
class BoardcomputerHardwareSettingsMenu;
|
||||||
|
class LockscreenSettingsMenu;
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
using namespace espgui;
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
using LockscreenPinDigit0ChangeScreen = makeComponent<
|
||||||
|
ChangeValueDisplay<int8_t>,
|
||||||
|
StaticText<TEXT_PINDIGIT0>,
|
||||||
|
LockscreenPinDigitAccessor<0>,
|
||||||
|
BackActionInterface<SwitchScreenAction<LockscreenSettingsMenu>>,
|
||||||
|
SwitchScreenAction<LockscreenSettingsMenu>
|
||||||
|
>;
|
||||||
|
|
||||||
|
using LockscreenPinDigit1ChangeScreen = makeComponent<
|
||||||
|
ChangeValueDisplay<int8_t>,
|
||||||
|
StaticText<TEXT_PINDIGIT1>,
|
||||||
|
LockscreenPinDigitAccessor<1>,
|
||||||
|
BackActionInterface<SwitchScreenAction<LockscreenSettingsMenu>>,
|
||||||
|
SwitchScreenAction<LockscreenSettingsMenu>
|
||||||
|
>;
|
||||||
|
|
||||||
|
using LockscreenPinDigit2ChangeScreen = makeComponent<
|
||||||
|
ChangeValueDisplay<int8_t>,
|
||||||
|
StaticText<TEXT_PINDIGIT2>,
|
||||||
|
LockscreenPinDigitAccessor<2>,
|
||||||
|
BackActionInterface<SwitchScreenAction<LockscreenSettingsMenu>>,
|
||||||
|
SwitchScreenAction<LockscreenSettingsMenu>
|
||||||
|
>;
|
||||||
|
|
||||||
|
using LockscreenPinDigit3ChangeScreen = makeComponent<
|
||||||
|
ChangeValueDisplay<int8_t>,
|
||||||
|
StaticText<TEXT_PINDIGIT3>,
|
||||||
|
LockscreenPinDigitAccessor<3>,
|
||||||
|
BackActionInterface<SwitchScreenAction<LockscreenSettingsMenu>>,
|
||||||
|
SwitchScreenAction<LockscreenSettingsMenu>
|
||||||
|
>;
|
||||||
|
|
||||||
|
class LockscreenSettingsMenu :
|
||||||
|
public MenuDisplay,
|
||||||
|
public StaticText<TEXT_LOCKSCREENSETTINGS>,
|
||||||
|
public BackActionInterface<SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
LockscreenSettingsMenu()
|
||||||
|
{
|
||||||
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_ALLOWPRESETSWITCH>, ToggleBoolAction, CheckboxIcon, LockscreenAllowPresetSwitchAccessor>>();
|
||||||
|
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_PINDIGIT0, LockscreenPinDigitAccessor<0>>, SwitchScreenAction<LockscreenPinDigit0ChangeScreen>>>();
|
||||||
|
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_PINDIGIT1, LockscreenPinDigitAccessor<1>>, SwitchScreenAction<LockscreenPinDigit1ChangeScreen>>>();
|
||||||
|
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_PINDIGIT2, LockscreenPinDigitAccessor<2>>, SwitchScreenAction<LockscreenPinDigit2ChangeScreen>>>();
|
||||||
|
constructMenuItem<makeComponent<MenuItem, TextWithValueHelper<TEXT_PINDIGIT3, LockscreenPinDigitAccessor<3>>, SwitchScreenAction<LockscreenPinDigit3ChangeScreen>>>();
|
||||||
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<BoardcomputerHardwareSettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
} // namespace
|
@ -40,10 +40,10 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
StarfieldDisplay::StarfieldDisplay() :
|
StarfieldDisplay::StarfieldDisplay() :
|
||||||
za(cpputils::randomNumber<uint8_t>(256, espcpputils::esp_random_device{})),
|
za(cpputils::randomNumber<uint8_t>(espcpputils::esp_random_device{})),
|
||||||
zb(cpputils::randomNumber<uint8_t>(256, espcpputils::esp_random_device{})),
|
zb(cpputils::randomNumber<uint8_t>(espcpputils::esp_random_device{})),
|
||||||
zc(cpputils::randomNumber<uint8_t>(256, espcpputils::esp_random_device{})),
|
zc(cpputils::randomNumber<uint8_t>(espcpputils::esp_random_device{})),
|
||||||
zx(cpputils::randomNumber<uint8_t>(256, espcpputils::esp_random_device{}))
|
zx(cpputils::randomNumber<uint8_t>(espcpputils::esp_random_device{}))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,6 +56,7 @@ using namespace std::chrono_literals;
|
|||||||
#include "displays/menus/ledstripmenu.h"
|
#include "displays/menus/ledstripmenu.h"
|
||||||
#endif
|
#endif
|
||||||
#include "displays/menus/limitssettingsmenu.h"
|
#include "displays/menus/limitssettingsmenu.h"
|
||||||
|
#include "displays/menus/lockscreensettingsmenu.h"
|
||||||
#include "displays/menus/mainmenu.h"
|
#include "displays/menus/mainmenu.h"
|
||||||
#include "displays/menus/tempomatmodesettingsmenu.h"
|
#include "displays/menus/tempomatmodesettingsmenu.h"
|
||||||
#include "displays/menus/modessettingsmenu.h"
|
#include "displays/menus/modessettingsmenu.h"
|
||||||
|
@ -224,6 +224,11 @@ constexpr Settings::Ledstrip defaultLedstrip {
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
constexpr Settings::LockscreenSettings defaultLockscreen {
|
||||||
|
.allowPresetSwitch = true,
|
||||||
|
.pin = { 1, 2, 3, 4 }
|
||||||
|
};
|
||||||
|
|
||||||
constexpr Settings defaultSettings {
|
constexpr Settings defaultSettings {
|
||||||
#ifdef FEATURE_BMS
|
#ifdef FEATURE_BMS
|
||||||
.autoConnectBms = false,
|
.autoConnectBms = false,
|
||||||
@ -249,6 +254,7 @@ constexpr Settings defaultSettings {
|
|||||||
#ifdef FEATURE_LEDSTRIP
|
#ifdef FEATURE_LEDSTRIP
|
||||||
.ledstrip = defaultLedstrip,
|
.ledstrip = defaultLedstrip,
|
||||||
#endif
|
#endif
|
||||||
|
.lockscreen = defaultLockscreen
|
||||||
};
|
};
|
||||||
|
|
||||||
StringSettings makeDefaultStringSettings()
|
StringSettings makeDefaultStringSettings()
|
||||||
|
@ -158,6 +158,11 @@ struct Settings
|
|||||||
} ledstrip;
|
} ledstrip;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
struct LockscreenSettings {
|
||||||
|
bool allowPresetSwitch;
|
||||||
|
std::array<int8_t, 4> pin;
|
||||||
|
} lockscreen;
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
void executeForEveryCommonSetting(T &&callable);
|
void executeForEveryCommonSetting(T &&callable);
|
||||||
|
|
||||||
@ -248,6 +253,9 @@ void Settings::executeForEveryCommonSetting(T &&callable)
|
|||||||
callable("smallOffset", ledstrip.smallOffset);
|
callable("smallOffset", ledstrip.smallOffset);
|
||||||
callable("bigOffset", ledstrip.bigOffset);
|
callable("bigOffset", ledstrip.bigOffset);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
callable("lockAlwPresetSw", lockscreen.allowPresetSwitch);
|
||||||
|
callable("lockscreenPin", lockscreen.pin);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
#include <fmt/core.h>
|
#include <fmt/core.h>
|
||||||
#include <cpputils.h>
|
#include <cpputils.h>
|
||||||
#include <espchrono.h>
|
#include <espchrono.h>
|
||||||
|
#include <futurecpp.h>
|
||||||
|
|
||||||
// local includes
|
// local includes
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
@ -276,6 +277,22 @@ template<> struct nvsGetterHelper<sntp_sync_mode_t> { static esp_err_t nvs_get(n
|
|||||||
return err;
|
return err;
|
||||||
}};
|
}};
|
||||||
#endif
|
#endif
|
||||||
|
template<> struct nvsGetterHelper<std::array<int8_t, 4>> { static esp_err_t nvs_get(nvs_handle handle, const char* key, std::array<int8_t, 4>* out_value)
|
||||||
|
{
|
||||||
|
uint32_t tempValue;
|
||||||
|
esp_err_t err = nvs_get_u32(handle, key, &tempValue);
|
||||||
|
if (err == ESP_OK)
|
||||||
|
*out_value = std::bit_cast<std::array<int8_t, 4>>(tempValue);
|
||||||
|
return err;
|
||||||
|
}};
|
||||||
|
template<> struct nvsGetterHelper<std::array<uint8_t, 4>> { static esp_err_t nvs_get(nvs_handle handle, const char* key, std::array<uint8_t, 4>* out_value)
|
||||||
|
{
|
||||||
|
uint32_t tempValue;
|
||||||
|
esp_err_t err = nvs_get_u32(handle, key, &tempValue);
|
||||||
|
if (err == ESP_OK)
|
||||||
|
*out_value = std::bit_cast<std::array<uint8_t, 4>>(tempValue);
|
||||||
|
return err;
|
||||||
|
}};
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
bool SettingsPersister::load(T &settings)
|
bool SettingsPersister::load(T &settings)
|
||||||
@ -385,6 +402,14 @@ template<> struct nvsSetterHelper<sntp_sync_mode_t> { static esp_err_t nvs_set(n
|
|||||||
return nvs_set_u8(handle, key, uint8_t(value));
|
return nvs_set_u8(handle, key, uint8_t(value));
|
||||||
}};
|
}};
|
||||||
#endif
|
#endif
|
||||||
|
template<> struct nvsSetterHelper<std::array<int8_t, 4>> { static esp_err_t nvs_set(nvs_handle handle, const char* key, std::array<int8_t, 4> value)
|
||||||
|
{
|
||||||
|
return nvs_set_u32(handle, key, std::bit_cast<uint32_t>(value));
|
||||||
|
}};
|
||||||
|
template<> struct nvsSetterHelper<std::array<uint8_t, 4>> { static esp_err_t nvs_set(nvs_handle handle, const char* key, std::array<uint8_t, 4> value)
|
||||||
|
{
|
||||||
|
return nvs_set_u32(handle, key, std::bit_cast<uint32_t>(value));
|
||||||
|
}};
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
bool SettingsPersister::save(T &settings)
|
bool SettingsPersister::save(T &settings)
|
||||||
|
10
main/texts.h
10
main/texts.h
@ -243,6 +243,15 @@ constexpr char TEXT_SMALLOFFSET[] = "Small Offset";
|
|||||||
constexpr char TEXT_BIGOFFSET[] = "Big Offset";
|
constexpr char TEXT_BIGOFFSET[] = "Big Offset";
|
||||||
//constexpr char TEXT_BACK[] = "Back";
|
//constexpr char TEXT_BACK[] = "Back";
|
||||||
|
|
||||||
|
//LockscreenSettingsMenu
|
||||||
|
constexpr char TEXT_LOCKSCREENSETTINGS[] = "Lockscreen Settings";
|
||||||
|
constexpr char TEXT_ALLOWPRESETSWITCH[] = "Allow preset switch";
|
||||||
|
constexpr char TEXT_PINDIGIT0[] = "PIN digit0";
|
||||||
|
constexpr char TEXT_PINDIGIT1[] = "PIN digit1";
|
||||||
|
constexpr char TEXT_PINDIGIT2[] = "PIN digit2";
|
||||||
|
constexpr char TEXT_PINDIGIT3[] = "PIN digit3";
|
||||||
|
//constexpr char TEXT_BACK[] = "Back";
|
||||||
|
|
||||||
//ModesSettingsMenu
|
//ModesSettingsMenu
|
||||||
//constexpr char TEXT_MODESSETTINGS[] = "Modes settings";
|
//constexpr char TEXT_MODESSETTINGS[] = "Modes settings";
|
||||||
constexpr char TEXT_DEFAULTMODESETTIGNS[] = "Default mode settings";
|
constexpr char TEXT_DEFAULTMODESETTIGNS[] = "Default mode settings";
|
||||||
@ -271,6 +280,7 @@ constexpr char TEXT_NCRUISEMOTTGT[] = "nCruiseMotTgt";
|
|||||||
|
|
||||||
//BoardcomputerHardwareSettingsMenu
|
//BoardcomputerHardwareSettingsMenu
|
||||||
//constexpr char TEXT_BOARDCOMPUTERHARDWARESETTINGS[] = "Boardcomputer H/W settings";
|
//constexpr char TEXT_BOARDCOMPUTERHARDWARESETTINGS[] = "Boardcomputer H/W settings";
|
||||||
|
//constexpr char TEXT_LOCKSCREENSETTINGS[] = "Lockscreen Settings";
|
||||||
constexpr char TEXT_CALIBRATE[] = "Calibrate";
|
constexpr char TEXT_CALIBRATE[] = "Calibrate";
|
||||||
constexpr char TEXT_SAMPLECOUNT[] = "sampleCount";
|
constexpr char TEXT_SAMPLECOUNT[] = "sampleCount";
|
||||||
constexpr char TEXT_GASMIN[] = "gasMin";
|
constexpr char TEXT_GASMIN[] = "gasMin";
|
||||||
|
Reference in New Issue
Block a user