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.

[参考译文] CC2541:GAPRole_SendUpdateParam 奇怪的行为

Guru**** 2551110 points
Other Parts Discussed in Thread: CC2541, CC2540, CC2541DK-MINI

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/571306/cc2541-gaprole_sendupdateparam-strange-behavior

器件型号:CC2541
主题中讨论的其他器件: CC2540

你好!

我有基于 cc2541和 TI BLE 堆栈1.2.1的旧工程、其中 GAPRole_SendUpdateParam 用于在连接期间更改连接间隔。

我已使用 TI BLE 堆栈1.4.2.2更新了我的项目、  并在调用 GAPRole_SendUpdateParam 时发现了奇怪的行为。

当我想缩短连接间隔时、一切都正常。

当我尝试增大它时、不会发生任何情况(使用大于当前的连接间隔调用 GAPRole_SendUpdateParam)。

为什么会发生这种情况、如何避免这种情况?

此致、Sergey

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您使用什么 GAPRole? 命令的返回状态是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Tim、您好!

    感谢您的回答。

    此项目中的 GAPRole 是外设角色。
    我使用 BTool 进行调试、默认连接间隔为80 (100ms)。

    我的项目中的定义为:

    #define DEFAULT_MODED_CONN_TIMEOUT 100

    #define GAPROLE_NO_ACTION 0 //对不成功的参数更新不采取任何操作

    成功连接后、当我首次调用 GAPRole_SendUpdateParam (0x0A、0x0A、0x00、default_desired _CONN_TIMEOUT、GAPROLE_NO_action)时、我将获得返回代码0。 在 BTool 窗口中、我可以看到:

    [43]: 10:34:49.322
    类型:0x04 (事件)
    -EventCode:0x00FF (事件)
    数据长度:0x0B (11)字节
    事件:0x0607 (1543)(GAP_LinkParamUpdate)
    状态:0x00 (0)(成功)
    ConnHandle:0x0000 (0)
    ConnInterval:0x000A (10)
    ConnLatency:0x0000 (0)
    ConnTimeout:0x0064 (100)
    转储(Rx):
    0000:04 FF 0B 07 06 00 00 0A 00 00 64 00 ........ D.

    稍后、我调用 GAPRole_SendUpdateParam (0x08、0x08、0x00、default_desired _CONN_TIMEOUT、GAPROLE_NO_action)并再次获取返回代码0。 在 BTool 窗口中、我可以看到:

    [47]: -10:35:01.159
    类型:0x04 (事件)
    -EventCode:0x00FF (事件)
    数据长度:0x0B (11)字节
    事件:0x0607 (1543)(GAP_LinkParamUpdate)
    状态:0x00 (0)(成功)
    ConnHandle:0x0000 (0)
    ConnInterval:0x0008 (8)
    ConnLatency:0x0000 (0)
    ConnTimeout:0x0064 (100)
    转储(Rx):
    0000:04 FF 0B 07 06 00 00 08 00 00 64 00 ........ D.

    现在、我调用 GAPRole_SendUpdateParam (0x0A、0x0A、0x00、DEFAULT_DESITED_CONN_TIMEOUT、GAPROLE_NO_ACTION)来增加连接间隔。 我再次得到返回代码0。 但 BTool 和连接间隔中的任何内容都不会更改。


    每当请求的连接间隔大于当前连接间隔时、都会发生此类行为。

    P.S. 我之前使用的 BLE 堆栈1.2.1中的一切都正常。

    此致、Sergey

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

    是否有人知道如何解决新 TI BLE 堆栈中的此错误?

    遗憾的是、TI 支持忽略了这些问题。 :(

     https://e2e.ti.com/support/wireless_connectivity/bluetooth_low_energy/f/538/p/428931/1533354上的同一个未回答问题

    P.S.  GAPRole_SendUpdateParam 和 gapRole_startConnUpdate 中有一些参数检查。 但这两个都很好。 在我看来、问题在 GAP_UpdateLinkParamReq 内部、它是二进制库中的函数。 :(  

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

    嗯、主器件需要最终接受参数更新、以便您的请求可能会被拒绝。  什么是主器件?

    您能否将监听器捕获与相应的 BTool 日志连接起来? 请确保将最小功能包括在这些功能中以显示问题。

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

    您好、Tim、

    您是否尝试阅读过我在上面写的内容?

    我使用的是基于 CC2540和 BTool 的 TI USB 记忆棒。

    我没有机会监听和捕获 BLE 流量。

    我不明白为什么客户必须证明堆栈内部的错误。

    我不明白为什么您再次浪费客户的时间。

    有时会报告此问题、并且堆栈的旧版本中不存在此问题。

    仔细阅读上述所有内容、并尝试了解具有相同参数的函数调用是否成功、具体取决于当前连接间隔。

    您是否曾尝试在您的网站上复制过它?

    只需尝试、您就可以嗅探并捕获您所需的所有内容。

    P.S. 我自己发现错误要容易得多、不要试图从您那里获得支持。 但遗憾的是、该错误位于 TI 二进制库中。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此功能在很大程度上取决于您未提供任何相关信息的中央设备。 这可以从嗅探器捕获中轻松推断。

    在没有嗅探器捕获的情况下、如果您提供了清晰详细的编号、使用 TI 硬件重现的步骤以及所需的最少代码修改列表、我可以尝试重现此情况。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我的项目基于 SimpleBLEPeripheral。

    因此、您可以获取 SimpleBLEPeripheral 并修改任何特征写入以使用新的连接间隔调用 GAPRole_SendUpdateParam。

    这就是您所需要的一切。

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

    这不足以复制信息。 请提供我在上一帖子中请求的所有内容。

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

    Tim、

    e2e.ti.com/.../6825.SimpleBLEPeripheral.zip

    它 是从1.4.2.2修改的 SimpleBLEPeripheral

    1、针对 目标"CC2541DK-MINI 密钥卡"进行编译

    2.刷写到您的钥匙卡。

    3.按"广播"按钮

    4.通过最新的 BTool 连接到密钥卡

    5.将0x08写入句柄0x25

    6.连接间隔将更改为8

    7.将0x06写入句柄0x25

    8.连接间隔将更改为6

    9.将0x08写入句柄0x25

    10.连接间隔不会改变。

    是否足够清楚?

    此致、Sergey

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

    Tim、  

      您是否重现了此问题?

    是否可以从 TI 获得支持?

    Sergey