diff --git a/AccessLevel.h b/AccessLevel.h index b1eb39e..a2bdb05 100644 --- a/AccessLevel.h +++ b/AccessLevel.h @@ -4,5 +4,6 @@ enum class AccessLevel { Full = 0, LockOnly = 1, - ReadOnly = 2 + ReadOnly = 2, + LockAndUnlock = 3 }; \ No newline at end of file diff --git a/NukiOpenerWrapper.cpp b/NukiOpenerWrapper.cpp index 79c0aef..9cf8607 100644 --- a/NukiOpenerWrapper.cpp +++ b/NukiOpenerWrapper.cpp @@ -486,6 +486,14 @@ LockActionResult NukiOpenerWrapper::onLockActionReceivedCallback(const char *val nukiOpenerInst->_nextLockAction = action; return LockActionResult::Success; break; + case AccessLevel::LockAndUnlock: + if(action == NukiOpener::LockAction::ActivateRTO || action == NukiOpener::LockAction::ActivateCM || action == NukiOpener::LockAction::DeactivateRTO || action == NukiOpener::LockAction::DeactivateCM) + { + nukiOpenerInst->_nextLockAction = action; + return LockActionResult::Success; + } + return LockActionResult::AccessDenied; + break; case AccessLevel::LockOnly: if(action == NukiOpener::LockAction::DeactivateRTO || action == NukiOpener::LockAction::DeactivateCM) { diff --git a/NukiWrapper.cpp b/NukiWrapper.cpp index d42b855..4a79b50 100644 --- a/NukiWrapper.cpp +++ b/NukiWrapper.cpp @@ -455,6 +455,14 @@ LockActionResult NukiWrapper::onLockActionReceivedCallback(const char *value) nukiInst->_nextLockAction = action; return LockActionResult::Success; break; + case AccessLevel::LockAndUnlock: + if(action == NukiLock::LockAction::Lock || action == NukiLock::LockAction::Unlock || action == NukiLock::LockAction::LockNgo || action == NukiLock::LockAction::FullLock) + { + nukiInst->_nextLockAction = action; + return LockActionResult::Success; + } + return LockActionResult::AccessDenied; + break; case AccessLevel::LockOnly: if(action == NukiLock::LockAction::Lock) { diff --git a/WebCfgServer.cpp b/WebCfgServer.cpp index b65aef9..07f1446 100644 --- a/WebCfgServer.cpp +++ b/WebCfgServer.cpp @@ -1314,6 +1314,7 @@ const std::vector> WebCfgServer::getAccessLevelOptions std::vector> options; options.push_back(std::make_pair(std::to_string((int)AccessLevel::Full).c_str(), "Full")); + options.push_back(std::make_pair(std::to_string((int)AccessLevel::LockAndUnlock).c_str(), "Lock and unlock operation only")); options.push_back(std::make_pair(std::to_string((int)AccessLevel::LockOnly).c_str(), "Lock operation only")); options.push_back(std::make_pair(std::to_string((int)AccessLevel::ReadOnly).c_str(), "Read only"));