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

子设备掉线后停止了搜索协调器,为什么一段时间后又自动开启搜索功能?

在子设备掉线之后,我调用了 ZDApp_StopJoiningCycle();抓包发现子设备确实停止发送beacon request,但是一段时间后它又开始发送beacon request,这个时间段刚好就是1分钟,也就是和我的设置一样:

-DREJOIN_POLL_RATE=440 

-DREJOIN_BACKOFF=60000

-DREJOIN_SCAN=60000

以上,为什么我停止了搜索功能,它还是会再次开启?

VV:

有一个rejoin back off的状态

Susan Yang:

ZDApp_StopJoiningCycle只有在DEV_INIT或者DEV_NWK_DISC状态的时候才会有效果。

底层改变devState地方我们是没法看到的,但是当devState改变的时候,会以 ZDO_STATE_CHANGE这个事件通知应用层节点的状态改变,您只要在发送事件到达的地方加入ZDApp_StopJoiningCycle()就可以了。

Brightness L:

回复 Susan Yang:

感谢回答。

我就是在ZDO_STATE_CHANGE中调用的 ZDApp_StopJoiningCycle();,判断条件为SmartHome_NwkState == DEV_NWK_ORPHAN,但即使是这样,子设备还是会恢复搜索功能,继续发送beacon request。

跟踪发现,程序还是会来到以下这里,搜索的REJOIN_SCAN和REJOIN_BACKOFF还是正常的循环,所以才会ZDApp_StopJoiningCycle后还是会恢复搜索。

所以改怎么样解决这个问题,是否需要停止这个定时osal_start_timerEx( ZDAppTaskID, ZDO_REJOIN_BACKOFF, zgDefaultRejoinScan );?

user4381970:

回复 Brightness L:

-DREJOIN_BACKOFF=60000

当然会60秒后再找了

MarS:

回复 Brightness L:

是的 ,在这里你需要将这个定时器关掉!

赞(0)
未经允许不得转载:TI中文支持网 » 子设备掉线后停止了搜索协调器,为什么一段时间后又自动开启搜索功能?
分享到: 更多 (0)