cc2530设备开始时在网络中,通信正常。使用某种机制,设备得知自己所处的网络不存在了,此时怎样才能使设备重新搜索、并加入新的网络?
Jane Yang:
使能NV_RESTORE
wb:
回复 Jane Yang:
使能 NV_RESTORE 后, cc2530设备就会自动重新搜索网络,还是要执行别的什么?
yan kevin:
回复 Jane Yang:
使能NV_RESTORE有一个问题,设备都加入协调器后,会把协调器的关联表填满,然后新的设备发入网请求都不可能加进来啦,如果不启用NV_RESTORE,碰到这种问题通过重启协调器还有用,启用了NV_RESTORE,就只能重刷程序啦???
wb:
回复 yan kevin:
可不可以不用复位cc2530,而只是使zigbee协议栈重新初始化、搜索网络,和上电时走的类似?我的cc2530 gpio 有作别的功能,不允许复位芯片。
Peter Yin:
我也碰到相同的问题,在不复位end device的情况下使用nv_restore并不能解决问题,当原来的pan消失后,一个有新的pan id的pan网络 建立后,这个end device并不会加入新的pan网络。搞不清楚为什么。
yan kevin:
回复 Peter Yin:
peter yin,
你在end device软件里设置,当ED感应到ZBC不在一会了,就让end device软重启,不就可以加入新的网络的么。。
Peter Yin:
回复 yan kevin:
软重启是怎么个启动法?这个我不知道,没有做过。麻烦你教我一下,谢谢。
通过加log,发现如果把zbc掉电后,zbe的scan模式为变为orphan模式一次,然后以后一直都是active mode,既然变为orphan模式,说明zbe已经知道zbc不在了。
如果这时候zbc再上电,它会创建一个pan网络(pan id和原来的不一样),这时候zbe也能收到zbc的beacon,但是看不到nwk的代码,不知道怎么处理的。反正从应用层上看zbe和zbc的通信就断了。
WZ:
回复 Peter Yin:
你没有加nv的时候,zbc是不能掉电的,zigbee是这样规定的。所以nv是我们常见的保护方式。 当你的父节点出现问题,他还是会去寻找新路径的
Peter Yin:
回复 WZ:
父节点出问题,它是会寻找新路径,可是从现象看,它只能加入到panid和原来一样的网络,如果新的网络panid和原来不一样,它加入不了啊,现在就是搞不清这一点。nwk也不开源,没法看代码。
从协议上看,即使原来的网络没有问题,如果有新的网络信号质量更好的话,它应该也有加入新的网络的能力啊。
Peter Yin:
回复 Peter Yin:
看来确实是zstack的问题,经过几天的调试,发现zbe在发现失去与zbc的通信后,会把自己的状态置为rejoin状态,而这种状态下zbe只会加入原来panid的网络,如果置为join,就能加入新的panid的网络了。