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,则发送将失败,上面的逻辑都不会被处理。
标签:发送,zigbee,silicon,地址,如果,节点,路由,DISCOVERY From: https://www.cnblogs.com/thinkinglife/p/17347668.html