Z-stack 之 打印路由表 和 邻居表

本文介绍了如何使用Z-stack API NLME_GetRequest来获取和打印邻居表和路由表信息。通过示例代码展示如何解析结构体,如neighborEntry_t和rtgEntry_t,并分析了一个简单的网络拓扑。在实践中发现,节点的邻居表不包含父节点信息,而路由表用于记录通往其他节点的路径。
摘要由CSDN通过智能技术生成

邻居表和路由表在Z-stack已经定义,我们可以从网络属性库中利用z-stack提供的API来打印信息。

函数原型:(在NLMEDE.h中定义)

ZStatus_t NLME_GetRequest(ZNwkAttributes_t NIBAttribute,uint 16 index,void *Value);

参数描述: NIBAttribute-支持的属性:

nwkCapabilityInfo 网络容量

nwkNumNeighborTableEntries 邻居表数目

        nwkNeighborTable 邻居表

       nwkNumRoutingTableEntries 路由表数目

       nwkRoutingTable 路由表


Index-------用于表的索引

        Value-------指向包含属性值的内存位置的指针

      如果要使用此函数,首先要看看已编辑的文件中是不是包含了NLMEDE.h的头文件,没有请包含。


      初次使用API,感觉重要的是要把参数以及格式处理好。我使用的方法是在z-stack中搜索这个函数,发现在ZDO中使用过这个函数,就按照它的格式进行修改。代码如下:

      /*******************************************************************
      邻居表和路由表的读取
      ********************************************************************/


         uint8 capabilities;
         NLME_GetRequest(nwkCapabilityInfo, 0, &capabilities);


         
         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<ntnum;index++)
              {
                NLME_GetRequest(nwkNeighborTable,index,(void *)ntTable);
                ntTable++;
              }
         }
         
       /******************************************************************
         neighborEntry_t nt2;
        NLME_GetRequest(nwkNeighborTable,1,&nt2);
         *****************************************************************/


         byte rtnum;
         NLME_GetRequest(nwkNumRoutingTableEntries,0,&rtnum);
         uint8 *pRtBuf = NULL;
         rtgItem_t* rtTable;
         pRtBuf =osal_mem_alloc((short)rtnum* sizeof(rtgItem_t));
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值