diff --git a/clion/CMakeLists.txt b/clion/CMakeLists.txt index ad9ddb5..d7905d6 100644 --- a/clion/CMakeLists.txt +++ b/clion/CMakeLists.txt @@ -54,6 +54,7 @@ set(SRCFILES ../src/NukiOfficial.cpp ../src/NukiPublisher.cpp ../src/EspMillis.h + ../src/enums/NukiPinState.h ) file(GLOB_RECURSE SRCFILESREC diff --git a/src/NukiOpenerWrapper.cpp b/src/NukiOpenerWrapper.cpp index a75ce08..b0fa58e 100644 --- a/src/NukiOpenerWrapper.cpp +++ b/src/NukiOpenerWrapper.cpp @@ -5,6 +5,8 @@ #include "RestartReason.h" #include #include "Config.h" +#include "enums/NukiPinState.h" +#include "enums/NukiPinState.h" #include "hal/wdt_hal.h" #include #include "esp_sntp.h" @@ -436,7 +438,7 @@ void NukiOpenerWrapper::deactivateCM() bool NukiOpenerWrapper::isPinValid() { - return _preferences->getInt(preference_opener_pin_status, 4) == 1; + return _preferences->getInt(preference_opener_pin_status, (int)NukiPinState::NotConfigured) == (int)NukiPinState::Valid; } void NukiOpenerWrapper::setPin(const uint16_t pin) @@ -635,7 +637,7 @@ void NukiOpenerWrapper::updateConfig() updateAuth(false); } - const int pinStatus = _preferences->getInt(preference_opener_pin_status, 4); + const int pinStatus = _preferences->getInt(preference_opener_pin_status, (int)NukiPinState::NotConfigured); Nuki::CmdResult result = (Nuki::CmdResult)-1; int retryCount = 0; @@ -659,7 +661,7 @@ void NukiOpenerWrapper::updateConfig() Log->println("Nuki opener PIN is invalid or not set"); if(pinStatus != 2) { - _preferences->putInt(preference_opener_pin_status, 2); + _preferences->putInt(preference_opener_pin_status, (int)NukiPinState::Invalid); } } else @@ -667,7 +669,7 @@ void NukiOpenerWrapper::updateConfig() Log->println("Nuki opener PIN is valid"); if(pinStatus != 1) { - _preferences->putInt(preference_opener_pin_status, 1); + _preferences->putInt(preference_opener_pin_status, (int)NukiPinState::Valid); } } } @@ -4061,7 +4063,7 @@ void NukiOpenerWrapper::notify(Nuki::EventType eventType) } else if(eventType == Nuki::EventType::ERROR_BAD_PIN) { - _preferences->putInt(preference_lock_pin_status, 2); + _preferences->putInt(preference_lock_pin_status, (int)NukiPinState::Invalid); } else if(eventType == Nuki::EventType::BLE_ERROR_ON_DISCONNECT) { diff --git a/src/NukiWrapper.cpp b/src/NukiWrapper.cpp index a5e4e28..9a3e6d2 100644 --- a/src/NukiWrapper.cpp +++ b/src/NukiWrapper.cpp @@ -5,6 +5,7 @@ #include "RestartReason.h" #include #include "Config.h" +#include "enums/NukiPinState.h" #include "hal/wdt_hal.h" #include #include "esp_sntp.h" @@ -454,7 +455,7 @@ void NukiWrapper::lockngounlatch() bool NukiWrapper::isPinValid() { - return _preferences->getInt(preference_lock_pin_status, 4) == 1; + return _preferences->getInt(preference_lock_pin_status, (int)NukiPinState::NotConfigured) == (int)NukiPinState::Valid; } void NukiWrapper::setPin(const uint16_t pin) @@ -648,7 +649,7 @@ void NukiWrapper::updateConfig() updateAuth(false); } - const int pinStatus = _preferences->getInt(preference_lock_pin_status, 4); + const int pinStatus = _preferences->getInt(preference_lock_pin_status, (int)NukiPinState::NotConfigured); Nuki::CmdResult result = (Nuki::CmdResult)-1; int retryCount = 0; @@ -671,7 +672,7 @@ void NukiWrapper::updateConfig() Log->println("Nuki Lock PIN is invalid or not set"); if(pinStatus != 2) { - _preferences->putInt(preference_lock_pin_status, 2); + _preferences->putInt(preference_lock_pin_status, (int)NukiPinState::Invalid); } } else @@ -679,7 +680,7 @@ void NukiWrapper::updateConfig() Log->println("Nuki Lock PIN is valid"); if(pinStatus != 1) { - _preferences->putInt(preference_lock_pin_status, 1); + _preferences->putInt(preference_lock_pin_status, (int)NukiPinState::Valid); } } } @@ -4167,7 +4168,7 @@ void NukiWrapper::notify(Nuki::EventType eventType) } else if(eventType == Nuki::EventType::ERROR_BAD_PIN) { - _preferences->putInt(preference_lock_pin_status, 2); + _preferences->putInt(preference_lock_pin_status, (int)NukiPinState::Invalid); } else if(eventType == Nuki::EventType::BLE_ERROR_ON_DISCONNECT) { diff --git a/src/WebCfgServer.cpp b/src/WebCfgServer.cpp index 85d9f47..a8757d0 100644 --- a/src/WebCfgServer.cpp +++ b/src/WebCfgServer.cpp @@ -4297,12 +4297,12 @@ esp_err_t WebCfgServer::buildHtml(PsychicRequest *request, PsychicResponse* resp if(_nuki->isPaired()) { - String lockState = pinStateToString(_preferences->getInt(preference_lock_pin_status, 4)); + const String lockState = pinStateToString((NukiPinState)_preferences->getInt(preference_lock_pin_status, (int)NukiPinState::NotConfigured)); printParameter(&response, "Nuki Lock PIN status", lockState.c_str(), "", "lockPin"); if(_preferences->getBool(preference_official_hybrid_enabled, false)) { - String offConnected = _nuki->offConnected() ? "Yes": "No"; + const String offConnected = _nuki->offConnected() ? "Yes": "No"; printParameter(&response, "Nuki Lock hybrid mode connected", offConnected.c_str(), "", "lockHybrid"); } } @@ -4323,7 +4323,7 @@ esp_err_t WebCfgServer::buildHtml(PsychicRequest *request, PsychicResponse* resp } if(_nukiOpener->isPaired()) { - String openerState = pinStateToString(_preferences->getInt(preference_opener_pin_status, 4)); + String openerState = pinStateToString((NukiPinState)_preferences->getInt(preference_opener_pin_status, (int)NukiPinState::NotConfigured)); printParameter(&response, "Nuki Opener PIN status", openerState.c_str(), "", "openerPin"); } } @@ -4876,7 +4876,7 @@ esp_err_t WebCfgServer::buildStatusHtml(PsychicRequest *request, PsychicResponse if(_nuki->isPaired()) { - json["lockPin"] = pinStateToString(_preferences->getInt(preference_lock_pin_status, 4)); + json["lockPin"] = pinStateToString((NukiPinState)_preferences->getInt(preference_lock_pin_status, (int)NukiPinState::NotConfigured)); if(strcmp(lockStateArr, "undefined") != 0) { lockDone = true; @@ -4910,7 +4910,7 @@ esp_err_t WebCfgServer::buildStatusHtml(PsychicRequest *request, PsychicResponse if(_nukiOpener->isPaired()) { - json["openerPin"] = pinStateToString(_preferences->getInt(preference_opener_pin_status, 4)); + json["openerPin"] = pinStateToString((NukiPinState)_preferences->getInt(preference_opener_pin_status, (int)NukiPinState::NotConfigured)); if(strcmp(openerStateArr, "undefined") != 0) { openerDone = true; @@ -4943,18 +4943,19 @@ esp_err_t WebCfgServer::buildStatusHtml(PsychicRequest *request, PsychicResponse return resp->send(); } -String WebCfgServer::pinStateToString(uint8_t value) +const String WebCfgServer::pinStateToString(const NukiPinState& value) const { switch(value) { - case 0: - return String("PIN not set"); - case 1: - return String("PIN valid"); - case 2: - return String("PIN invalid or not set"); - default: - return String("Unknown"); + case NukiPinState::NotSet: + return String("PIN not set"); + case NukiPinState::Valid: + return String("PIN valid"); + case NukiPinState::Invalid: + return String("PIN set but invalid"); + case NukiPinState::NotConfigured: + default: + return String("Unknown"); } } @@ -6030,12 +6031,12 @@ esp_err_t WebCfgServer::processUnpair(PsychicRequest *request, PsychicResponse* if(!opener && _nuki != nullptr) { _nuki->unpair(); - _preferences->putInt(preference_lock_pin_status, 4); + _preferences->putInt(preference_lock_pin_status, (int)NukiPinState::NotConfigured); } if(opener && _nukiOpener != nullptr) { _nukiOpener->unpair(); - _preferences->putInt(preference_opener_pin_status, 4); + _preferences->putInt(preference_opener_pin_status, (int)NukiPinState::NotConfigured); } _network->disableHASS(); @@ -6381,7 +6382,7 @@ const std::vector> WebCfgServer::getGpioOptions() cons return options; } -String WebCfgServer::getPreselectionForGpio(const uint8_t &pin) +const String WebCfgServer::getPreselectionForGpio(const uint8_t &pin) const { const std::vector& pinConfiguration = _gpio->pinConfiguration(); diff --git a/src/WebCfgServer.h b/src/WebCfgServer.h index bba0e17..f003bf4 100644 --- a/src/WebCfgServer.h +++ b/src/WebCfgServer.h @@ -2,6 +2,8 @@ #include #include +#include "enums/NukiPinState.h" + #ifdef CONFIG_ESP_HTTPS_SERVER_ENABLE #include #endif @@ -85,8 +87,8 @@ private: const std::vector> getNetworkCustomCLKOptions() const; #endif - String getPreselectionForGpio(const uint8_t& pin); - String pinStateToString(uint8_t value); + const String getPreselectionForGpio(const uint8_t& pin) const; + const String pinStateToString(const NukiPinState& value) const; void printParameter(PsychicStreamResponse *response, const char* description, const char* value, const char *link = "", const char *id = ""); diff --git a/src/enums/NukiPinState.h b/src/enums/NukiPinState.h new file mode 100644 index 0000000..935c21a --- /dev/null +++ b/src/enums/NukiPinState.h @@ -0,0 +1,9 @@ +#pragma once + +enum class NukiPinState +{ + NotSet = 0, + Valid = 1, + Invalid = 2, + NotConfigured = 4 // default value used for preferences.getInt() when not configured by user +}; \ No newline at end of file