ZigBee协议栈PANID问题
协调器和节点的PANID是一样的但是协调器通过下面这个函数改变PANID号后,节点没有修改PANID,节点为什么还是会和协调器连接。
static void SetPanIding(uint8 *node) //修改PANID函数
{
uint8 flag = 0xff;
uint16 PanIdBuf = 0x00;
PanIdBuf = node[7];
PanIdBuf = PanIdBuf << 8;
PanIdBuf |= node[8];
flag = osal_nv_write(ZCD_NV_PANID, 0, sizeof(uint16), &PanIdBuf); //设置PANID
//_NIB.nwkPanId = PanIdBuf;
//NLME_UpdateNV(0x01);
if(flag == SUCCESS)
{
SystemResetSoft(); //软启动
}
}
重启后PANID是哪一个?修改有没有成功?
协调器自动软重启,通过下面查看后,发现协调器PANID已经修改了
node[7] = zgConfigPANID >> 8;
node[8] = zgConfigPANID & 0xFF;
HalUARTWrite(SERIAL_COM_PORT, node, DataLength(1));
调用zb_ReadConfiguration()读取一下NV里的值有没有更改过
请问,协调器PANID设置为0xffff,节点设置为其他PANID,不能连接,是需要设置什么宏定义吗?
_NIB.nwkPanId = PanIdBuf;
NLME_UpdateNV(0x01);
这样就对了,本来的子设备就连接不了了,成为了孤儿