diff --git a/NukiWrapper.cpp b/NukiWrapper.cpp index 30176b5..2539373 100644 --- a/NukiWrapper.cpp +++ b/NukiWrapper.cpp @@ -366,21 +366,27 @@ void NukiWrapper::onKeypadCommandReceived(const char *command, const uint &id, c } bool idExists = std::find(_keypadCodeIds.begin(), _keypadCodeIds.end(), id) != _keypadCodeIds.end(); + int codeInt = code.toInt(); NukiLock::CmdResult result = (NukiLock::CmdResult)-1; if(strcmp(command, "add") == 0) { - if(name == "") + if(name == "" || name == "--") { _network->publishKeypadCommandResult("MissingParameterName"); return; } + if(codeInt == 0) + { + _network->publishKeypadCommandResult("MissingParameterCode"); + return; + } NukiLock::NewKeypadEntry entry; memset(&entry, 0, sizeof(entry)); size_t nameLen = name.length(); memcpy(&entry.name, name.c_str(), nameLen > 20 ? 20 : nameLen); - entry.code = code.toInt(); + entry.code = codeInt; result = _nukiLock.addKeypadEntry(entry); Serial.print("Add keypad code: "); Serial.println((int)result); updateKeypad(); @@ -398,11 +404,16 @@ void NukiWrapper::onKeypadCommandReceived(const char *command, const uint &id, c } else if(strcmp(command, "update") == 0) { - if(name == "") + if(name == "" || name == "--") { _network->publishKeypadCommandResult("MissingParameterName"); return; } + if(codeInt == 0) + { + _network->publishKeypadCommandResult("MissingParameterCode"); + return; + } if(!idExists) { _network->publishKeypadCommandResult("UnknownId"); @@ -414,7 +425,7 @@ void NukiWrapper::onKeypadCommandReceived(const char *command, const uint &id, c entry.codeId = id; size_t nameLen = name.length(); memcpy(&entry.name, name.c_str(), nameLen > 20 ? 20 : nameLen); - entry.code = code.toInt(); + entry.code = codeInt; entry.enabled = enabled == 0 ? 0 : 1; result = _nukiLock.updateKeypadEntry(entry); Serial.print("Update keypad code: "); Serial.println((int)result);