微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 协调器广播数据疑问

协调器广播数据疑问

时间:10-02 整理:3721RD 点击:

    小弟在项目中,需要这样的应用场景。协调器建立网络后,周期性的发送特定信息,终端入网后接受到广播信息后,然后向协调器发送动作指令,协调器接收到此动作指令后,进行相关的动作,然后回复终端一个响应信息,并且等待终端设备的ACK回应,在ACK响应处理中,如果是响应操作结果的话,则更新状态信息,否则重发响应信息。问题就出现在这里的。

    我的广播消息是这样来发送的:

dstAddr.endPoint = sapi_epDesc.simpleDesc->EndPoint; 

dstAddr.addr.shortAddr = 0xFFFF;
dstAddr.addrMode = (afAddrMode_t)AddrBroadcast;

uint8 SendBuffer[2];
SendBuffer[0] = 0xFF;
SendBuffer[1] = 0x55;

AF_DataRequest(&dstAddr, 
               &sapi_epDesc, 
               0x78,
               sizeof(SendBuffer),
               SendBuffer,
               &SmartLock_TransID, 
               0, 
               10);

协调器发送响应的代码为:
 dstAddr.endPoint =   sapi_epDesc.simpleDesc->EndPoint;  //Set the endpoint
dstAddr.addr.shortAddr =   dest_nwk;
dstAddr.addrMode       =   afAddr16Bit;
    
status = AF_DataRequest(&dstAddr, 
                         &sapi_epDesc, 
                         KEY_OEPN_DOOR_CLUSTERID_CB, 
                         sizeof(Buffer),
                         (uint8 *)&Buffer,
                         &SmartLock_TransID,
                         AF_ACK_REQUEST,       
                         AF_DEFAULT_RADIUS);
 在ACK响应接收那里,广播消息也会有ACK响应,但是从sniffer抓包上面,是没有ACK响应的。现在要在ACK响应里面,区分广播的ACK和发送响应消息的ACK,请问,有什么好的办法来解决?广播的ACK是怎么回事?自己的猜测,可能是MAC向上层通知这个广播数据已经发送出去了,向上层的报告?请问,真实情况是怎么样的?

广播是没有ACK消息过来的。

如果你使能了APS ACK的话,可以通过发送出去的数据帧里面的transID判断

在你应用层里面加ack,afconfirm是af data request调用一次就触发一次

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top