From da10c8421072ddd7f8f9563eb247043cd07641bf Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Mon, 3 Jan 2022 03:03:40 +0100 Subject: [PATCH] Moved settings.lockscreen --- main/accessors/settingsaccessors.h | 6 ++--- main/displays/lockscreen.cpp | 26 +++++++++++++------ main/displays/potiscalibratedisplay.cpp | 5 ++-- main/main.cpp | 2 +- main/newsettings.h | 34 +++++++++++++++++++++++-- main/presets.h | 8 ------ main/settings.h | 14 +--------- 7 files changed, 57 insertions(+), 38 deletions(-) diff --git a/main/accessors/settingsaccessors.h b/main/accessors/settingsaccessors.h index 7df4cbe..349a7c8 100644 --- a/main/accessors/settingsaccessors.h +++ b/main/accessors/settingsaccessors.h @@ -216,10 +216,10 @@ struct BatteryWHperKMAccessor : public NewSettingsAccessor { ConfigWra struct BatteryApplyCalibrationAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.battery.applyCalibration; } }; // Lockscreen -struct LockscreenAllowPresetSwitchAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.lockscreen.allowPresetSwitch; } }; +struct LockscreenAllowPresetSwitchAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.lockscreen.allowPresetSwitch; } }; template -struct LockscreenPinDigitAccessor : public RefAccessorSaveSettings { int8_t &getRef() const override { return settings.lockscreen.pin[index]; } }; -struct LockscreenKeepLockedAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.lockscreen.keepLockedAfterReboot; } }; +struct LockscreenPinDigitAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.lockscreen.pin[index].digit; } }; +struct LockscreenKeepLockedAccessor : public NewSettingsAccessor { ConfigWrapper &getConfig() const override { return configs.lockscreen.keepLockedAfterReboot; } }; // Handbremse struct HandbremsEnabledAccessor : public RefAccessorSaveSettings { bool &getRef() const override { return settings.handbremse.enable; } }; diff --git a/main/displays/lockscreen.cpp b/main/displays/lockscreen.cpp index 1006073..357315d 100644 --- a/main/displays/lockscreen.cpp +++ b/main/displays/lockscreen.cpp @@ -14,6 +14,18 @@ #include "ledstripdefines.h" #endif +bool isValidPin(std::array enteredPin) +{ + for (int i = 0; i < 4; i++) + { + if (enteredPin[i] != configs.lockscreen.pin[i].digit.value) + { + return false; + } + } + return true; +} + void Lockscreen::start() { Base::start(); @@ -27,10 +39,9 @@ void Lockscreen::start() currentMode = &m_mode; isLocked = true; - if (settings.lockscreen.keepLockedAfterReboot && !settings.lockscreen.locked) + if (configs.lockscreen.keepLockedAfterReboot.value && !configs.lockscreen.locked.value) { - settings.lockscreen.locked = true; - saveSettings(); + configs.write_config(configs.lockscreen.locked, true); } } @@ -85,7 +96,7 @@ void Lockscreen::redraw() if (!m_back_pressed && ++m_currentIndex>=4) { - if (m_numbers == settings.lockscreen.pin) + if (isValidPin(m_numbers)) { if (!gas || !brems || *gas > 200.f || *brems > 200.f) espgui::switchScreen(true); @@ -148,17 +159,16 @@ void Lockscreen::stop() isLocked = false; if (!(!gas || !brems || *gas > 200.f || *brems > 200.f)) { - if (settings.lockscreen.keepLockedAfterReboot && settings.lockscreen.locked) + if (configs.lockscreen.keepLockedAfterReboot.value && configs.lockscreen.locked.value) { - settings.lockscreen.locked = false; - saveSettings(); + configs.write_config(configs.lockscreen.locked, false); } } } void Lockscreen::buttonPressed(espgui::Button button) { - if (settings.lockscreen.allowPresetSwitch || + if (configs.lockscreen.allowPresetSwitch.value || !cpputils::is_in(button, BobbyButton::Profile0, BobbyButton::Profile1, BobbyButton::Profile2, BobbyButton::Profile3)) Base::buttonPressed(button); diff --git a/main/displays/potiscalibratedisplay.cpp b/main/displays/potiscalibratedisplay.cpp index 5d78723..36cd8ad 100644 --- a/main/displays/potiscalibratedisplay.cpp +++ b/main/displays/potiscalibratedisplay.cpp @@ -198,11 +198,10 @@ void PotisCalibrateDisplay::buttonPressed(espgui::Button button) case Status::Begin: if (m_bootup) espgui::switchScreen(); - else if (settings.lockscreen.keepLockedAfterReboot && settings.lockscreen.locked) + else if (configs.lockscreen.keepLockedAfterReboot.value && configs.lockscreen.locked.value) { espgui::switchScreen(); - settings.lockscreen.locked = false; - saveSettings(); + configs.write_config(configs.lockscreen.locked, false); } else espgui::switchScreen(); diff --git a/main/main.cpp b/main/main.cpp index 9d1a500..dc80dfa 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -79,7 +79,7 @@ extern "C" void app_main() { espgui::switchScreen(true); } - else if (settings.lockscreen.keepLockedAfterReboot && settings.lockscreen.locked) + else if (configs.lockscreen.keepLockedAfterReboot.value && configs.lockscreen.locked.value) { espgui::switchScreen(); } diff --git a/main/newsettings.h b/main/newsettings.h index c68ceae..8197939 100644 --- a/main/newsettings.h +++ b/main/newsettings.h @@ -22,6 +22,8 @@ // local includes #include "ledstrip.h" +#include "unifiedmodelmode.h" +#include "displays/lockscreen.h" using namespace espconfig; @@ -83,6 +85,15 @@ public: ConfigWrapper url; }; +class ConfiguredLockscreenDigit +{ +public: + ConfiguredLockscreenDigit(const char *digitKey) : + digit{0, DoReset, MinMaxOrZeroValue, digitKey } + {} + ConfigWrapper digit; +}; + class ConfigContainer { using mac_t = wifi_stack::mac_t; @@ -248,7 +259,18 @@ public: ConfigWrapper back50VoltCalibration {5000, DoReset, {}, "batB50VCal" }; ConfigWrapper applyCalibration {true, DoReset, {}, "applyBatCal" }; } battery; - // end old settings + + struct { + ConfigWrapper allowPresetSwitch {true, DoReset, {}, "lockAlwPresetSw" }; + ConfigWrapper keepLockedAfterReboot {false, DoReset, {}, "keepLocked" }; + ConfigWrapper locked {false, DoReset, {}, "currentlyLocked" }; + std::array pin { + ConfiguredLockscreenDigit {"lockscreenPin0"}, + ConfiguredLockscreenDigit {"lockscreenPin1"}, + ConfiguredLockscreenDigit {"lockscreenPin2"}, + ConfiguredLockscreenDigit {"lockscreenPin3"} + }; + } lockscreen; struct { ConfigWrapper bleEnabled {true, DoReset, {}, "bleEnabled" }; @@ -496,7 +518,15 @@ public: x(battery.back30VoltCalibration) \ x(battery.front50VoltCalibration) \ x(battery.back50VoltCalibration) \ - x(battery.applyCalibration) + x(battery.applyCalibration) \ + \ + x(lockscreen.allowPresetSwitch) \ + x(lockscreen.keepLockedAfterReboot) \ + x(lockscreen.locked) \ + x(lockscreen.pin[0].digit) \ + x(lockscreen.pin[1].digit) \ + x(lockscreen.pin[2].digit) \ + x(lockscreen.pin[3].digit) //x(bleSettings.bleEnabled) template diff --git a/main/presets.h b/main/presets.h index 4495735..4e0ad42 100644 --- a/main/presets.h +++ b/main/presets.h @@ -130,13 +130,6 @@ constexpr Settings::Handbremse defaultHandbremse { .visualize = true, }; -constexpr Settings::LockscreenSettings defaultLockscreen { - .allowPresetSwitch = true, - .keepLockedAfterReboot = false, - .locked = false, - .pin = { 1, 2, 3, 4 } -}; - constexpr Settings::Hybrid defaultHybrid { .hybridMode = UnifiedModelMode::FocTorque, .enable = false, @@ -169,7 +162,6 @@ constexpr Settings defaultSettings { .larsmMode = defaultLarsmMode, .motortestMode = defaultMotortestMode, .hybrid = defaultHybrid, - .lockscreen = defaultLockscreen, .savedStatistics = defaultSavedStatistics, .handbremse = defaultHandbremse, #ifdef FEATURE_ESPNOW diff --git a/main/settings.h b/main/settings.h index 4dbcad1..1dca710 100644 --- a/main/settings.h +++ b/main/settings.h @@ -71,20 +71,13 @@ struct Settings uint16_t maxPwm; // profileSetting } motortestMode; - struct Hybrid { + struct Hybrid { // wont convert UnifiedModelMode hybridMode; bool enable; int16_t activationLimit; int16_t deactivationLimit; } hybrid; - struct LockscreenSettings { - bool allowPresetSwitch; - bool keepLockedAfterReboot; - bool locked; - std::array pin; - } lockscreen; - struct SavedStatistics { uint32_t totalCentimeters; } savedStatistics; @@ -119,11 +112,6 @@ void Settings::executeForEveryCommonSetting(T &&callable) callable("hybridAcL", hybrid.activationLimit); callable("hybridDeacL", hybrid.deactivationLimit); - callable("lockAlwPresetSw", lockscreen.allowPresetSwitch); - callable("keepLocked", lockscreen.keepLockedAfterReboot); - callable("currentlyLocked", lockscreen.locked); - callable("lockscreenPin", lockscreen.pin); - callable("totalCentimeter", savedStatistics.totalCentimeters); callable("handBremsE", handbremse.enable);