void zb_SendDataRequest ( uint16 destination, uint16 commandId, uint8 len,uint8 *pData, uint8 handle, uint8 txOptions, uint8 radius )增加网路广播发送
时间: 2023-06-10 21:06:07 浏览: 93
通过广播在局域网中发送和接收消息
要将zb_SendDataRequest函数修改为支持网络广播发送,需要在函数参数中添加一个新的参数,用于指示是否进行网络广播。同时,在函数体内部需要判断是否需要进行网络广播,如果需要,则需要将目标地址设置为广播地址。具体的修改如下:
```
void zb_SendDataRequest ( uint16 destination, uint16 commandId, uint8 len, uint8 *pData, uint8 handle, uint8 txOptions, uint8 radius, bool broadcast )
{
if (broadcast) {
// 如果需要进行网络广播,则将目标地址设置为广播地址
destination = BROADCAST_ADDRESS;
}
// 发送数据请求
afAddrType_t dstAddr;
dstAddr.addr.shortAddr = destination;
dstAddr.addrMode = (destination == BROADCAST_ADDRESS) ? afAddrBroadcast : afAddr16Bit;
dstAddr.endPoint = handle;
uint8 seqNum;
uint8 status = ZFailure;
seqNum = zstack_zdoSendSyncReq(ZSTACK_SYS_APP_TL, ZDO_MSG_DATA_REQUEST, &dstAddr, commandId, len, pData, txOptions, radius, &status);
if (status == ZSuccess) {
// 发送成功
// ...
} else {
// 发送失败
// ...
}
}
```
在使用该函数时,如果需要进行网络广播,则将broadcast参数设置为true即可:
```
zb_SendDataRequest(0xFFFF, CMD_ID, len, pData, handle, TX_OPTION_ACK, RADIUS, true);
```
阅读全文