TI中文支持网
TI专业的中文技术问题搜集分享网站

1.2.2 z-stack 低功耗设备加网问题

平台 cc2530 z-stack home 1.2.2.42930,具体问题如下:

1.设置DEFAULT_CHANLIST = 0x7180000,设备上电找网,找网部分直接使用SampleDoorLock例程代码,之后设备会进入如下函数ZDApp_ProcessNetworkJoin(),执行

if ( ZG_SECURE_ENABLED && ( ZDApp_RestoreNwkKey( TRUE ) == false ) )
{
// wait for auth from trust center
ZDApp_ChangeState( DEV_END_DEVICE_UNAUTH );

// Start the reset timer for MAX UNAUTH time

ZDApp_ResetTimerStart( MAX_DEVICE_UNAUTH_TIMEOUT );
}

这一串代码,导致设备十秒钟之后重启。设备在什么情况下会进入执行这段代码?如果我需要设备继续找网,不希望设备重启,同时不影响设备的找网过程,需要怎么改动?

2.在我将上面那段代码里面的ZDApp_ResetTimerStart( MAX_DEVICE_UNAUTH_TIMEOUT );注释掉的情况下,设备只会寻找19,20,24三个信道,剩下的25和26都没有抓到信标帧,找网部分代码直接使用例程的代码,没有做任何改动,请问是什么原因?

Viki Shi:

“导致设备十秒钟之后重启”——你设备是不是掉线了?

user4078994:

回复 Viki Shi:

这一段代码是设备掉线之后会执行的代码?我这边抓到的包是设备已经接收到了association response,然后在等待tansport key 的时候进到的这个断点,但是我不明白为什么要设置成MAX_DEVICE_UNAUTH_TIMEOUT时间之后复位设备。同时第二个问题,在我将信道设置成24,25,26时,抓包器就抓不到信标帧了,想知道到底是什么原因。
不知道有没有什么宏定义会影响找网过程,下面附上我的宏定义:
SECURE=1
CONTACT_SWITCH
ZTOOL_P1
EXT_SLEEP_CONDITION
ISR_KEYINTERRUPT
TC_LINKKEY_JOIN
INTER_PAN
NV_INIT
NV_RESTORE
POWER_SAVING
NWK_AUTO_POLL
xMT_TASK
xMT_APP_FUNC
xMT_SYS_FUNC
xMT_ZDO_FUNC
xMT_ZDO_MGMT
xMT_APP_CNF_FUNC
xLCD_SUPPORTED=DEBUG
ZCL_READ
ZCL_DISCOVER
ZCL_WRITE
ZCL_REPORT
ZCL_BASIC
ZCL_IDENTIFY
xZCL_ON_OFF
ZCL_ZONE
xOTA_CLIENT=TRUE
OTA_HA
ZCL_GROUPS
在这些使能的宏定义里有没有影响找网过程的选项?

YiKai Chen:

设备十秒钟內沒收到tansport key,照Z-Stack的機制设备十秒钟之后會重启

user4078994:

回复 YiKai Chen:

明白了,那我手动把那段代码屏蔽掉,想要让设备继续找网直接加这个ZDApp_NetworkInit(MAX_DEVICE_UNAUTH_TIMEOUT);行吗?
那第二个问题能否解答一下?

YiKai Chen:

回复 user4078994:

你應該要找出為什麼協調器端不發出transport key

user4078994:

回复 YiKai Chen:

我这边做了白名单,设备mac地址没有加白名单,不发这个是正常的。在这个情况下我做上面的处理可以继续找网吗?会影响信标帧的信道吗?还有第二个问题能否解答一下?

YiKai Chen:

回复 user4078994:

這種狀況下應該沒辦法继续找网

user4078994:

回复 YiKai Chen:

没有办法让设备再继续找网吗?

YiKai Chen:

回复 user4078994:

試試用 Cetri 在 e2e.ti.com/…/1343379 提供的源碼試試

user4078994:

回复 YiKai Chen:

在ZDApp_ProcessNetworkJoin()函数里面还有一段代码,在nwkStatus!= ZSuccess的时候会执行下面这段代码// Clear the neighbor Table and network discovery tables.nwkNeighborInitTable();NLME_NwkDiscTerm();
zdoDiscCounter = 1;
ZDApp_NetworkInit( (uint16)(NWK_START_DELAY+ ((uint16)(osal_rand()& EXTENDED_JOINING_RANDOM_MASK))) );

,这个应该是让设备重新找网的代码吧?

赞(0)
未经允许不得转载:TI中文支持网 » 1.2.2 z-stack 低功耗设备加网问题
分享到: 更多 (0)