协议栈版本:2.3.0-1.4.0
协调器打开. 会收到数据.ack正常.
当协调器关闭的时候.
发送选项为
SampleApp_Periodic_DstAddr = 0x0000;
AF_DataRequest( &SampleApp_Periodic_DstAddr, &SampleApp_epDesc,
SAMPLEAPP_COM_CLUSTERID,
len + 1,
tmp_data,
&SampleApp_TransID,
AF_DISCV_ROUTE | AF_ACK_REQUEST,//需要目的地恢复ACK
AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
同样会收到ACK.
case AF_DATA_CONFIRM_CMD:
SampleAppAckFailCnt = 0;
if((g_device_info.type == MODEM) || (g_device_info.type == TEST))//只有2种设备
{
HalUARTWrite(0, "Trans", 5);//换行 }
break;
求问这个ACK不是应该由目的地址的 APS发出来的吗? 我希望有一个可靠的 发送-回馈机制. 该怎么做呢?
VV:
你的做法是对的,你可以看下收到的Confirm里面的trans ID,跟发送的是否一致
yuejie zhu:
回复 VV:
多谢VV神的回答, 我知道为什么了。
需要判断消息包里的状态值. 我之前没有判断.所以有问题了.
case AF_DATA_CONFIRM_CMD: if(MSGpkt->hdr.status == SUCCESS) { SampleAppAckFailCnt = 0;
Stockton Zhang:
回复 VV:
VV你好,
关于这个发送—响应的问题,如果设备A发送数据包到一个end device B,但是这个B的睡眠时间比较长,5s才poll一下他的父设备接受消息,那么,A能否收到AF_DATA_CONFIRM_CMD呢?
Stockton Zhang:
回复 VV:
VV你好
能不能帮忙解答一下上面的问题呢?