测试环境如下:协调器(A),源节点(B),目标节点(C),通过串口的方式把源节点信息(短地址、IEEE地址、端点号)、目标节点信息(IEEE地址、端点号)、Cluster ID发送到A中,A根据B的短地址调用ZDP_BindReq()把B与C的信息发送绑定请求到B,B打开了Bind_req消息并收到Bind_req请求后执行:
case Bind_req:
{
ZDO_BindUnbindReq_t bindReq;
ZDO_ParseBindUnbindReq( inMsg, &bindReq );
ZDO_ProcessBindUnbindReq( inMsg, &bindReq );
}
break;
仿真发现B能执行APSME_BindRequest与ZDP_NwkAddrReq,并通过ZDP_SendData返回发送Rsp到A中;
此时回到A中,A收到Bind_rsp消息后:
case Bind_rsp://接收绑定消息应答
if (ZG_DEVICE_COORDINATOR_TYPE && matchED)//一直卡在这个地方不能进入
{
ZDMatchSendState(
(uint8)((inMsg->clusterID == Bind_rsp) ? ZDMATCH_REASON_BIND_RSP : ZDMATCH_REASON_UNBIND_RSP),
ZDO_ParseBindRsp(inMsg), inMsg->TransSeq );
}
A收到 Bind_rsp后,一直进不去(ZG_DEVICE_COORDINATOR_TYPE && matchED)这个条件,使得无法执行ZDMatchSendState。
1.请问我理解的流程是否正确。
2.什么原因会导致matchED一直为空,而不能进入ZDMatchSendState。
3.在A收到Rsp时,B的绑定表是否已经建立了,是否已经可以发送数据。
JINNIAN LIN1:
这都没人回应的吗????