可以确定是协议栈内部的bug,没有源代码,如何破?
YiKai Chen:
You can report on and TI support team there would help to verify it. Once bug get confirmed, they will provide fix in the future.
Susan Yang:
请问能详细说明下吗?或者直接发帖到 e2e.ti.com/…/
miffy:
回复 Susan Yang:
bug是这样的,现在我们利用了many to one方案来发送消息,AN123文档研究不下二十遍,分析了每个字母每段话,参考了其knobs,测试了两种方案。
一,ZNP上开启many to one缓存,
CONCENTRATOR_ROUTE_CACHE=TRUE,
MAX_RTG_SRC_ENTRIES=430,
SRC_RTG_EXPIRY_TIME=30
经过长时间50~100ms间隔连续发送单播测试,开始时候,发出的ZCL包,抓包分析NWK Header还有Source Route Included[0x1] Yes,就是说协议栈在发送数据前还添加source route 到数据包头部,长时间测试之后,再发,就没有添加了,抓包分析Source Route Included[0x0] No,而且经常出现路由错误,此时节点给协调器发送source record都正常,按理说协调器会缓存其source route路径,结果协议栈并不利用source route table,而是协议栈自己去路由,还出现了路由错误重发的情况。
二、ZNP上关闭source route缓存,我们上层APP自己管理source route,自己记录route record,协议栈收到route record,就送给上层APP,然后上层需要发送数据的时候,调用MT_AfDataRequestSrcRtg来进行发送。结果经过测试,还是长时间运行之后,出现了无法添加source route的问题,然后ZNP重启之后,就又正常了。
这不是协议栈底层出了bug? RTG_AddSrcRtgEntry_Guaranteed这个函数是封装起来的看不到源码,TI资料也没有任何解释,网上也搜不到相关说明,现在怀疑内部出了某些异常,ZNP重启之后就自动恢复了
miffy:
回复 Susan Yang:
网上从来没有看到有人用MT_AfDataRequestSrcRtg来发送数据的,多数人都用的是MT_AfDataRequest,所以没有人提到说有bug