we have a system based on the Silabs Thread Stack (NOT OpenThread) v2.9.2. The system has, in its minimum configuration:
Sometimes the border router and regular router get out of each other's range, so 2 network partitions are formed.
Our problem is that the sleepy end device can very well be in range of both partitions at the same time (i.e. by being in the middle), and it will attach to either arbitrarily. Also, since it's a SED, it won't be able to route frames between the two partitions, which will stay separate without merging.
Unfortunately the two partitions are not logically equivalent to us (the border router has access to the internet, the regular router does not).
We need to avoid the SED getting stuck to the partition that has no internet access, in this scenario in which it would have a chance to attach to the "internet connected one"; this means that ideally we would like a mechanism to attach to a specific partition from the sleepy end device.
Question 1: Is it possible to chose which partition to attach to (I guess based on the Partition ID)? It does not seem so, since emberAttachToNetwork(), the stack function for attaching, takes no parameters.
Question 2: If the answer to question 1 is "no, not possible", Because of this, would like to at least try to periodically detach from the regular router, reattach and hopefully land on the "internet connected partition", from which we wouldn't detach again (at least not intentionally).
This also seems impossible in the ember stack, since there is no function to intentionally detach (something like a emberDetachFromNetwork()). Is there a way around this?
We could restart the SED (or even power down the stack, then power it up again), but that seems overkill, and it would alter the state of unrelated business logic, complicating the whole application.
Is this question still relevant?
You can find our SL thread based knowledge base articles here: https://www.silabs.com/community/wireless/zigbee-and-thread/knowledge-base.entry.html/2020/04/02/_22_open_thread-BUJO
If you have SL Thread installed you can find the documentation under: <GeckoSDKFolder>/protocol/thread/documentation
I have to remind you that we have deprecated SL Thread and no updates are planned for it. We strongly recommend adopting open-thread on our platforms.