silicon zigbee下一跳路由选择过程

发布时间 2023-04-23 20:36:43作者: wssheng
1.如果是发送给自己的信息,则调用回环接口发送
2.如果自己是end device,则把信息发送给父节点
3.如果目标节点是我们的子节点,直接转发到子设备(如果子节点是关闭接收的end device,则缓存在mac 队列里直到子节点下一次轮询消息)
4.如果目标节点存在路由表里(路由信息可能来自路由发现或者 MTO路由发现)则使用路由表里的信息
5.如果在源路由里能找到目标节点信息,则使用源路由的信息
6.如果使能了 ENABLE_ROUTE_DISCOVERY 或者 FORCE_ROUTE_DISCOVERY标志,则发起路由请求并等待路由回复以决定下一跳
7.如果目标节点在邻居表,直接发送给对应设备
8.如果还是没有下一跳,则发送失败
 
一般来说,源路由将优先于AODV路由发现,但如果您意外地试图发送到某个没有源路由(或另一侧的MTOR)的目的地,则可能会启动AODV路由发现,这就违反了使用源路由的目的。
 
注意,上述逻辑发生在目标节点短地址获取成功之后(可以是在发送API里指定EMBER_OUTGOING_DIRECT,或者在发送API里指定 通过Address Table或 Binding Table获取短地址,包括可能的任何短地址地址发现标志)。如果目标节点短地址通过这些方法不可用,并且没有置位EMBER_APS_OPTION_ENABLE_ADDRESS_DISCOVERY,则发送将失败,上面的逻辑都不会被处理。