TI中文支持网
TI专业的中文技术问题搜集分享网站

协调器如何更新关联表?

网络中有协调器(开启NV),路由,以及终端。

首先路由和终端都直连在协调器下,通讯没问题

然后把协调器断电,这时终端就会连到路由下

再把协调器上电,这时协调器给终端发送数据就失败了,协调器保留了终端的信息, 以为那个终端设备是自己的子设备, 等待终端设备向自己发送Data Request

所以这个情况要真么解决?

Viki Shi:

可以手动删除无效节点,见AssocList.h,代码如下:
AddrMgrEntry_t addrEntry;
NLME_LeaveReq_t req;
uint8 i = Z_EXTADDR_LEN + 1;

// Set up device info
addrEntry.user = ADDRMGR_USER_DEFAULT;
addrEntry.index = index;
if (AddrMgrEntryGet( &addrEntry ))
{
for (i = 0; i < Z_EXTADDR_LEN; i++ )
{
if ( addrEntry.extAddr != 0 ){ break;}
}
}
if(i < Z_EXTADDR_LEN){
// Remove device
req.extAddr = addrEntry.extAddr;
req.removeChildren = TRUE;
req.rejoin = TRUE;
req.silent = FALSE;
NLME_LeaveReq( &req );
}else{
AssocRemove(addrEntry.extAddr);
ZDApp_NVUpdate();
}

或者可以参考下网友分享的方法:blog.csdn.net/…/12191407

Brightness L:

回复 Viki Shi:

感谢回复,如果不手动去删除,上面那种情况还有什么解决办法吗?就是协调器不会自动更新关联表的吗?

Viki Shi:

回复 Brightness L:

看我后面发的网友链接,可以代码实现

赞(0)
未经允许不得转载:TI中文支持网 » 协调器如何更新关联表?
分享到: 更多 (0)