TI中文支持网
TI专业的中文技术问题搜集分享网站

关于CC2530的zigbee发送选择广播模式的ACK问题

  各位好,最近发现CC2530在进行广播发送数据时,发送选项选择需要ACK,在多个设备接收时,用sniffer抓包,发现虽然有多个设备接收,但是只有一个ACK,我能理解有ACK,可是这个ACK是谁发送的呢,两个接收设备为什么只有一个ACK,难道是两个接收设备之间有辨别?这个不应该吧,求人来解惑一下。

sinan chen:

你是用AF_DataRequest();这个函数发送数据么?

函数里对广播进行了限制了,不能够使能ACK,如下:

req.txOptions = 0;

if ( ( options & AF_ACK_REQUEST ) && ( req.dstAddr.addrMode != AddrBroadcast ) && ( req.dstAddr.addrMode != AddrGroup ) ) { req.txOptions |= APS_TX_OPTIONS_ACK; }

houshen xie:

回复 sinan chen:

我是用的是TIMIC的进行测试的,用的是MSA_McpsDataReq()函数进行发送的

houshen xie:

回复 sinan chen:

贴上函数的代码

void MSA_McpsDataReq(uint8* data, uint8 dataLength, bool directMsg, uint16 dstShortAddr){  macMcpsDataReq_t  *pData;  static uint8      handle = 0;  if ((pData = MAC_McpsDataAlloc(dataLength, msa_securityLevel, msa_keyIdMode)) != NULL)  {    pData->mac.srcAddrMode = SADDR_MODE_SHORT;    pData->mac.dstAddr.addrMode = SADDR_MODE_SHORT;    pData->mac.dstAddr.addr.shortAddr = dstShortAddr;    pData->mac.dstPanId = msa_PanId;    pData->mac.msduHandle = handle++;    pData->mac.txOptions = MAC_TXOPTION_ACK;//    pData->mac.txOptions = MAC_TXOPTION_NO_RETRANS;    /* MAC security parametcers */    osal_memcpy( pData->sec.keySource, msa_keySource, MAC_KEY_SOURCE_MAX_LEN );    pData->sec.securityLevel = msa_securityLevel;    pData->sec.keyIdMode = msa_keyIdMode;    pData->sec.keyIndex = msa_keyIndex;    /* If it's the coordinator and the device is in-direct message */    if (msa_IsCoordinator)    {      if (!directMsg)      {        pData->mac.txOptions |= MAC_TXOPTION_INDIRECT;      }    }    /* Copy data */    osal_memcpy (pData->msdu.p, data, dataLength);    /* Send out data request */    MAC_McpsDataReq(pData);  }}

赞(0)
未经允许不得转载:TI中文支持网 » 关于CC2530的zigbee发送选择广播模式的ACK问题
分享到: 更多 (0)