关于多级父子节点,退网问题(leaving a network)
时间:10-02
整理:3721RD
点击:
情景:父节点退网时,同时也让一级子节点退网;一级子节点退网时,也让二级子节点退网。
当父节点退网时,执行以下函数:
leaveReq.removeChildren = true;
..........................
NLME_LeaveReq( &leaveReq );
..................................
按我的理解,他会广播数据包,通知其子节点退网。
问题是:子节点收到该数据包后,相应的处理函数在哪里?因为我们是做照明,希望灯泡退网时(即恢复出厂设置)能够闪烁提示。
不知道TI是不是把这段代码封装了,不对外开放。
我自己找了一下,可能是这个API:void ZDO_LeaveInd( NLME_LeaveInd_t* ind )(等待debug确认)
问题是:即便一级子节点收到数据包,进入这个函数:void ZDO_LeaveInd( NLME_LeaveInd_t* ind )。
在这个函数内部只复位了本地设备,并没有执行NLME_LeaveReq( &leaveReq ),继续通知二级子节点。
如果是空中发出来的leave request,接收端的处理一定是ZDO_LeaveInd