大家好,请教一个问题
z-stack2.5.1a协议栈中,在协调器中,删除已经加入网络的节点,协调器会发送一个删除命令给待删除的节点,节点收到后,会回应一个状态信息,这时候才能成功删除节点,如果相应的节点没有收到的话,就会删除不成功。
那么,问题来了,在协调器中通过什么判断是否收到节点的回应信息呢?
希望大神帮忙解答,万分感谢
YiKai Chen:
應該是要收到ZDP MGMT leave response
Viki Shi:
发送ZDP_MgmtLeaveReq()后,节点回复ZDP_MgmtLeaveRsp()
Alvin Chen:
回复 Viki Shi:
增加注册回调函数ZDO_RegisterForZDOMsg(task_id, Mgmt_Leave_rsp);在GenericApp_Init里面。
在 GenericApp_ProcessZDOMsgs进行处理: case Mgmt_Leave_rsp: ZDO_ParseMgmtLeaveRsp( pMsg );
haiouo r:
回复 Alvin Chen:
感谢您的回答,但是还有个问题, 这个函数ZDO_ParseMgmtLeaveRsp( pMsg )是自己定义,然后自己定义如何解析这个回应消息的对吧,那这个pMsg是如何获取呢,麻烦您能告诉我一下么,谢谢
Alvin Chen:
回复 haiouo r:
GenericApp.cstatic void GenericApp_ProcessZDOMsgs( zdoIncomingMsg_t *inMsg )
haiouo r:
回复 Alvin Chen:
感谢您 的回答,我可能描述不够清楚,下面再详细描述一下:
我发现这个函数的定义
/** ZDO_ParseMgmtLeaveRsp – Parse the Mgmt_Leave_rsp message.*Parameter: a – pointer to the message to parse [zdoIncomingMsg_t *]**returns the status field of the message.*/
#define ZDO_ParseMgmtLeaveRsp(a) ((uint8)(*(a->asdu)));然后我找到这个结构体zdoIncomingMsg_t的定义,
typedef struct
{osal_event_hdr_t hdr;zAddrType_tsrcAddr;uint8wasBroadcast;cId_tclusterID;uint8SecurityUse;uint8TransSeq;uint8asduLen;uint16macDestAddr;uint8*asdu;uint16macSrcAddr;
} zdoIncomingMsg_t;不明白这里的*asdu这个指针的具体含义,其实我的最终意思就是想知道 ZDO_ParseMgmtLeaveRsp(pMsg)这函数里面的参数pMsg包含什么内容
YiKai Chen:
回复 haiouo r:
asdu这个指针的具体含义是APS service data unit
haiouo r:
回复 Alvin Chen:
非常感谢