微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 终端在协调器断电情况下,反复找回网络多次重启,可能重新寻找网络而不是恢复原来的网络

终端在协调器断电情况下,反复找回网络多次重启,可能重新寻找网络而不是恢复原来的网络

时间:10-02 整理:3721RD 点击:

终端在协调器断电情况下,反复找回网络多次重启,可能重新寻找网络而不是恢复原来的网络,

正常应该不断的rejoin,但有个别时候个别终端就自动变成了join了,去新发现一个网络的状态了。

搜索协议栈devStartMode = MODE_JOIN;只有4处。

是否是这4处中某处吧终端的rejoin改成了join呢?能帮我分析这4处吗?

1.设备初始化时候读取nv,确定设备类型的时候。难道读取nv失败,启动项的nv坏掉了吗

// If AIB_apsUseExtendedPANID is set to a non-zero value by commissioning
// The device shall do rejoin the network. Otherwise, do normal join
if ( nwk_ExtPANIDValid( AIB_apsUseExtendedPANID ) == false )
{
devStartMode = MODE_JOIN; // Assume joining
}

2.路由恢复网络时

if ( (devStartMode == MODE_RESUME) && (++retryCnt >= MAX_RESUME_RETRY) )
{
if ( _NIB.nwkPanId == 0xFFFF || _NIB.nwkPanId == INVALID_PAN_ID )
devStartMode = MODE_JOIN;
else

3.终端恢复网络时。_NIB.nwkPanId什么情况下会自动变成无效吗?

if ( devStartMode == MODE_RESUME )
{
if ( ++retryCnt <= MAX_RESUME_RETRY )
{
if ( _NIB.nwkPanId == 0xFFFF || _NIB.nwkPanId == INVALID_PAN_ID )
devStartMode = MODE_JOIN;
else

4.紧接着3的代码,AIB_apsUseInsecureJoin 代表什么意思?

// Do a normal join to the network after certain times of rejoin retries
else if( AIB_apsUseInsecureJoin == true )
{
devStartMode = MODE_JOIN;
}

出现第四种可能性比较大

4.紧接着3的代码,AIB_apsUseInsecureJoin 代表什么意思?

// Do a normal join to the network after certain times of rejoin retries
else if( AIB_apsUseInsecureJoin == true )
{
devStartMode = MODE_JOIN;
}

AIB_apsUseInsecureJoin 就是是否允许重新开始join,因为join刚开始是mac 层的Association,没有加密的。

AIB_apsUseInsecureJoin 什么情况等于true呢?此处是重连,为什么要变成join呢?是出于什么目的考虑呢?

从使用的角度考虑,加入过网络的设备是不希望它自己重新组网的,除非手动操作

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top