This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于低功耗设备2次入网失败后,不能继续入网的问题

Other Parts Discussed in Thread: Z-STACK

现有一款设备,电池供电,编译了NV_INIT , POWER_SAVING,   协议版本:HA 1.2.2

10秒定时器事件中执行以下功能

NLME_SetPollRate( 0 );
NLME_SetQueuedPollRate( 0 );
NLME_SetResponseRate( 0 );
ZDApp_StopJoiningCycle(); //停止扫描网络

唤醒后会执行

NLME_SetPollRate( 500 );
NLME_SetQueuedPollRate( 100 );
NLME_SetResponseRate( 100 );
ZDApp_StartJoiningCycle(); //开始扫描网络

问题描述:

1: 当协调在线时,此时上电节点设备(直接硬件复位),可以正常入网,然后进入PM3模式,功耗0.4UA

2:将协调断电,不再打开,此时上电节点设备(直接硬件复位),开始扫描网络,开启10秒定时器,然后超时进入PM3模式。

3:再次通过外部中断方式唤醒节点设备,继续扫描网络,同样激活10秒定时器,然后超时进入PM3模式

4:再次通过外部中断方式唤醒节点设备,继续扫描网络,同样激活10秒定时器,然后超时进入PM3模式

5:此时打开协调器,再次通过外部中断方式唤醒节点设备,此时程序进入了

case ZDO_NWK_JOIN_REQ:
if ( ZG_BUILD_JOINING_TYPE && ZG_DEVICE_JOINING_TYPE )
{
retryCnt = 0;
devStartMode = MODE_RESUME;
_tmpRejoinState = true;

//A点
osal_cpyExtAddr( ZDO_UseExtendedPANID, _NIB.extendedPANID );
zgDefaultStartingScanDuration = BEACON_ORDER_60_MSEC; 
ZDApp_NetworkInit( 0 );
}
break;

再次进入

networkDesc_t* ZDApp_NwkDescListProcessing(void)

{

.............

if ( nwk_ExtPANIDValid( ZDO_UseExtendedPANID ) == true )
{
// If the extended Pan ID is commissioned to a non zero value
// Only join the Pan that has match EPID

因前段程序 “A点” 入已经将节点自的MAC复制到ZDO_UseExtendedPANID中去,导致以下判断出错。不能正常入网


if ( osal_ExtAddrEqual( ZDO_UseExtendedPANID, pNwkDesc->extendedPANID) == false )
continue;

}

}

但如果在上面第2-3点时,打开协调器,可以正常入网。第四次唤醒后,节点进入了“重连事件”。

不知是那里的问题,导致设备第四次唤醒后,会进入 ZDO_NWK_JOIN_REQ 模式下呢。难道是BUG,还是说其它地方问题。

望各位大佬帮忙分析解决一下。

抓包文件如下:7723.test.psd