微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > z-stack在Rejoin时遇到问题了

z-stack在Rejoin时遇到问题了

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

开启了NV_RESTORE的终端节点

第一个问题,REJOIN_POLL_RATE如果小于POLL_RATE,devStartMode最开始是MODE_JOIN,但是如果我让协调器的ZDO_JoinIndicationCB在type = NWK_ASSOC_JOIN时返回ZFailure,节点的devStartMode会变成MODE_REJOIN。

第二个问题,终端节点第一次加入网络成功后,协调器删除了关联表,终端节点重启后,进入MODE_REJOIN模式,并触发函数 NLME_ReJoinRequest,但是通过抓包并未发现有Rejoin命令t发出。

你需要通过断点调试下,ZDApp_ProcessOSALMsg( osal_event_hdr_t *msgPtr )函数里面,看节点重新上电启动以后,是MODE_JOIN还是MODE_REJOIN

可以把你的抓包文件用附件发上来吗?

是MODE_REJOIN,在case ZDO_NWK_DISC_CNF下,然后进入了ZDApp_ProcessNetworkJoin,nwkStatus = 1。

现在又好了,房间内有其它的协调器和路由器,但是PANID不一样啊。我把那些路由器关掉就好了。

NLME_ReJoinRequest函数只有两个参数,Extern PANID和信道,父节点的地址都没有。一个网络有很多路由的话,NLME_ReJoinRequest怎么确定选哪个路由?

NLME_ReJoinReq函数里面会根据ExtendedPANID,会和之前保存的PANID做比较,确定是不是需要rejoin的那个。

这是zstack的bug. 因为你的终端节点曾经在其他协调器的网络A,你没有剔除直接加入到新的网络B,在orphan的时候原来网络A内的父节点给了realignment应答, 终端在发NLME_ReJoinRequest虽然是传入正确的logicalChannel,但却存在bug. 发包到了网络A所在的信道内.可以用sniffer看到. 

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

网站地图

Top