This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Tool/software:
Hello. I have a Zigbee temperature sensor end device and have been encountering communication issues which I assume might be resolved with a board reset.
The issue: the board would randomly disconnect from the coordinator, but remain powered-on and unable to send any data.
My attempt to fix this: should the board disconnect, no more messages should reach the Zigbee stack. Thus, I could use a timer that would trigger a board reset and hope that, upon booting up again, the connection will be restored and things will work again.
However, it seems that I cannot get the timer to correctly reset and it triggers constantly.
I've created a UtilTimer with a period of 5 minutes (in milliseconds) inside zclSampleTemperatureSensor_initializeClocks .
communicationClkHandle = UtilTimer_construct( &communicationClkStruct, communicationTimeoutCallback, communicationResetDuration, communicationResetDuration, true, 0);
I want it to be reset every stack message I get, thus never trigger the callback (which only lights up an LED for now, so nothing interesting). I've picked zclSampleTemperatureSensor_processZStackMsgs for this and tried a couple of ways to get the timer reset.
static void zclSampleTemperatureSensor_processZStackMsgs( zstackmsg_genericReq_t *pMsg) { UtilTimer_setTimeout(&communicationClkHandle, communicationResetDuration); // does not do anything, callback triggers constantly switch (pMsg->hdr.event) ... }
static void zclSampleTemperatureSensor_processZStackMsgs( zstackmsg_genericReq_t *pMsg) { UtilTimer_stop(&communicationClkStruct); UtilTimer_start(&communicationClkStruct); // same behaviour switch (pMsg->hdr.event) ... }
Looking through util_timer.h, I cannot see any other function that seems useful.
How can I reset a timer so that it would only trigger were the board disconnected?
Hello A V,
I hope you are doing well. We could try a watchdog here as well set with a timeout flag. We could also follow the guide on clocks found in the BLE stack (just without the BLE portion) Clocks — SimpleLink CC13XX/CC26XX SDK BLE5-Stack User's Guide 2.02.09.00 documentation.
Thanks,
Alex F