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.

[参考译文] CC2745R10-Q1:i'm 使用 Basic BLE project 作为中心来发现附近的 BLE 设备、在使用广播数据找出设备名称时面临困难

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1523404/cc2745r10-q1-i-m-using-basic-ble-project-as-a-central-to-discover-the-nearby-ble-devices-facing-difficulties-in-finding-out-the-device-name-using-the-advertising-data

器件型号:CC2745R10-Q1
主题:SysConfig 中讨论的其他器件

工具/软件:

您好:  

     我目前正在使用 SDK 中的 Basic BLE 工程:simplelink_lowpower_f3_SDK_8_40_00_61。 我要提取器件名称、而不是器件 MAC ID 和 RSSI 值。 从 TI 代码中、我无法收到它正在发现的 BLE 器件的 ADV 数据的 RSSI 信息或数据长度。 但是、我发现在 SysConfig 文件中、我需要为所有相关字段信息选择 datalen、AddressType、RSSI 和数据长度等。 现在、我可以根据附近发现的 ble 设备看到有效的数据长度值。 但是、我无法从 Adv 字段中提取 pData。 当我尝试读取 pdata 时,我看到一些随机数据正在打印,当我与 NULL 比较时,它始终为 True。 显示 pdata == Null。 我无法捕获器件名称。 我是否有任何建议来查找器件名称? 谢谢  

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

    尊敬的 Madhusudhan:

    感谢您提供有关 BLE 器件名称提取问题的详细信息。 您能否确认您当前在代码中检查的事件-它是 BLEAPPUTIL_ADV_REPORT 还是 BLEAPPUTIL_SCAN_DISABLED?

    若要从广播数据中提取设备名称、您需要专门处理 BLEAPPUTIL_ADV_REPORT 事件。 在此事件中、您需要根据 BLE 标准解析广播数据。 器件名称前面带有以下任一项:

    • 0x08 (完整本地名称)
    • 0x07 (本地名称缩短)

    下面是解析广播数据的基本方法:

    void parseAdvData(uint8_t *pData, uint8_t length) {
        uint8_t index = 0;
        
        while (index < length) {
            uint8_t fieldLength = pData[index];
            uint8_t fieldType = pData[index + 1];
            
            if (fieldType == 0x08 || fieldType == 0x07) {
                // Found device name field
                // Process name data from pData[index + 2] with length (fieldLength - 1)
            }
            
            index += fieldLength + 1;
        }
    }

    此致、

    Megh

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

    您好 Megh Heruwala、  

           我使用  BLEAPPUTIL_ADV_REPORT 并使用相同的代码来查找器件名称。 但是、pdata == Null。 我在任何 pData 字段中都看不到得到0x08和0x07。 它的空值。 谢谢  

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

    尊敬的 Madhusudhan:

    如前所述、您能否确认您 在哪种情况下向 PRAIS 提交了 ADV 报告?  

    BLEAPPUTIL_ADV_REPORT 或 BLEAPPUTIL_SCAN_DISABLED?

    它应该是  BLEAPPUTIL_ADV_REPORT。

    此致、
    Megh

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

    我使用器件角色作为中心、因为我们没有事件  BLEAPPUTIL_ADV_REPORT。 此 BLEAPPUTIL_ADV_REPORT 事件在观测器角色下可用。 当我在中央扫描中添加此事件时。 它未被触发。  

    BLEApp Util_Event Handler_t centralScanHandler =
      .handlerType  = BLEAPPUTIL_GAP_SCAN_TYPE、
      .pEventHandler = EventHandler Central_Scan、
      .EventMask   = BLEAPPUTIL_SCAN_ENABLED |
               BLEAPPUTIL_ADV_REPORT |
               BLEAPPUTIL_SCAN_DISABLED };

    void uint32_t EventHandler (Central_Scan 事件、BLEAppUtil_msgHdr_t *pMsgData)
      BLEApp Util_Scan EventData_t *scanMsg =(BLEApp Util_Scan EventData_t *) pMsgData;

      开关(事件)
      {
        用例 BLEAPPUTIL_SCAN_ENABLED:
        {
          centralScanIndex = 0
          MenuModule_printf (APP_MENUM_SCAN_EVENT、0、"扫描状态:扫描已启动...");

          休息
        }

        用例 BLEAPPUTIL_ADV_REPORT:
        {
          menuModule_printf (APP_MENU_SCAN_EVENT、0、"扫描状态:Adv 报告");

          休息
        }
    未触发事件 Bleapputill_Adv_report、因为在 UART 控制台扫描状态:Adv 报告消息上看不到任何打印状态。 谢谢  
    我是否必须为要触发的 Adv_report 事件执行任何其他设置? 谢谢  

     

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

    尊敬的 Madhusudan:

    请在下面找到我的回复。
     

    我使用设备角色作为中心角色、因为我们没有事件  BLEAPPUTIL_ADV_REPORT。

    GAP 事件与角色无关。 您始终可以有  BLEAPPUTIL_ADV_REPORT 事件处于中心角色。  

    1.每次有新的广播时、我们都会在 GAP 事件处理程序中获得具有 BLEAPPUTIL_ADV_REPORT 事件屏蔽的 Adv 数据。 之后、该栈将从广播中以 ADV_REPORT 格式存储所选的数据(可以通过 SysConfig 进行配置)并释放内存。 禁用扫描时、可以在 BLEAPPUTIL_SCAN_DISABLED 中获取 ADV_REPORT 
    扫描报告中的数据不包含广播数据、因为 MCU 中的存储器受到限制、并且单个 ADV 打包包含几个字节的数据。


    我建议您参阅扫描和广告实验室以了解更多详细信息。  扫描和广播基础知识 和 通用访问配置文件(GAP)—SimpleLinkTm 低功耗 F3 SDK BLE5-Stack 用户指南9.10.00文档

    此致、

    Megh