协调器断电后重新加入之前建立的网络
大家好,我们的应用中协调器可能会经常断电,但是装在其他地方的路由是一直有电的。 因此需要在协调器断电之后,还能够加入之前自己建立的网络
现在的实际情况是:协调器断电之后,如果再上电,那么他就重新建立了一个PANID+1的网络。
目前我试着把 编译选项里边添加了 NV_INIT和NV_RESTORE两个选项。 结果每次掉电重启后虽然可以是加入掉电前的PANID一样的网络却不能对PANID和CHANLIST等进行配置了,无论设置为什么都是头一次保存的那个PANID。
我的问题是:
1. 添加NV_RESTORE编译选项后, PANID,信道参数是保存在 ZComDef.h中
// ZDO NV Item IDs
#define ZCD_NV_USERDESC 0x0081
#define ZCD_NV_NWKKEY 0x0082
#define ZCD_NV_PANID 0x0083
#define ZCD_NV_CHANLIST 0x0084。。。。。。。。。
定义的ZCD_NV_PANID,和ZCD_NV_CHANLIST 这两个地址上的吗?如果是的话PANID是两个字节的,这个地址确只能保存一个字节的东西,不然就把后面CHANLIST的东西给覆盖掉了。这个请问怎么解释?
2.我们现在时自己做了一个无线透传的模块用在自己项目上。自己做了一个配置软件,可以对PANID、CHANLIST、以及设备类型等进行配置,在cc2530的程序中,将用户设置的PANID和CHANLIST等值保存在自定义的NV上,并未保存在已经定义的NV地址上。这个对上电重新加入之前网络这个需求 有影响么?
我目前的想法就是找到自动保存的地方,当用户重新配置了PANID后,就去自动保存的参数中把PANID和CHANLIST的值修改为用户保存的值,这样,加入的就是用户设置的网络了
1:这里所列的ZCD_NV_PANID只是一个item ID,也就是规定了PANID在NV中保存的是在第几个位置,具体写了多少个字节,你可以看下面的函数
osal_nv_write( ZCD_NV_PANID, 0, sizeof( zclCCServer_PanId ),
&zclCCServer_PanId );
2:如果启用了NV功能,把数据正确写到了NV中,但么重新上电以后会选择你自己写的PANID。