TI中文支持网
TI专业的中文技术问题搜集分享网站

设备被leave

协议栈:3.0.2

芯片:2530

问题:早上好。我现在有一个EndDevice以及一个Coordinator,这两个设备都开启了NV_RESTORE,当我将EndDevice断电之后重连,发现被ZC踢出网络,在重上电之前这两个设备是能正常通讯的。求解,谢谢。抓包档附上2019年8月16日09_00_20_终端重连被踢出网络.rar

Alvin Chen:

请说明做了什么改动,以及断电时长。 是否用SDK里面的generic demo 测试。

user6069081:

回复 Alvin Chen:

你好,我的改动是GenericAPP的应用层,并没有涉及到网络的主动leave。

Alvin Chen:

回复 user6069081:

你这抓包文件看不出来什么,所以我让你SDK原始demo去对比一下做一下测试

user6069081:

回复 Alvin Chen:

改动这么大原始的demo还有参考价值吗

Alvin Chen:

回复 user6069081:

因为不知道客户具体做了什么改动,只能让客户自己去比对了

user6069081:

回复 Alvin Chen:

那请帮忙看看这个抓包档的第2976行以后是什么情况?协调器最后为什么没有响应终端的data request呢?而且终端为啥不发孤儿节点声明呢?请教,谢谢。2019年8月15日18_06_05_第2976行自动掉线.rar

Alvin Chen:

回复 user6069081:

你打点一下断电在下面看是否又进入到变为orphancase ZDO_STATE_CHANGE:zclGenericApp_NwkState = (devStates_t)(MSGpkt->hdr.status);

user6069081:

回复 Alvin Chen:

你好,我的意图是当终端变为孤儿节点的时候让他重新加网,所以我在zclGenericApp_NwkState == DEV_NWK_ORPHAN里面让LED灯熄灭,从结果来看灯的确是熄灭了,可是抓包文件没有看到orphan 声明,终端也并没有rejoin网络,我是有开启NV_RESTORE的,代码如下,谢谢。

case ZDO_STATE_CHANGE:zclGenericApp_NwkState = (devStates_t)(MSGpkt->hdr.status);// now on the networkif ( (zclGenericApp_NwkState == DEV_ROUTER)||(zclGenericApp_NwkState == DEV_END_DEVICE) ){osal_start_timerEx( zclGenericApp_TaskID, SEND_MESSAGE_EVT, 1000);osal_stop_timerEx( zclGenericApp_TaskID, JOIN_LED_BLINK_EVT );net_blink_flg = FALSE;}if(zclGenericApp_NwkState == DEV_NWK_ORPHAN){HAL_TURN_OFF_RED_LED2();HAL_TURN_OFF_BLUE_LED2();bdb_StartCommissioning(BDB_COMMISSIONING_MODE_NWK_STEERING );}break;

Alvin Chen:

回复 user6069081:

这部分你是可以不用做的,Stack已经做了orphan的扫描恢复网络的步骤。case BDB_COMMISSIONING_PARENT_LOST:if(bdbCommissioningModeMsg->bdbCommissioningStatus == BDB_COMMISSIONING_NETWORK_RESTORED){//We did recover from losing parent}else{//Parent not found, attempt to rejoin again after a fixed delayosal_start_timerEx(zclGenericApp_TaskID, GENERICAPP_END_DEVICE_REJOIN_EVT, GENERICAPP_END_DEVICE_REJOIN_DELAY);}break;

把下面的补丁打一下,你自己那个扫网可以去掉的,说起来比较奇怪你没有做BDB和ZDO层的改变吧。

processors.wiki.ti.com/…/Zigbee_Known_Issues_and_Proposed_Fixes

user6069081:

回复 Alvin Chen:

1.是的我没有改变BDB以及ZDO层,我奇怪的是为何我的终端没有像您贴出的代码这样做rejoin动作以及没有发orphan声明。我要如何实现终端rejoin呢?
2.你让我打的补丁是关于协调器leave我的终端的问题吗?可是我的终端设备也就两个,这似乎不存在网络缓冲区溢出的情况吧。

赞(0)
未经允许不得转载:TI中文支持网 » 设备被leave
分享到: 更多 (0)