在应用中,协调器开启了MTO功能。当有数据发送请求时,协调器通过AF_DataRequestSrcRtg()使用源路由表通讯;有时会遇到出现路由设备报告网络状态错误,协调器此时收到该错误报告后,应该让这条源路由表立即失效,不在启用。但是实际情况是协调器还是一直在使用这条完全失效的源路由表来通讯,导致不断重发数据,仍然会网络通讯失败。
请TI大神帮忙看看,应用层可以直接操作源路由表吗?眼睁睁看着网络错误而没法处理,有什么解决办法吗?
具体的抓包数据在附件中。
YiKai Chen:
沒看到你有附件,另外請問你用的z-Stack版本是?
user5791214:
回复 YiKai Chen:
附件没上传成功,z-Stack版本Z-Stack Home 1.2.2a.44539
user5791214:
回复 YiKai Chen:
附件:源路由失效情况下的抓包数据.rar
YiKai Chen:
回复 user5791214:
你要找路由的節點是0xE04D嗎?
user5791214:
回复 YiKai Chen:
是的,现场实际情况节点0xE04D被断电了。
YiKai Chen:
回复 user5791214:
节点0xE04D被断电當然route request沒辦法重建啊
user5791214:
回复 YiKai Chen:
断电是没办法重建的,问题的关键是这条源路由表应该失效作废,我的问题是应用层知道源路由表失效后,怎样能够让网络层知道这条路由表作废,而不让网络层在下一次通讯不再使用这个路由表。
YiKai Chen:
回复 user5791214:
從協議棧的角度來看並沒有人回覆0xE04D的route request,代表沒辦法有新的路由產生,就不會去把目前的路由去掉,因為協議棧並不知道你是把這個終端斷電了,要是復電了路由還在,通信馬上就可以進行而不需要進行路由重建
miffy:
回复 user5791214:
这个zigbee所说的自组网,网络自动重建,是有一个前提,那就是需要一定的时间,恰恰是这个时间段内,应用层需要通讯,必然失败