Zigbee 对路由请求的原语处理

NLME-ROUTE-DISCOVERY.request

这里是对 NLME-ROUTE-DISCOVERY.request的解读。

NLME-ROUTE-DISCOVER.request{
    DstAddrMode, // mode (简记,方便后面描述, 下同)
    DstAddr,    // addr
    Radius,
    NoRouteCache    // cache
}
NameTypeValid RangeDesc
mode Integer 0-2 0(no destination address) 
1(16 bit nwk addr of a multicst group) 
2(16 bit nwk address of an individual device)
addr 16-bit any nwk addr 如果mode=0, 该字段不存在
Radius integer 0x0-0xff 限制转次跳数
cache bool true/false 禁止建立 路由记录表(route record table) 
TRUE no 
FALSE ,establish a route record table

本地处理

    • ZIGBEE END 接收到这条原语(primitive) 返回状态 INVALID_REQUEST
    • mode != 0, addr 为广播, 返回 INVALID_REQUEST
    • FFD设备接收到, 但设备本身没有路由能力, mode != 0, 则使用 NLME_ROUTE-DISCOVERY.confirm(ROUTE_ERROR ,4)返回
    • FFD设备接收到,本身拥有路由能力, mode = 2, 启动网络层来进行路由发现,试图建立当前设备跟addr之间的路由
    • FFD设备接收到,本身拥有路由能力, mode = 1, 网络层检查设备的nwkGroupIDTable 来判断是否为小组成员,如果是小组成员, NLME-ROUTE-DISCOVERY.confirm(SUCCESS), 停止后续的处理。如果不是小组成员,则网络层会继续进行路由发现,找到当前设备与group id标定设备之间的路由。
    • FFD设备接收到,本身拥有路由能力, mode = 0,网络层管理实体发起MANY-TO-ONE路由发现,这一部分在3.6.3.5.1描述。
    • 以上3种情况中任意1种路由发现,设备会发送一个route discovery command frame 来开展路由发现。若是mode=0, 则立即返回SUCCESS, mode!=0的情况下,要等收到一个route reply command frame 或者 操作超时 (timeout)。 收到路由应答则返回SUCCESS, 没有收到则返回ROUTE_ERROR。
------------------------------------------------ Newbit Studio, 感谢你的光临 http://weibo.com/newbittech ------------------------------------------------
原文地址:https://www.cnblogs.com/newbit/p/15397824.html