Some requests in a Zigbee SED always return a success status instead of waiting for a response.
Dear ST,
I am developing an end device to my solution with the ability to report some measured values every minute.
The device successfully enters and exits a standby status and reports back.
Now I am trying to devise some kind of network management to the devices (join new networks, leave old ones, detect if there is a coordinator in the network etc.). They way I achieved this in my non-sleepy devices was through route discoveries to the coordinator. If a route is found, it is still a valid network. The problem arises in my sleepy end devices where some request responses (including a Route Discovery) seem to be ignored and the IPCC triggers the callback always with a success status.
As I understand it the messages are pooled and managed by the parent, but I thought it would still trigger the callbacks when received even if blocking the application.
I tried to set the RxOnIdle capability to true, but this seems to not fix the issue.
Then I thought it was because of the RFD firmware implementation changing the flow of execution to return a success status instantly, so I tried running the same code with an FFD device. This felt like a bad idea, and it didn't fix the issue.
I tried to use a NlmeRejoin, but this throws an invalid request when the device startup from persistence. In this case, I thought a Startup from persistence means that a device is technically in a network and only resends a device announce. Why does it throw an invalid request when the only change in the execution flow is the startup from persistence?
What is the proper way to detect if a device still has a valid working parent?
I didn't use end device timeouts (It's set to 0xFF on network join) because I found it messed with my low power configuration, power cycling and reliable communications.
I'm waiting on a sniffer which maybe could help me understand better each function, for now I am lost.