Z-Stack协调器中_NIB.PanId 的理解(错误之处还望大神指出,只做学习笔记)

PANID修改中几点的理解(基于Z-Stack2.5.1.a 的SampleApp)


由于在对PANID修改这块研究了一下:以下为实验现象:

1:在未定义NV_RESTORE时

发现网上提到了在_NIB.nwkPanId、f8wconfig.cfg 中可以修改建立网络时的参数;实验发现在_NIB.nwkPanId中修改参数后(_NIB.nwkPanId = panid ,NLME_UpdateNV(0x01)),每次重启过后未建立网络时_NIB.nwkPanId都是0xFFFE,而建立网络过后则更新为f8wconfig.cfg中定义的值(f8wconfig.cfg中定义为0xffff时,则为一个随机的值)

2:在定义NV_RESTORE后,并且按照十三中修改过后

实验发现每次重启过后_NIB.nwkPanId都是上一次修改的结果,并没有变成其他的,并且所建立的网络都是和_NIB.nwkPanId中的一样。:

3:结论

    如果未定义NV_RESTORE,那么每次重启过后,系统都会把所有的网络参数重新初始化成默认的值(_NIBnwkPanId就为0xFFFE),然后在建立网络时会根据在f8wconfig.cfg中设定的值去重新建立网络,建立好了之后再把数据写到_NIBnwkPanId 中去。如果下次掉电了,由于未定义NV_RESTORE,又重新初始化了network_state的NV变量,导致上次写入的数据丢失。

    但是定义了NV_RESTORE后,由于每次重新启动时都是从NV区中取出数据,然后再根据原先的数据建立网络,所建网络和原先定义的一样,而不会在是根据f8wconfig.cfg中的了。

    所以NV区还是存的上次的数据,只不过f8wconfig.cfg中的数据是建立网络时用来初始化_NIB,最终还是应用_NIB中的数据去建立网络!!!


其实_NIB.nwkPanId是RAM中的,每次建网都从NV区读出数据建立网络,建立网络成功,他就会被写一个值,这样程序都可以访问并且知道现在的网络ID,如果调用了NLME_UpdateNV(0x01),就会把它写到NV中,这样下次就会建一个和_NIB.nwkPanId一样的网络

你可能感兴趣的:(Z-Stack学习开发笔记)