add GPIO output for bluetooth communication error (#701)

This commit is contained in:
Jan-Ole Schümann
2025-10-02 21:25:04 +07:00
committed by GitHub
parent 7933b412f1
commit a12a166734
6 changed files with 43 additions and 2 deletions

View File

@@ -46,6 +46,9 @@ NukiOpenerWrapper::NukiOpenerWrapper(const std::string& deviceName, NukiDeviceId
network->setAuthCommandReceivedCallback(nukiOpenerInst->onAuthCommandReceivedCallback);
_gpio->addCallback(NukiOpenerWrapper::gpioActionCallback);
#ifndef NUKI_HUB_UPDATER
_pinsCommError = _gpio->getPinsWithRole(PinRole::OutputHighBluetoothCommError);
#endif
}
@@ -299,6 +302,7 @@ void NukiOpenerWrapper::update()
if(cmdResult != Nuki::CmdResult::Success)
{
setCommErrorPins(HIGH);
Log->print("Opener: Last command failed, retrying after ");
Log->print(_retryDelay);
Log->print(" milliseconds. Retry ");
@@ -318,6 +322,7 @@ void NukiOpenerWrapper::update()
}
postponeBleWatchdog();
}
setCommErrorPins(LOW);
if(cmdResult == Nuki::CmdResult::Success)
{
@@ -3746,6 +3751,14 @@ const std::string NukiOpenerWrapper::hardwareVersion() const
return _hardwareVersion;
}
void NukiOpenerWrapper::setCommErrorPins(const uint8_t& value)
{
for (uint8_t pin : _pinsCommError)
{
_gpio->setPinOutput(pin, value);
}
}
void NukiOpenerWrapper::disableWatchdog()
{
_restartBeaconTimeout = -1;