From e9d594ee5b30b6ed09c477853115edb068b5c136 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Wed, 8 Jun 2022 23:30:05 +0200 Subject: [PATCH] Fix a crash if the controller takes too long to start This may happen on very rare occations after a nymea restart if the controller is taking too long to initialize but still succeeds in the end. Also increases the timeout for the procedure. --- libnymea-zigbee/backends/ti/zigbeebridgecontrollerti.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libnymea-zigbee/backends/ti/zigbeebridgecontrollerti.cpp b/libnymea-zigbee/backends/ti/zigbeebridgecontrollerti.cpp index b05d5fb..368dcd6 100644 --- a/libnymea-zigbee/backends/ti/zigbeebridgecontrollerti.cpp +++ b/libnymea-zigbee/backends/ti/zigbeebridgecontrollerti.cpp @@ -77,7 +77,7 @@ ZigbeeInterfaceTiReply* ZigbeeBridgeControllerTi::reset() ZigbeeInterfaceTiReply *ZigbeeBridgeControllerTi::init() { - ZigbeeInterfaceTiReply *initReply = new ZigbeeInterfaceTiReply(this, 10000); + ZigbeeInterfaceTiReply *initReply = new ZigbeeInterfaceTiReply(this, 15000); ZigbeeInterfaceTiReply *resetReply = reset(); connect(resetReply, &ZigbeeInterfaceTiReply::finished, initReply, [=]() { @@ -179,10 +179,10 @@ void ZigbeeBridgeControllerTi::initPhase2(ZigbeeInterfaceTiReply *initReply, int qCDebug(dcZigbeeController()) << "Reading IEEE address"; ZigbeeInterfaceTiReply *getIeeeAddrReply = readNvItem(Ti::NvItemIdPanId); - connect(getIeeeAddrReply, &ZigbeeInterfaceTiReply::finished, this, [=](){ + connect(getIeeeAddrReply, &ZigbeeInterfaceTiReply::finished, initReply, [=](){ ZigbeeInterfaceTiReply *getExtAddrReply = sendCommand(Ti::SubSystemSys, Ti::SYSCommandGetExtAddress); - connect(getExtAddrReply, &ZigbeeInterfaceTiReply::finished, this, [=](){ + connect(getExtAddrReply, &ZigbeeInterfaceTiReply::finished, initReply, [=](){ if (getExtAddrReply->statusCode() != Ti::StatusCodeSuccess) { qCWarning(dcZigbeeController()) << "Call to getDeviceInfo failed:" << getExtAddrReply->statusCode(); initReply->finish(getExtAddrReply->statusCode());