SDK:simplelink_lowpower_f3_sdk_7_40_00_64
您好,我正在使用CC2340R5作为主机来扫描周围的设备。我已经获取了周围设备的MAC地址和RSSI,但无法获取响应包的数据


This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
感谢您联系我们。
请注意、这是一个英文论坛、如果您不想继续使用英语、也可以在此处发布您的问题: https://e2echina.ti.com。
我可否提出以下问题,以便更好地了解情况?
Br、
大卫。
您好!
(抱歉、我点击了错误的"TI 认为已解决"按钮)。
您能否提供有关您在哪里阅读广告报告的更多信息(如果可以分享、对您正在处理此报告的功能搜索代码可能会有所帮助)。
您是否将 BLEAPPUTIL_ADV_REPORT 作为集中式 ScanHandler 的一部分?
我建议查看我们此处的材料: 低功耗蓝牙扫描和广告。
我还可以分享一个 e2e 主题、其中显示了阅读广告报告所需的设置: https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1278585/cc2340r5-central-to-peripheral-automatically-connect
Br、
大卫。
BLEAppUtil_EventHandler_t ttcScanHandler =
{
.handlerType = BLEAPPUTIL_GAP_SCAN_TYPE,
.pEventHandler = ttc_ScanEventHandler,
.eventMask = BLEAPPUTIL_SCAN_ENABLED |
BLEAPPUTIL_SCAN_DISABLED |
BLEAPPUTIL_ADV_REPORT
};
void ttc_ScanEventHandler(uint32 event, BLEAppUtil_msgHdr_t *pMsgData)
{
BLEAppUtil_ScanEventData_t *scanMsg = (BLEAppUtil_ScanEventData_t *)pMsgData;
switch (event)
{
case BLEAPPUTIL_ADV_REPORT:
{
...
}break;
case BLEAPPUTIL_SCAN_ENABLED:
{
....
}
}break;
case BLEAPPUTIL_SCAN_DISABLED:
{
uint8_t reason;
uint8_t numReport;
uint8_t i;
uint8_t len;
uint8_t *pBuffData;
uint8_t pOutData[100];
uint8_t pOutDataLen;
uint8_t test_write[6]={0xff,0xff,0xff,0xff,0xff,0xff};
uint16_t device_nameLen;
reason = scanMsg->pBuf->pScanDis.reason;
numReport = scanMsg->pBuf->pScanDis.numReport;
// Get the address from the report
for(i = 0; i < APP_MAX_NUM_OF_ADV_REPORTS; i++)
{
memset(¢ralScanRes[i], 0, sizeof(App_scanResults));
}
for (i = 0; i < scanMsg->pBuf->pScanDis.numReport; i++)
{
GapScan_Evt_AdvRpt_t advReport;
GapScan_getAdvReport(i, &advReport);
memcpy(centralScanRes[i].address, advReport.addr, B_ADDR_LEN);
advdatalen = advReport.dataLen;
if(advdatalen>0)
{
NamepOutDataLen = parse_bleAdvData_ToName(advReport.pData , advdatalen , NamepOutData );
for(uint8_t j = 0 ;j<NamepOutDataLen;j++)
{
pOutDataLen = sprintf((char *)pOutData,"%02x",NamepOutData);
ttcUart_writeData(pOutData,pOutDataLen);
}
}
pOutDataLen = sprintf((char *)pOutData," Rssi:%d , address:%02x%02x%02x%02x%02x%02x\r\n",
advReport.rssi,
centralScanRes[i].address[0],
centralScanRes[i].address[1],
centralScanRes[i].address[2],
centralScanRes[i].address[3],
centralScanRes[i].address[4],
centralScanRes[i].address[5]);
ttcUart_writeData(pOutData,pOutDataLen);
}
if(!ttcBle.waitConnFlag)
{
BLEAppUtil_scanStart(&ttcScanStartParams);
}
}break;
default:
{
}break;
}
}我的期望是输出外围设备的 rssi 和 mac 地址(我都已经实现了这两个地址)以及外围设备的名称(这是 parse_bleData 中的函数 parsextrashed)、Data_To 但目前 advReport.pt 没有数据、我无法解析它。