1.AssociatedDevList 里的timeoutCounter一直在减,终端POLL的时候会恢复原来值,
如果终端一直不poll,减到零之后会怎样?
2.我这边是一个协调器,多个终端,星型拓扑,没有路由,大约三四十个终端(都一直不睡眠),
如果终端POLL的太频繁,会造成网络拥堵,所有建议终端多久POLL一次比较好?
3.假如终端断电了,协调器端timeoutCounter会减到0,此时是不是就把该终端踢了?如果终端又上电了还能连得上吗?
4.如果把协调器端的timeoutCounter初始值改小,终端上是不是也要改?能不能改到100左右?
5.为什么改到100,之前测试过,终端加入协调器,路由也加入协调器,此时把协调器关了,终端会加入路由,
此时再把协调器上电,发现协调器控不了终端了,把路由再关了才行,之前有恢复说是timeoutCounter没有到0,所以不能控制终端
YiKai Chen:
1. 减到零之后终端会從association list移除
2. 60秒
3. 是的,协调器端会把该终端踢了;终端又上电了还是能回连得上
4. 可以,终端不用改
5. 應該是路徑還沒重建好,mesh的路徑需要些時間才會恢復
Viki Shi:
1、timecounter等于0了,就会把节点的信息放入一个NotmyChild的list里面。
// Not My Child structure
typedef struct
{
uint16 shortAddr;
uint16 timeoutCounter;
} nwkNotMyChild_t;然后定期的去更新这个变量,如果这个时候收到data req,就会把节点信息从NotmyChildlist重新移到你Associate list里面去。
如果在NotmyChildList里面的counter的时候,那么就把这个节点彻底删除了NwkNotMyChildSendLeave
2、根据应用选择,可以定义变量的最大值
3、可以rejoin
4&5、timeoutCounter的值可以由节点自己定义,然后通过device announce发送给协调器
user5367314:
回复 YiKai Chen:
1.针对问题5,我的测试等了很久都不行,把路由断电了就好了,把timeoutCounter改小是不是会好点?
2.有的时候把终端直接断电,然后重新刷固件,此时发现该终端入了原来的协调器就被踢了,
BDB_DEFAULT_TC_REQUIRE_KEY_EXCHANGE已改为FALSE还是不行,怀疑是不是timeoutCounter没有减到零,
协调器还认为该终端还在,所有再加进来就会被拒?有没有什么办法可以解决该问题?把timeoutCounter改小是否可以?多小比较合适?
3.timeoutCounter协调器端没有初始值?这个参数是终端发给协调器的?所以要设置是不是只要设置终端上的timeoutCounter即可?
YiKai Chen:
回复 user5367314:
建議抓包看是什麼問題
user5367314:
回复 YiKai Chen:
之前问过你,你的回复是“终端会加入路由,再把协调器上电,此时协调器並不知道终端加入路由所以要等到协调器child age掉终端後协调器才能透過路由发数据给终端”
请问怎么解决终端重新刷固件后加入协调器被踢的问题,把END_DEV_TIMEOUT_VALUE改小?该多少合适?
YiKai Chen:
回复 user5367314:
终端重新刷固件后,你必須要使能permit join讓终端重新加網
user5367314:
回复 YiKai Chen:
permit join肯定使能了,现在的情况是能加进去,只是十几秒后就被踢了,双方BDB_DEFAULT_TC_REQUIRE_KEY_EXCHANGE已改为FALSE,
现在想的是把END_DEV_TIMEOUT_VALUE改小是否能解决问题?按照你之前的回复是“终端会加入路由,再把协调器上电,此时协调器並不知道终端加入路由所以要等到协调器child age掉终端後协调器才能透過路由发数据给终端”
YiKai Chen:
回复 user5367314:
processors.wiki.ti.com/…/Zigbee_Known_Issues_and_Proposed_Fixes 的補丁有沒有打上
user5367314:
回复 YiKai Chen:
没有,这一页全部要修改一遍?
YiKai Chen:
回复 user5367314:
Yes