请教Coordinator上电过程PANID的选取问题
Hi all,
请教下Zstack中Coordinator上电过程PANID的选取问题.
跟踪Zstack代码最终将调用NLME接口函数NLME_NetworkFormationRequest()来创建网络:
按API手册描述,如果zgConfigPANID为0xFFFF,则最终的PANID由NWK层选取。
当zgConfigPANID为0xFFFF时,请问:
1. Zstack中NWK是如何选取的?是随机选取?或者按特定的规律选取?
2. 如果NWK选中的PANID与周围的冲突,则如何避免?也是把PANID自加1,直到不再冲突吗?如果是,当值增加到0X3FFF时,会自动回归到1吗?
当zgConfigPANID不为0xFFFF时,请问:
1. 如果指定的PANID与周围的冲突,根据API描述,将自加1,那么当值增加到0X3FFF时,会自动回归到1吗?
谢谢
当zgConfigPANID等于0xFFFF的时候,Coordinator会自动随机产生一个PANID,通过osal_rand()产生。
当zgConfigPANID不等于0xFFFF的时候,Coordinator会根据设定的PANID来建立一个网络,这个PANID的设定在f8wconfi.cfg文件中-DZDAPP_CONFIG_PAN_ID=0xFFFF配置的。
通过以上两种方式初步选择好PANID以后,准备启动一个新的网络,在启动新的网络之前对信道进行扫描,如果扫描到有和自己想建立的PANID一样的话,就会+1,选择一个新的PANID。
为什么有3FFF这个值?
Hi VV,
谢谢你的解答。
3FFF是我以为PANID的最大有效值。
我想确认:如果PANID+1值,超过最大有效值时,是否会重新回到1开始?
0xFFFF是最大,如果PANID+1超过最大值了,重新回到1.理论上是这样的。但是一般很难到达,而且也不会有人去设这个值。