我使用的是Z-Stack Mesh 1.0.0协议栈,在设置信道和PAN_ID的时候,使用方法如下:
//设置PAN_ID和Channel
void Set_Panid(uint16 panid,uint32 Channel)
{
_NIB.nwkPanId = panid;
_NIB.channelList=Channel;
NLME_UpdateNV(0x01);
SystemReset();
}
读取信道和PAN_ID
osal_memcpy(&channel, &_NIB.channelList, sizeof(uint32)); //获取到channel 终端节点读出来是默认信道
osal_memcpy(&PAN_ID, &_NIB.nwkPanId, sizeof(uint16)); //获取到PAN ID
在协调器和终端节点的预编译中均加入了NV_RESTORE
现象是,协调器的信道和PAN_ID可以修改,终端节点的PAN_ID可以修改,但是终端节点的信道不能修改
问题:
1、终端节点的PAN_ID可以修改,但是如果不修改,终端节点的PAN_ID也不是cfg当中的值,我尝试修改cfg的PAN_ID,下载给终端节点,则无法与协调器通信,所以我就不明白了,终端节点的PAN_ID到底是像协调器一样,从cfg当中获取默认值(结果发现并不是),还是搜索同信道的协调器的PAN_ID并加入网络(但是修改终端节点的PAN_ID,信道与协调器一致的情况下,并不能加入协调器),我想知道如何通过程序给终端节点一个固定的PAN_ID?
上述的结论我是通过文章开头的代码测试的,统一信道下的协调器和终端节点,不同PAN_ID,结果读取终端节点的PAN_ID,转换成字符串 显示为>>>? ,如果在cfg中,俩个的PAN_ID为同一个值,则读取的就是设置的这个PAN_ID
2、终端节点的信道是默认的信道,无法修改,我想知道如何通过程序修改终端节点的信道?