From c51b18dd3692668266cc751365e1c2da560d9741 Mon Sep 17 00:00:00 2001 From: Ray Jones Date: Tue, 17 Sep 2019 20:07:57 +1000 Subject: [PATCH] Added password hold option --- icons/Password.bmp | Bin 0 -> 254 bytes src/OLED/MenuSelScreen.cpp | 55 +++++++++++++++++++------ src/OLED/MenuSelScreen.h | 1 + src/OLED/PasswordScreen.cpp | 79 ++++++++++++++++++++++++------------ src/OLED/PasswordScreen.h | 5 ++- src/OLED/fonts/Icons.cpp | 28 +++++++++++++ src/OLED/fonts/Icons.h | 2 + src/Utility/NVStorage.cpp | 2 + src/Utility/NVStorage.h | 3 ++ 9 files changed, 137 insertions(+), 38 deletions(-) create mode 100644 icons/Password.bmp diff --git a/icons/Password.bmp b/icons/Password.bmp new file mode 100644 index 0000000000000000000000000000000000000000..cf127d7062108662fe5d1eb615a24450c111865d GIT binary patch literal 254 zcmZvV!3~8l3`33dZych(#h-&a>u~Oou{u&GAUwAMg!GfzPEt2r)F{V3BFAU%RwlC9U7=-o$#z2QI=B*B~Eb7Q~9FJ(*bFC9LA M 0) { + __Expiry = 0; + _bPasswordOK = false; + } + } + return __Expiry != 0 || _bPasswordOK; +}; diff --git a/src/OLED/PasswordScreen.h b/src/OLED/PasswordScreen.h index 465d946..5301cb7 100644 --- a/src/OLED/PasswordScreen.h +++ b/src/OLED/PasswordScreen.h @@ -33,10 +33,13 @@ class CPasswordScreen : public CScreenHeader { bool _bPasswordOK; int _PWcol; unsigned long _SaveTime; + static long __Expiry; + void __initPassword(bool get); protected: bool _showPassword(); + void _holdPassword(); void _getPassword(); - bool _isPasswordOK() { return _bPasswordOK; }; + bool _isPasswordOK(); void _enableStoringMessage(); void _initUI(); bool _busy(); diff --git a/src/OLED/fonts/Icons.cpp b/src/OLED/fonts/Icons.cpp index d854308..db61ff3 100644 --- a/src/OLED/fonts/Icons.cpp +++ b/src/OLED/fonts/Icons.cpp @@ -1345,3 +1345,31 @@ const uint8_t PROGMEM userBitmap[] = const BITMAP_INFO UserIconInfo(8, 9, userBitmap); +// +// Image data for password +// + +const uint8_t PROGMEM passwordIcon[] = +{ + 0x0E, 0x00, // ### + 0x1B, 0x00, // ## ## + 0x11, 0x00, // # # + 0x11, 0x00, // # # + 0x7F, 0xC0, // ######### + 0x71, 0xC0, // ### ### + 0x71, 0xC0, // ### ### + 0x7B, 0xC0, // #### #### + 0x7B, 0xC0, // #### #### + 0x7F, 0xC0, // ######### + 0x00, 0x00, // + 0xEE, 0xE0, // ### ### ### + 0xAA, 0xA0, // # # # # # # + 0x22, 0x20, // # # # + 0x44, 0x40, // # # # + 0x00, 0x00, // + 0x44, 0x40, // # # # +}; + +const BITMAP_INFO passwordIconInfo(11, 17, passwordIcon); + + diff --git a/src/OLED/fonts/Icons.h b/src/OLED/fonts/Icons.h index c6c7025..cb36e00 100644 --- a/src/OLED/fonts/Icons.h +++ b/src/OLED/fonts/Icons.h @@ -156,3 +156,5 @@ extern const BITMAP_INFO OutputIconInfo; extern const BITMAP_INFO _1IconInfo; extern const BITMAP_INFO _2IconInfo; extern const BITMAP_INFO algIconInfo; + +extern const BITMAP_INFO passwordIconInfo; diff --git a/src/Utility/NVStorage.cpp b/src/Utility/NVStorage.cpp index 8d00794..568a569 100644 --- a/src/Utility/NVStorage.cpp +++ b/src/Utility/NVStorage.cpp @@ -388,6 +388,7 @@ sUserSettings::load() validatedLoad("JSONpad", JSON.padding, 0, u8inBounds, 0, 1); validatedLoad("menuMode", menuMode, 0, u8inBounds, 0, 2); validatedLoad("Clock12hr", clock12hr, 0, u8inBounds, 0, 1); + validatedLoad("holdPassword", holdPassword, 0, u8inBounds, 0, 1); preferences.end(); } @@ -421,6 +422,7 @@ sUserSettings::save() preferences.putUChar("JSONpad", JSON.padding); preferences.putUChar("menuMode", menuMode); preferences.putUChar("Clock12hr", clock12hr); + preferences.putUChar("holdPassword", holdPassword); preferences.end(); } diff --git a/src/Utility/NVStorage.h b/src/Utility/NVStorage.h index dea2580..b2ec950 100644 --- a/src/Utility/NVStorage.h +++ b/src/Utility/NVStorage.h @@ -266,6 +266,7 @@ struct sUserSettings : public CESP32_NVStorage { sJSONoptions JSON; uint8_t menuMode; // 0 normal, 1, basic, 2 no heater uint8_t clock12hr; + uint8_t holdPassword; bool valid() { bool retval = true; @@ -309,6 +310,7 @@ struct sUserSettings : public CESP32_NVStorage { JSON.init(); menuMode = 0; clock12hr = 0; + holdPassword = 0; }; void load(); void save(); @@ -333,6 +335,7 @@ struct sUserSettings : public CESP32_NVStorage { JSON = rhs.JSON; menuMode = rhs.menuMode; clock12hr = rhs.clock12hr; + holdPassword = rhs.holdPassword; return *this; } };