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.

[参考译文] RTOS/CC2642R:查询有关 BLE 4.2的 CC2642R 示例代码

Guru**** 2540720 points
Other Parts Discussed in Thread: CC2642R, CC2640R2F

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/735045/rtos-cc2642r-query-regarding-cc2642r-sample-codes-on-ble-4-2

器件型号:CC2642R
主题中讨论的其他器件: CC2640R2F

工具/软件:TI-RTOS

您好,
我们使用的是 SDK  simplelink_cc26x2_sdk_2_20_00_36、所有代码均提供 BLE5支持。
我们可以将其降级到 BLE4.2吗? 如果是、您能否提供一些有关如何执行该操作的文档?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Vidushi、

    BLE5向后兼容 BLE4.2。  这里有更多有关这方面的信息。

    简而言之、您无需担心更改示例中的代码即可与 BLE4.2配合使用。 建立连接后、两个器件将协商使用哪种标准。

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

    在我们的案例中、当我们将2640R2f 应用与 BLE 4.2配合使用时、我们将使用 hostTest 应用、然后它将使用我们的 BLE 连接代码、该代码位于 Linux 平台上、但当我们将 BLE 5.0与芯片 CC2640R2f 或 CC2642R 配合使用时、它将无法正常工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否介意提供一些更多信息? 您如何测试器件? 您要向 hostTest 应用程序发送哪些命令? 您的结果是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当然、Ammar、

    我们正在使用 UART 提供一些自定义协议的命令。

    我们将在 UART 上获得4字节的数据-在 Hosttest 应用中、我们获得需要响应的44个特定字节。

    我们已经使用 cc2640r2f 板进行了检查、该代码可以与我们的接口模块配合使用、以防出现 ble 4.2堆栈代码。 但是、
    使用 cc2640r2f/cc2642时不能使用 ble5堆栈代码。 它给出了堆栈成功消息、但在该消息之后卡住。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    很抱歉耽误你的时间。 从 BLE4.2到 BLE5发送的命令有一些差异。 在 Windows 上、BTool 是与运行 Host Test 的兼容板连接的应用程序。 下面是 BTool 用于初始化运行 BLE5堆栈的主机测试设备的调用序列。 您可以尝试发送这些命令吗? 让我知道接收到的内容(它应该与下面的 Tx/Rx 匹配)。

    [1]: -10:38:10.065
    港口于2018年9月10时38分10时---
    ---------------
    [2]: -10:38:10.196
    -类型 :0x01 (命令)
    -OpCode :0xFC1D (HCIExt_ResetSystemCmd)
    -数据长度:0x01 (1)字节
    类型 :0x00 (0)(芯片复位)
    转储(Tx):
    0000:01 1D FC 01 00 …
    ----------------------------------------
    [3]: - 10:38:10.350
    -类型 :0x04 (事件)
    -EventCode :0x00FF (HCI_LE_ExtEvent)
    -数据长度:0x05 (5)字节
    事件 :0x041D (1053)(HCIExt_ResetSystemCmdOne)
    状态 :0x00 (0)(成功)
    CmdOpCode :0xFC1D (HCIExt_ResetSystemCmd)
    转储(Rx):
    0000:04 FF 05 1D 04 00 1D FC …………
    ----------------------------------------
    [4]: - 10:38:10.851
    -类型 :0x01 (命令)
    -OpCode :0xFE00 (GAP_DeviceInit)
    -数据长度:0x08 (8)字节
    ProfileRole:0x08 (8)(.
    中央)
    AddrMode :0x00 (0)(ADDRMODE_PUBLIC)
    RandomAddr :00:00:00:00
    :00转储(Tx):
    0000:01 00 FE 08 08 00 00 00 00 00 00 00 .
    ----------------------------------------
    [5]: - 10:38:10.974
    -类型 :0x04 (事件)
    -EventCode :0x00FF (HCI_LE_ExtEvent)
    -数据长度:0x06 (6)字节
    事件 :0x067F (1663)(GAP_HCI_ExtentionCommandStatus)
    状态 :0x00 (0)(成功)
    操作码 :0xFE00 (GAP_DeviceInit)
    DataLength :0x00 (0)
    转储(Rx):
    0000:04 FF 06 7F 06 00 FE 00 。
    ----------------------------------------
    [6]: - 10:38:10.985
    -类型 :0x04 (事件)
    -EventCode :0x00FF (HCI_LE_ExtEvent)
    -数据长度:0x2C (44)字节
    事件 :0x0600 (1536)(GAP_DeviceInitDOne)
    状态 :0x00 (0)(成功)
    DevAddr :54:6C:0E:A0:40:4C
    DataPtLen :0x00FF (255)
    NumDataPts:0x05 (5)
    irk :00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    :00 CSRK :68:B8:A7:F5:DC:3C:AE:B9:3B:F8:31:B5:2B:BD:F1:AF
    Dump (Rx):
    0000:04 FF 2C 00 06 00 4C 40 A0 0E 6C 54 FF 00 05 00 ...... L@..
    0010:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 68 H
    0020:B8 A7 F5 DC 3C AE B9 3B F8 31 B5 2B BD F1 AF ...<..
    ----------------------------------------
    [7]: - 10:38:11.038
    -类型 :0x01 (命令)
    -OpCode :0xFE61 (GapInit_getPhyParam)
    -数据长度:0x02 (2)字节
    PHY :0x01 (1)(init_phy_1M)
    ParamId :0x02 (2)(init_PHYPARAM_CONN_INT_MIN)
    转储(Tx):
    0000:01 61 FE 02 01 02 a....
    ----------------------------------------
    [8]: - 10:38:11.049
    -类型 :0x01 (命令)
    -OpCode :0xFE61 (GapInit_getPhyParam)
    -数据长度:0x02 (2)字节
    PHY :0x01 (1)(init_phy_1M)
    ParamId :0x03 (3)(init_PHYPARAM_CONN_INT_MAX)
    转储(Tx):
    0000:01 61 FE 02 01 03 a....
    ----------------------------------------
    [9]: - 10:38:11.059
    -类型 :0x01 (命令)
    -OpCode :0xFE61 (GapInit_getPhyParam)
    -数据长度:0x02 (2)字节
    PHY :0x01 (1)(init_phy_1M)
    ParamId :0x04 (4)(init_PHYPARAM_CONN_latency)
    转储(Tx):
    0000:01 61 FE 02 01 04 a....
    ----------------------------------------
    [10]: - 10:38:11.070
    -类型 :0x01 (命令)
    -OpCode :0xFE61 (GapInit_getPhyParam)
    -数据长度:0x02 (2)字节
    PHY :0x01 (1)(init_phy_1M)
    ParamId :0x05 (5)(init_PHYPARAM_SUP_TIMEOUT)
    Dump (Tx):
    0000:01 61 FE 02 01 05 a....
    ----------------------------------------
    [11]: - 10:38:11.070
    -类型 :0x04 (事件)
    -EventCode :0x00FF (HCI_LE_ExtEvent)
    -数据长度:0x09 (9)字节
    事件 :0x067F (1663)(GAP_HCI_ExtentionCommandStatus)
    状态 :0x00 (0)(成功)
    操作码 :0xFE61 (GapInit_getPhyParam)
    DataLength :0x03 (3)
    参数 ID :0x02 (2)(INIT_PHYPARAM_CONN_INT_MIN)
    MinConnectInter:0x0050 (80)
    Dump (Rx):
    0000:04 FF 09 7F 06 00 61 FE 03 02 50 00 … A..P.
    ----------------------------------------
    [12]: - 10:38:11.092
    -类型 :0x04 (事件)
    -EventCode :0x00FF (HCI_LE_ExtEvent)
    -数据长度:0x09 (9)字节
    事件 :0x067F (1663)(GAP_HCI_ExtentionCommandStatus)
    状态 :0x00 (0)(成功)
    操作码 :0xFE61 (GapInit_getPhyParam)
    DataLength :0x03 (3)
    参数 ID :0x03 (3)(INIT_PHYPARAM_CONN_INT_MAX)
    MaxConnectInter:0x0050 (80)
    Dump (Rx):
    0000:04 FF 09 7F 06 00 61 FE 03 50 00 … A..P.
    ----------------------------------------
    [13]: -10:38:11.113
    -类型 :0x04 (事件)
    -EventCode :0x00FF (HCI_LE_ExtEvent)
    -数据长度:0x09 (9)字节
    事件 :0x067F (1663)(GAP_HCI_ExtentionCommandStatus)
    状态 :0x00 (0)(成功)
    操作码 :0xFE61 (GapInit_getPhyParam)
    DataLength :0x03 (3)
    参数 ID :0x04 (4)(init_PHYPARAM_CONN_latency)
    ConnectLatency:0x0000 (0)
    Dump (Rx):
    0000:04 FF 09 7F 06 00 61 FE 03 04 00 … A.
    ----------------------------------------
    [14]: - 10:38:11.124
    -类型 :0x04 (事件)
    -EventCode :0x00FF (HCI_LE_ExtEvent)
    -数据长度:0x09 (9)字节
    事件 :0x067F (1663)(GAP_HCI_ExtentionCommandStatus)
    状态 :0x00 (0)(成功)
    操作码 :0xFE61 (GapInit_getPhyParam)
    DataLength :0x03 (3)
    参数 ID :0x05 (5)(init_PHYPARAM_SUP_TIMEOUT)
    SuperTimeout:0x07D0 (2000)
    Dump (Rx):
    0000:04 FF 09 7F 06 00 61 FE 03 05 D0 07 … A.
    ---------------------------------------- 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Ammar:

    不用担心、我感谢您的回应。

    最后、您是否有适用于具有 BLE 4.2的 cc2642芯片并使用 SDK 1.50的 HOSTTEst 应用示例代码?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不幸的是、我们没有。 CC2642应向后兼容 BLE 4.2、因此 BLE5堆栈示例没有不同版本。

    如果在运行 BLE5示例时器件未按预期运行、则其他地方可能会出现错误。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的

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

    尊敬的 Ammar:

    下面是我们从 BTool (版本1.42.08- BLE5)获取的命令响应。 我们将从 Linux 代码发送相同的命令。 我们使用了默认的 CC2642R HostTest 固件(simplelink_cc26x2_sdk_2_20_00_36)。  我们的用例是从 HostTest 应用程序启用外设模式、并开始使用一些数据进行广播。 使用 cc2640r2f BLE4.2 HostTest 应用程序代码的流程相同。

    但是、当我们尝试使用 CC2642r HostTest (或 CC2640r2f BLE5 HostTest 应用程序)执行相同的操作时、器件将返回以下错误。

    [1]: 01:57:57.360
    港口于2018年10月10日下午1:57:57开放
    ----------------------------------------
    [2]: 01:57:57.516
    类型:0x01 (命令)
    -OpCode:0xFC1D (HCIExt_ResetSystemCmd)
    数据长度:0x01 (1)字节
    类型:0x00 (0)(芯片复位)
    转储(Tx):
    0000:01 1D FC 01 00…
    ----------------------------------------
    [3]: 01:57:57.813
    类型:0x04 (事件)
    -EventCode:0x00FF (HCI_LE_ExtEvent)
    数据长度:0x05 (5)字节
    事件:0x041D (1053)(HCIExt_ResetSystemCmdOne)
    状态:0x00 (0)(成功)
    CmdOpCode:0xFC1D (HCIExt_ResetSystemCmd)
    转储(Rx):
    0000:04 FF 05 1D 04 00 1D FC ........
    ----------------------------------------
    [4]: 01:57:58.391
    类型:0x01 (命令)
    -OpCode:0xFE00 (GAP_DeviceInit)
    数据长度:0x08 (8)字节
    ProfileRole:0x08 (8)(.
    中央)
    ADDRMode:0x00 (0)(ADDRMODE_PUBLIC)
    RandomAddr : 00:00:00:00:00:00
    转储(Tx):
    0000:01 00 FE 08 08 00 00 00 00 00 00 00 00 00
    ----------------------------------------
    [5]: 01:57:58.585
    类型:0x04 (事件)
    -EventCode:0x00FF (HCI_LE_ExtEvent)
    数据长度:0x06 (6)字节
    事件:0x067F (1663)(GAP_HCI_ExtentionCommandStatus)
    状态:0x00 (0)(成功)
    操作码:0xFE00 (GAP_DeviceInit)
    数据长度:0x00 (0)
    转储(Rx):
    0000:04 FF 06 7F 06 00 00 FE 00 ..........
    ----------------------------------------
    [6]: 01:57:58.601
    类型:0x04 (事件)
    -EventCode:0x00FF (HCI_LE_ExtEvent)
    数据长度:0x2C (44)字节
    事件:0x0600 (1536)(GAP_DeviceInitDone)
    状态:0x00 (0)(成功)
    DevAddr:F0:F8:F2:D2:B5:95
    DataPtLen:0x00FF (255)
    NumDataPkts:0x05 (5)
    irk:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    CSRK:7C:6D:37:BC:AF:67:63:38:69:AA:99:4B:5A:C6:77:5A
    转储(Rx):
    0000:04 FF 2C 00 06 00 95 B5 D2 F2 F8 F0 FF 00 05 00 ..
    0010:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7C |
    0020:6D 37 BC AF 67 63 38 69 AA 99 4B 5A C6 77 5A m7..gc8i..kz.wz
    ----------------------------------------
    [7]: 01:57:58.648
    类型:0x01 (命令)
    -OpCode:0xFE61 (GapInit_getPhyParam)
    数据长度:0x02 (2)字节
    PHY:0x01 (1)(init_phy_1M)
    ParamId:0x02 (2)(init_PHYPARAM_CONN_INT_MIN)
    转储(Tx):
    0000:01 61 FE 02 01 02 .a....
    ----------------------------------------
    [8]: 01:57:58.679
    类型:0x01 (命令)
    -OpCode:0xFE61 (GapInit_getPhyParam)
    数据长度:0x02 (2)字节
    PHY:0x01 (1)(init_phy_1M)
    参数 ID:0x03 (3)(init_PHYPARAM_CONN_INT_MAX)
    转储(Tx):
    0000:01 61 FE 02 01 03 a....
    ----------------------------------------
    [9]: 01:57:58.694
    类型:0x01 (命令)
    -OpCode:0xFE61 (GapInit_getPhyParam)
    数据长度:0x02 (2)字节
    PHY:0x01 (1)(init_phy_1M)
    参数 ID:0x04 (4)(init_PHYPARAM_CONN_latency)
    转储(Tx):
    0000:01 61 FE 02 01 04 a....
    ----------------------------------------
    [10]: 01:57:58.710
    类型:0x01 (命令)
    -OpCode:0xFE61 (GapInit_getPhyParam)
    数据长度:0x02 (2)字节
    PHY:0x01 (1)(init_phy_1M)
    参数 ID:0x05 (5)(init_PHYPARAM_SUP_TIMEOUT)
    转储(Tx):
    0000:01 61 FE 02 01 05 a....
    ----------------------------------------
    [11]: 01:57:58.710
    类型:0x04 (事件)
    -EventCode:0x00FF (HCI_LE_ExtEvent)
    数据长度:0x09 (9)字节
    事件:0x067F (1663)(GAP_HCI_ExtentionCommandStatus)
    状态:0x00 (0)(成功)
    操作码:0xFE61 (GapInit_getPhyParam)
    数据长度:0x03 (3)
    ParamId:0x02 (2)(init_PHYPARAM_CONN_INT_MIN)
    MinConnectInter:0x0050 (80)
    转储(Rx):
    0000:04 FF 09 7F 06 00 61 FE 03 02 50 00 ...... A..P.
    ----------------------------------------
    [12]: 01:57:58.741
    类型:0x04 (事件)
    -EventCode:0x00FF (HCI_LE_ExtEvent)
    数据长度:0x09 (9)字节
    事件:0x067F (1663)(GAP_HCI_ExtentionCommandStatus)
    状态:0x00 (0)(成功)
    操作码:0xFE61 (GapInit_getPhyParam)
    数据长度:0x03 (3)
    参数 ID:0x03 (3)(init_PHYPARAM_CONN_INT_MAX)
    MaxConnectInter:0x0050 (80)
    转储(Rx):
    0000:04 FF 09 7F 06 00 61 FE 03 50 00 ...... A..P.
    ----------------------------------------
    [13]: 01:57:58.773
    类型:0x04 (事件)
    -EventCode:0x00FF (HCI_LE_ExtEvent)
    数据长度:0x09 (9)字节
    事件:0x067F (1663)(GAP_HCI_ExtentionCommandStatus)
    状态:0x00 (0)(成功)
    操作码:0xFE61 (GapInit_getPhyParam)
    数据长度:0x03 (3)
    参数 ID:0x04 (4)(init_PHYPARAM_CONN_latency)
    ConnectLatency : 0x0000 (0)
    转储(Rx):
    0000:04 FF 09 7F 06 00 61 FE 03 04 00 ...... A.
    ----------------------------------------
    [14]: 01:57:58.804
    类型:0x04 (事件)
    -EventCode:0x00FF (HCI_LE_ExtEvent)
    数据长度:0x09 (9)字节
    事件:0x067F (1663)(GAP_HCI_ExtentionCommandStatus)
    状态:0x00 (0)(成功)
    操作码:0xFE61 (GapInit_getPhyParam)
    数据长度:0x03 (3)
    参数 ID:0x05 (5)(init_PHYPARAM_SUP_TIMEOUT)
    超时:0x07D0 (2000)
    转储(Rx):
    0000:04 FF 09 7F 06 00 61 FE 03 05 D0 07… A.
    ----------------------------------------
    [15]: 01:58:32.440
    类型:0x01 (命令)
    操作码:0x0C03 (HCI_Reset)
    数据长度:0x00 (0)字节
    转储(Tx):
    0000:01 03 0C 00…
    ----------------------------------------
    [16]: 01:58:32.487
    类型:0x04 (事件)
    -EventCode:0x000E (HCI_CommandCompleteEvent)
    数据长度:0x04 (4)字节
    数据包:0x01 (1)
    操作码:0x0C03 (HCI_Reset)
    状态:0x00 (0)(成功)
    转储(Rx):
    0000:04 0E 04 01 03 0C 00 ........
    ----------------------------------------
    [17]: 01:58:46.129
    类型:0x01 (命令)
    -OpCode:0xFE00 (GAP_DeviceInit)
    数据长度:0x08 (8)字节
    ProfileRole:0x04 (4)(.
    外设)
    ADDRMode:0x00 (0)(ADDRMODE_PUBLIC)
    RandomAddr : 00:00:00:00:00:00
    转储(Tx):
    0000:01 00 FE 08 04 00 00 00 00 00 00 00 00 00
    ----------------------------------------
    [18]: 01:58:46.161
    类型:0x04 (事件)
    -EventCode:0x00FF (HCI_LE_ExtEvent)
    数据长度:0x06 (6)字节
    事件:0x067F (1663)(GAP_HCI_ExtentionCommandStatus)
    状态:0x12 (18)(bleIncorrectMode)
    操作码:0xFE00 (GAP_DeviceInit)
    数据长度:0x00 (0)
    转储(Rx):
    0000:04 FF 06 7F 06 12 00 FE 00 ........
    ----------------------------------------

    我们在这里是否缺少任何命令? 我们如何启用外设模式并开始广播?

     

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

    您好、Aditya、

    感谢您向我发送日志。 深入了解这一点后、必须设置一些构建配置、以便在 CC2640R2F 上启用外设模式。

    请转至 ble5_host_test_cc2640r2lp_stack_library 项目、然后转至工具、然后打开 build_config.opt 文件。 然后注释掉中央配置行并包括外设配置行、如下所示:

    /* BLE 主机构建配置*/
    -DHOST_CONFIG=PERIOD_CFG
    /*-DHOST_CONFIG=CENTRAL_CFG */
    /*-DHOST_CONFIG=Broadcaster _CFG */
    ... 

    完成这些更改后、保存 build_config.opt 文件。 然后、清理堆栈库项目并构建它。 对主机测试应用项目执行相同的操作、并对 CC2640R2F 进行编程。

    当您打开 BTOOL 时、器件将无法在中央模式下进行初始化(正如我们已将其从构建中删除)。 运行 HCIExt_ResetSystemCmd 继续。 然后运行 GAP_DeviceInit 命令、确保更改配置文件角色以启用 peripheralProfileRole。 (您可能需要重置设备并重试)。 收到成功确认后、您可以继续启用广播、方法是转到 GAP AE、然后发送 GapAdv_create 命令、后跟 GapAdv_enable 命令。

    如果可以、请告诉我!

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

    尊敬的 Ammar:

    感谢你的帮助。 通过上述更改、我们能够正确切换到外设模式。

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

    对于我们的用例,我们将从 Host Test App 代码切换到 Simple peripheral 代码。 我们使用的是 SDK simplelink_cc26x2_sdk_2_20_00_36中的默认简单外设代码。 根据我们的用例、我们需要在广播期间更新 scanRspData 缓冲区。 器件将从 UART 接收数据并从 UART 缓冲区更新 scanRspData。 通过调试、我们能够检查我们是否从 UART 获取了正确的数据、但当我们尝试更新 scanRspData 器件时、会在 iCall_abort 循环中挂起。
    我们尝试使用以下代码更新广播包、但器件正在 iCall_abort 函数循环中挂起。

    //扫描响应数据
    静态 uint8_t scanRspData[22]=

    //该数据的长度,
    //数据类型,
    // 20字节的数据
    };

    我们已尝试启用和禁用 DISABLE_ADV、但在每种情况下、器件在 GAP 命令中挂起。 我们甚至无法通过 GapAdv_disable() API 停止广播。

    BLE_ADV 案例:
    #ifdef disable_adv
    //停止广告,因为没有更多连接的空间
    GapAdv_disable (advHandleLongRange、GAP_ADV_ENABLE_OPTIONS_USE_MAX、0);
    GapAdv_disable (advHandleLegacy、GAP_ADV_ENABLE_OPTIONS_USE_MAX、0);
    #endif

    //禁用广播并准备缓冲区。
    状态= GapAdv_prepareLoadByBuffer (ScanRspData、false);
    SIMPLEPERIPHERAL_ASSERT (status = SUCCESS);

    scanRspData[2]= 0x01;
    scanRspData[3]= 0x02;
    scanRspData[4]= 0x03;
    scanRspData[5]= 0x04;
    scanRspData[6]= 0x05;

    //重新加载缓冲区并重新启用广播
    status = GapAdv_loadByBuffer (sizeof (scanRspData)、scanRspData);
    SIMPLEPERIPHERAL_ASSERT (status = SUCCESS);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    prepareLoadByBuffer()/loadByBuffer()调用后的状态是什么? 确保两个 GapAdv 调用都返回成功。

    我会尝试验证您是否覆盖 scanRspData 数组中的长度/数据类型(BLE SIG 要求这样做)。 我认为您无需禁用广播即可更新扫描响应数据。

    另一个要尝试的方法是保持 scanRspData[]数组不变(在 simple_peripheral 示例中)、并一次将其更改为一个字节(目前保持大小不变)。 确认可以更新一个字节后、开始更改数据包的大小和数据。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Aditya、

    你有更新吗? 如果您这样做、只需发布回复即可。 否则、此线程将保持关闭状态。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Ammar:


    感谢你的帮助。 我们已经解决了这个问题、如果我们在 定义的函数中调用 GapAdv_prepareLoadByHandle、器件将被挂起。 但是、如果我们在  GAP_EVT_ADV_START 事件中调用 GapAdv_prepareLoadByHandle API、则其工作正常。 我们能够成功更新数据。

    案例 GAP_EVT_ADV_START:
    //不要释放任何内容,因为我们将使用相同的缓冲区重新加载
    GapAdv_prepareLoadByHandle (advHandleLegacy、GAP_ADV_FREE_OPTION _DONT_FREE);

    //在此处更新 scanRspData 缓冲区。

    //重新加载要处理的缓冲区
    GapAdv_loadByHandle (advHandleLegacy、GAP_ADV_DATA_TYPE_SCAN_RSP、sizeof (scanRspData)、scanRspData);
    中断;