之前看到了TI社区中有人回复的终端节点重新加入网络的过程,有几个疑问:
1.终端节点在丢失父节点的情况下,会自动重新寻找一个新的父节点,开启了NV_RESTORE 这个预编译选项,是否会对此造成影响?
2.如果终端节点需要将功耗做到极低,不会自动加入网络,需要外部中断触发入网,DPOLL_RATE 设置为 0,开启POWER_SAVING,终端节点还会在丢失父节点的情况下自动寻找新的父节点吗?(这个时候我测到的电流大概是3uA到4uA)
3.在终端节点重新寻找新的父节点的时候,协调器是否一定要处于允许加入网络的状态?
以上就是我的一些疑问,请教各位大佬,先行感谢!!!
YiKai Chen:
1. NV_RESTORE會將網路資訊記錄於NV、遇到重新上电才能重新加入原網路、如果終端沒有断电,只是丢失父节点的情况下,還是可以重新寻找原網路來加入
2. 可以
3. 如果使能NV_RESTORE或是終端沒有重新上電就不需要协调器处于允许加入网络的状态
user5355203:
回复 YiKai Chen:
1.终端节点通信不是需要依靠父节点吗?NV中记载的通信路径不是应该不通了吗?如果将这个父节点从整个网络中删除,还要怎样找回原来的网络路径?
2.我记得终端和父节点之间会有一个Mac Ack的通信,DPOLL_RATE设置为0的话,不是应该就不通信了吗?终端节点是怎样判断出父节点丢失了呢?
3.我想知道一下,终端重新寻找父节点,不是相当于重新加入一次网络吗?节点不会把自己的状态变为DEV_INIT吗??
感谢回复!!
YiKai Chen:
回复 user5355203:
1. 這個Z-Stack kernel会自动處理
2. 要等到终端节点有發射任何訊號
3. 這種狀況是DEV_REJOIN
user5355203:
回复 YiKai Chen:
感谢回复,受益良多!!
还有一个问题想要请教:
我使用的是1.2.2a的协议栈,在终端节点上电的时候,没有入网的情况下,会一直触发ZDO_NETWORK_INIT这个事件,我想要关掉这个循环事件,请问一下在哪里可以找到这个循环?新手小白,协议栈还没有完全看懂
YiKai Chen:
回复 user5355203:
在ZDApp_event_loop()的“if ( events & ZDO_NETWORK_INIT )…”
user5355203:
回复 YiKai Chen:
我还想问一下,如果终端节点更换到新的父节点之后,再将新的父节点断电或者从网络中删除,终端节点还会继续寻找新的父节点吗?或者说,终端节点能够连续更换父节点吗?
YiKai Chen:
回复 user5355203:
可以