微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > ZHA协调器如何知道终端掉线?

ZHA协调器如何知道终端掉线?

时间:10-02 整理:3721RD 点击:

使用ZHA协议栈的协调器,除了在应用层自己添加心跳以外,协议栈本身如何知道终端掉线了呢?

终端本身会周期的发送数据查询是否与协调器连接,这部分代码在哪里呢?

主设备会每隔一段时间给终端发送信息,正常情况下终端会回复应答信息,以示连接状态良好。如果长时间没有应答,则判定为掉线

请指示下具体的函数

请指示下具体的函数

在ZHA 1.2里面加入了关于End Device离线的功能

关于Child Aging的timeout定义在协议栈nwk_gloables.c文件中,如下。

// Child table Management timeout values

CONST uint16 gKEEPALIVE_TIMEOUT_MAX = KEEPALIVE_TIMEOUT_MAX; //在协议栈运行过程中,被初始化以后就不会变化了,用来表示节点最大的Age时间可以是60分钟

CONST uint16 gTIMEOUT_COUNTER_MAX = TIMEOUT_COUNTER_MAX;//在协议栈运行过程中是动态变化的,协议栈中有一个1分钟的循环timer event,当timer event触发的时候,会去检测在这个在一分钟是否有收到Data request,或者其他数据,如果没有的话就会把timeoutCounter减1,如果连续60分钟没有收到的话就把这个节点放到另外一个not child 的list里面去了,在中途只要收到一条来自这个节点的数据,这个counter立刻被Reset成初始化60,这个值就是通过endDevKaTimeout获得的。

当有新的RFD设备入网的时候,初始化RFD设备的Aging Timeout时间为60分钟。

ZDO_ProcessEndDeviceTimeoutReq 就是你说的功能。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top