请问:CC2630 协调器让节点离开网络,应用层如何获取指示,并且有时间做应用处理
TI:
使用芯片CC2630
请问协调器让一个终端离开这个网络,需要应用层收到指示,并且有时间应用处理,比如保存数据至NV。
目前做法:
(1)在应用层的DLSApp_setupZStackCallbacks中注册
zdoCBReq.has_leaveIndCB = true;
zdoCBReq.leaveIndCB = true;
(2)终端处理ZDO_ProcessMgmtLeaveReq函数中增加回调,ID采用:ZDO_LEAVE_IND_CBID(ZDAPP.h),
其原在ZStackTaskInit中就有注册,在ZDO_LeaveInd中回调,(ZDO_LeaveInd在何处会被调用?)。
void ZDO_ProcessMgmtLeaveReq( zdoIncomingMsg_t *inMsg )
{……………………
// Pass the leave indication to higher layer if callback registered.
if (zdoCBFunc[ZDO_LEAVE_IND_CBID] != NULL)
{
(void)zdoCBFunc[ZDO_LEAVE_IND_CBID](&ind);
}
……………………
}
实际测试问题:应用层可以收到指示,但是处理时间不够。
请问如何修改?是否需要将NLME_LeaveReq延时处理?
谢谢。
终端节点采用CC2630,需要CC2630的APP Stack 收到 Core stack的指示,谢谢
ZDO_LeaveInd是在收到leave命令后,在core stack中调用的,然后再把leave indication发送到应用层去。
请问延迟处理的目的为了什么?
目前就是想留一个接口:
想在应用层做一些指示,如LED闪亮;其次应用层可能需要保存或删除一些NV数据。
感觉ZDO_LeaveInd没有被调用,因此在ZDO_ProcessMgmtLeaveReq中增加了ZDO_LEAVE_IND_CBID回调,
但是很快退网完成复位,想做成退网完成后,延时复位。
谢谢
可以在协调器上直接调用NLME_LeaveReq应该可以的