join与rejoin问题
经过调试发现,在终端节点开机重启时devStartMode = MODE_JOIN,而在加入网络后断开协调器,此时devStartMode = MODE_REJOIN。问题是终端节点扫描网络时电流在30ma左右,在devStartMode = MODE_JOIN时电流持续时间要短于devStartMode = MODE_REJOIN,所以我把devStartMode = MODE_REJOIN模式改变的位置给屏蔽掉,这样对整个网络有什么影响?屏蔽掉后节点还是可以正常加入网络,只是每次加入网络的时候都是devStartMode = MODE_JOIN,电流持续时间也比原来小了
join的目的是为了能够加入到一个新的网络,rejoin的目的是为了能够加入到一个之前加过的网络。
Rejoin的时候Rx always on一直打开着的。
你是为了剩这点功耗,违背了zigbee,这样的做法不太推荐,而且你随意的修改节点工作的状态机,后续会有其他的问题产生。
VV大神,终于看到你的回复了!谢谢!
由于我的板子提供不了那么大的电流,在join模式的时候系统能勉强维持,在rejoin就直接重启了(掉电重启)。硬件上我已经无能为力了,
所以我想要么在断网的时候我让板子重启进入join模式,要么我直接把进入rejoin的地方屏蔽掉。断网让它重启(软件重启)的方法可行么?
其实,Rejoin的时候不用Rx always on。在ZDO_NWK_DISC_CNF消息处理的时候,有个ZMacSetReq( ZMacRxOnIdle, &tmp ),把tmp设置成False就行。
当RFD设备向FFD设备发送NWK Rejoin Request时,FFD需要收到RFD的Data Request才会返回NWK Rejoin Response,RFD完全可以把Rx Aways on关闭。
@V V
tmp = true; ZMacSetReq( ZMacRxOnIdle, &tmp );
为什么有的时候不起作用呢,开或者关闭rx
http://www.deyisupport.com/question_answer/wireless_connectivity/zigbee/f/104/t/102083.aspx
http://www.deyisupport.com/question_answer/wireless_connectivity/f/45/t/21769.aspx