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.

[参考译文] CC2340R5:CC2340R5主器件无法获取扫描响应数据包数据

Guru**** 2560390 points
Other Parts Discussed in Thread: CC2340R5

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1346595/cc2340r5-cc2340r5-the-primary-device-cannot-obtain-scan-response-packet-data

器件型号:CC2340R5

SDK:simplelink_lowpower_f3_sdk_7_40_00_64

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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    感谢您联系我们。

    请注意、这是一个英文论坛、如果您不想继续使用英语、也可以在此处发布您的问题: https://e2echina.ti.com。

    我可否提出以下问题,以便更好地了解情况?

    1. 您使用的是 SDK 中的哪个示例(based_ble?)
    2. 您是否有外设具有已知具有预期 pData 的广播报告? 您是如何测试它的?

    Br、

    大卫。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    1、我正在使用自己的项目

    2、我附近有很多外设,我知道 PData 会有什么,我使用我手机的 nrf 连接应用程序来查看外设的广播包和响应包数据%MCepathebin%

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、我有一些新发现、我检查了.syscfg 的这一部分、它可能会出现 datalen、但仍然没有 pdata

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    (抱歉、我点击了错误的"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(&centralScanRes[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 没有数据、我无法解析它。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    ...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    为了进行彻底检查、您能否尝试 BLEAPPUTIL_ADV_REPORT 案例中的流程?

    Br、

    大卫。