我用的协议栈是 zstack 2.5.1a,最近在测试中发现关联表的一些问题,希望TI大神帮解答下
按照协议栈里的 #define NWK_MAX_DEVICE_LIST 30 ,协调器关联表里应该最多能允许30个设备直接挂接在它下面,也就是关联表里最多有30个设备的相关信息,以上理解如果没错,下面是我读取关联里的子设备mac地址操作:
uint8 _nodeCounter;
uint8 _assocNum=0;
uint8 assoclist[243];
for ( _nodeCounter = 0; _nodeCounter < NWK_MAX_DEVICES; _nodeCounter++ )
{
AddrMgrEntry_t addrEntry;
addrEntry.user = ADDRMGR_USER_ASSOC;
addrEntry.index = _nodeCounter;
if ( AddrMgrEntryGet( &addrEntry ) )
{
//HalUARTWrite(0,addrEntry.extAddr,Z_EXTADDR_LEN);
osal_memcpy(&assoclist[_assocNum*8],addrEntry.extAddr,Z_EXTADDR_LEN);
_assocNum++;
}
}
通过打印出assoclist这个数组,发现关联表里会有mac全是ff的地址出来,正常情况下如果这个index为空的话,应该是无法进入if条件判断的吧,实际测试发现,关联表这些mac为ff的地址似乎也是实际占用着表的位置,导致设备接入几个后协调器返回给设备的信息里就告诉无法接入了。这种情况下试了下只能通过zgWriteStartupOptions(ZG_STARTUP_SET, ZCD_STARTOPT_DEFAULT_NETWORK_STATE)重建网络,其他的assoc操作好像不行,这会对已经加入的设备造成问题,所以不知出现这种ff地址该怎么处理?