您好,欢迎光临电子应用网![登录] [免费注册] 返回首页 | | 网站地图 | 反馈 | 收藏
在应用中实践
在实践中成长
  • 应用
  • 专题
  • 产品
  • 新闻
  • 展会
  • 活动
  • 招聘
当前位置:中国电子应用网 > 技术应用 > 正文

zigbee路由原理-树型

2009年11月13日11:40:33 本网站 我要评论(2)字号:T | T | T
关键字:

ZigBee2004和ZigBee2007 均有对树型路由的支持.

     ZigBee2004采用分布式地址分配策略;ZigBee2007地址分配策略可选,如果选用随机地址分配策略,就不支持树型路由.

     当采用分布式地址分配策略时,网络层有一套算法来支持数型路由.
    
     分布式地址分配策略的树型路由原理来原于地址分配算法原理.

     当节点发送数据时,如果节点为终端节点,则数据直接发给终端节点的父节点,当接点为ROUTER点时,通过比较目标地址和CSKIP 可以知道是要向上传(传给父节点)还是向下传,传给某一个子节点.COORDINATOR只需要决定传给哪一个子节点.

    判断某一个节点是不是自己的下游节点算法是:
    如果目标地址比该地址大,切目地址小于该节点上一级CSKIP与该节点地址的和,
    C语言实现代码为:
PRIVATE bool_t IsMyDescendant( uint16 parentaddr,

                 uint16 childaddr,uint8 parentdepth )
{
    if (parentdepth == 0)
           return TRUE;
      else
    {
        if ((parentaddr < childaddr) &&
            (childaddr < (parentaddr + get_Cskip( parentdepth-1 ))))
            return TRUE;
        else
            return FALSE;
    }
}

树型路由实现算法 C语言代码为:

PRIVATE bool_t JTreeRouting(uint16 dstaddr, uint16 *dstnexthop)
{
    NWK_NeighborTable_s *ChildPtr;
    if(dstaddr == 0xffff)
    {
        *dstnexthop = 0xffff;
        return TRUE;
    }
#ifdef I_AM_ENDDEVICE
     *dstnexthop = psPib->u16CoordShortAddr;
     return TRUE;
#else //router or coor

        // Find which of my child nodes is the parent of the destination.
#ifndef I_AM_COORDINATOR
          if (!IsMyDescendant( gsNWK_Para.gsNIB.u16nwkNetworkAddress,

               dstaddr, gsNWK_Para.gNwkDepth ))
        {
                *dstnexthop = psPib->u16CoordShortAddr;
                return TRUE;
        }
#endif
ChildPtr = gsNWK_Para.neighbortablehead;
        while(ChildPtr != NULL)
        {
             if(ChildPtr->u8Relationship == NEIGHBOR_CHILD )
             {
                  if (((ChildPtr->u16Addr == dstaddr)           

                 ||IsMyDescendant(ChildPtr->u16Addr,dstaddr,          

                  gsNWK_Para.gNwkDepth+1)))
                  {

                       *dstnexthop = ChildPtr->u16Addr;
                        return TRUE;

                  }
             }
             ChildPtr = (NWK_NeighborTable_s *)ChildPtr->next;
}//end while

     return FALSE;
#endif

}

网友评论:已有2条评论 点击查看
登录 (请登录发言,并遵守相关规定)
如果您对新闻频道有任何意见或建议,请到交流平台反馈。【反馈意见】
关于我们 | 联系我们 | 本站动态 | 广告服务 | 欢迎投稿 | 友情链接 | 法律声明
Copyright (c) 2008-2026 01ea.com.All rights reserved.
电子应用网 京ICP备12009123号-2 京公网安备110105003345号