implement retry for keyturner state

This commit is contained in:
technyon
2023-02-10 17:06:52 +01:00
parent 8e16b3e7b2
commit 11caec34cd
4 changed files with 27 additions and 2 deletions

View File

@@ -267,7 +267,18 @@ void NukiOpenerWrapper::unpair()
void NukiOpenerWrapper::updateKeyTurnerState()
{
_nukiOpener.requestOpenerState(&_keyTurnerState);
Nuki::CmdResult result =_nukiOpener.requestOpenerState(&_keyTurnerState);
if(result != Nuki::CmdResult::Success)
{
_retryLockstateCount++;
postponeBleWatchdog();
if(_retryLockstateCount < _nrOfRetries)
{
_nextLockStateUpdateTs = millis() + _retryDelay;
}
return;
}
_retryLockstateCount = 0;
if(_statusUpdated &&
_keyTurnerState.lockState == NukiOpener::LockState::Locked &&

View File

@@ -66,6 +66,7 @@ private:
int _nrOfRetries = 0;
int _retryDelay = 0;
int _retryCount = 0;
int _retryLockstateCount = 0;
unsigned long _nextRetryTs = 0;
std::vector<uint16_t> _keypadCodeIds;

View File

@@ -283,7 +283,19 @@ void NukiWrapper::unpair()
void NukiWrapper::updateKeyTurnerState()
{
_nukiLock.requestKeyTurnerState(&_keyTurnerState);
Nuki::CmdResult result =_nukiLock.requestKeyTurnerState(&_keyTurnerState);
if(result != Nuki::CmdResult::Success)
{
_retryLockstateCount++;
postponeBleWatchdog();
if(_retryLockstateCount < _nrOfRetries)
{
_nextLockStateUpdateTs = millis() + _retryDelay;
}
return;
}
_retryLockstateCount = 0;
_network->publishKeyTurnerState(_keyTurnerState, _lastKeyTurnerState);
if(_keyTurnerState.lockState != _lastKeyTurnerState.lockState)

View File

@@ -90,6 +90,7 @@ private:
int _nrOfRetries = 0;
int _retryDelay = 0;
int _retryCount = 0;
int _retryLockstateCount = 0;
long _rssiPublishInterval = 0;
unsigned long _nextRetryTs = 0;
unsigned long _nextLockStateUpdateTs = 0;