一、了解主要函数
先来看一下TI官方的一个API的定义:
函数原型
ZStatus_t NLME_Get Request( ZNwkAttributes_t NIBAttribute,uint16 Index, void *Value ),
功能
允许相邻的更高层去获取网络信息库的属性值
参数描述
NIBAttribute—仅支持如下属性:
nwkCapabilityInfo 获取网络容量信息
nwkNumNeighborTableEntries 获取有效的邻居表个数
nwkNeighborTable 获取邻居表地址索引
nwkNumRoutingTable Entries 获取有效的路由表个数
nwkRoutingTable 获取邻居表地址索引
在ZNwkAttributes_t枚举类型中有定义
Index—用于表的索引,邻居表和路由表都是数组,代表调用第几个
Value—指向包含属性值的内存位置的指针 读取的结果指向的地址
ZStatus_t—定义在 ZComDef.h 中的状态值。
二、调用函数实现
1、邻居表打印
byte ntnum=0;
NLME_GetRequest(nwkNumNeighborTableEntries,0,&ntnum);
byte index=0;
neighborEntry_t* ntTable;
uint8 *pNtBuf = NULL;
pNtBuf =osal_mem_alloc((short)(ntnum*sizeof(neighborEntry_t)));
if(pNtBuf!=NULL){
ntTable = (neighborEntry_t *)pNtBuf;
for(index=0;index<ntnum;index++)
{
NLME_GetRequest(nwkNeighborTable,index,(void *)ntTable);
WRITE_ZIGBEE("nwkNeighborTable[%d]:\r\n",index);
WRITE_ZIGBEE("neighborAddress:%04x\r\n",ntTable->neighborAddress);
WRITE_ZIGBEE("neighborExtAddr:");
for(i=0;i<8;i++)
{
WRITE_ZIGBEE("%02x ",ntTable->neighborExtAddr[7-i]);
}
WRITE_ZIGBEE("\r\n");
WRITE_ZIGBEE("age:%d\r\n",ntTable->age);
WRITE_ZIGBEE("linkInfo->txCounter:%d\r\n",ntTable->linkInfo.txCounter);
WRITE_ZIGBEE("linkInfo->txCost:%d\r\n",ntTable->linkInfo.txCost);
WRITE_ZIGBEE("linkInfo->rxLqi:%d\r\n",ntTable->linkInfo.rxLqi);
WRITE_ZIGBEE("linkInfo->txFailure:%d\r\n\r\n",ntTable->linkInfo.txFailure);
ntTable++;
}
}
2、路由表打印
uint8 *pRtBuf = NULL;
rtgItem_t* rtTable;
pRtBuf =osal_mem_alloc((short)rtnum* sizeof(rtgItem_t));
if(pNtBuf!=NULL)
{
rtTable = (rtgItem_t *)pRtBuf;
for(index=0;index<rtnum;index++)
{
NLME_GetRequest(nwkRoutingTable,index,(void *)rtTable);
WRITE_ZIGBEE("nwkRoutingTable[%d]:\r\n",index);
WRITE_ZIGBEE("dstAddress:%04x\r\n",rtTable->dstAddress);
WRITE_ZIGBEE("nextHopAddress:%04x\r\n",rtTable->nextHopAddress);
WRITE_ZIGBEE("expiryTime:%d\r\n",rtTable->expiryTime);
WRITE_ZIGBEE("status:%d\r\n",rtTable->status);
WRITE_ZIGBEE("options:%d\r\n\r\n",rtTable->options);
rtTable++;
}
}
参考链接:https://blog.csdn.net/mahaichao540174345/article/details/7973785