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:如果客户端未反馈连接参数请求更改、则 BLE 栈不会返回

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

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1545334/cc2340r5-ble-stack-does-not-return-if-client-does-not-feedback-on-connection-parameters-request-change

器件型号:CC2340R5


工具/软件:

MCU:CC2340R53  

角色:外围设备

步骤:

  1. 电路板外设 (CC2340R5) 连接到客户端/中央器件
  2. 连接后、我们会发送 GAP_UpdateLinkParamREQ 来更新连接参数更新 (BLEAppUtil_paramUpdateREQ)
  3. 客户端不回复(这是我们要测试的失败情形)或客户端拒绝连接参数请求。
  4. 在 n 秒后板、如果客户端没有应答、则重试以调用 GAP_UpdateLinkParamReq(测试的 n 值为 5 或大于 30 秒)
  5. 第二次调用 GAP_UpdateLinkParamREQ 时、它返回 bleAlreadyInRequestedMode

问题:  

如果客户端未回复 外设、则外设无法再次请求连接 参数。

您可以找到已 修改为复制问题的 basic_ble_LP_EM_CC2340R5_freertos_ticlang。

是否有重新建立连接参数请求的过程?

附上了  GAP_UpdateLinkParamReq 返回失败时调试会话的 2 个图像

在场景 2  BLEAppUtil_paramUpdateReq return   bleAlreadyInRequestedMode 中、如果客户端不反馈连接参数请求更改、

在场景 1  BLEAppUtil_paramUpdateReq return bleProcedureComplete 中 、如果客户端拒绝连接参数。

我也可以在专用通道中提供 pcap 文件。

e2e.ti.com/.../4682.basic_5F00_ble_5F00_LP_5F00_EM_5F00_CC2340R5_5F00_freertos_5F00_ticlang.zip

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

    你好 Luca!

    从我在 BLE 栈中可以看到、当接收到被拒绝的数据时、告知 BLE 栈当前何时处理参数更新的变量应复位。 我不知道参数更新的超时情况。 如果我能够使用您提供的项目重现问题、我将尝试重现您的问题并升级此问题。

    临时解决方法可能是在收到失败的参数更新时断开连接。 您可以通过  在您定义的 GAP 事件处理程序中接收类型为 gapLinkUpdateEvent_t 的 GAP 事件来检查参数更新的结果。

    此致、
    Maxence

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

    Lea 

    下面是 pcap 文件的 2 个屏幕截图,以帮助您。

    场景 1 中央忽略连接参数请求

    1. 已建立连接且集中使用连接参数超出范围
    2. 5 秒钟后外设请求连接参数更改
    3. 集中忽略(这不是拒绝,它忽略,根本不回复)
    4. 5 秒后、外设再次尝试请求 conn param 更新
    5. BLEAppUtil_paramUpdateREQ 发回 bleAlreadyInRequestedMode

    Scenarion 2 中央拒绝连接参数请求  

    1. 已建立连接且集中使用连接参数超出范围
    2. 5 秒钟后外设请求连接参数更改
    3. Central 拒绝新的连接参数
    4. 5 秒后、外设再次尝试请求 conn param 更新
    5. BLEAppUtil_paramUpdateReq 发回  bleProcedureComplete

    如果您需要更多详细信息、请告诉我、两种场景都可以使用我提供的固件进行复制。

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

    您好!

    您提到、如果中心拒绝 param 请求、则第二个请求返回  bleProcedureComplete、那么参数更新是否正确处理?
    您是否也可以尝试断开连接解决方法是否有效?

    此致、
    Maxence

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

    断开和重新连接可解决问题、但我们希望避免这种情况、因为它可能会要求客户交互。

    是否有办法清除状态以允许应用程序使用  BLEAppUtil_paramUpdateReq 并触发连接参数请求?

    在 bleProcedureComplete 上 、因为我找不到示例或文档、所以应用程序应该执行什么操作?

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

    您好、

    目前无法清除状态以允许应用程序使用 BLEAppUtil_paramUpdateReq。

    我试图了解错误发生在哪些情况下、以便我可以升级此问题。 在您的第二种情况(中央器件拒绝参数请求)中、您说该函数返回  bleProcedureComplete。 这意味着该函数已正确执行、但您能否告诉我在函数返回  bleProcedureComplete 后参数更新是否成功 

    对于中央器件没有响应的第一种情况、LL 请求的超时通过 BLE 规范固定。  蓝牙核心规范 v4.2、第 6 卷、B 部分、第 5.2 节说明如下:  

    程序启动时、程序响应超时计时器应复位并启动。 排队等待传输的每个 LL 控制 PDU 都会重置程序响应超时计时器。 程序完成后、程序响应超时计时器应停止。  如果程序响应超时计时器达到 40 秒、 则认为连接丢失 。 链路层退出连接状态并应转换到待机状态。 应将连接中断通知主机。

    因此、paramUpdateReq 函数的超时应在断开连接时完成、解决了参数更新不可重复的问题、因为断开连接会清除参数更新请求的状态。

    此致、
    Maxence

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

    您好,感谢您的详细信息。

    我分享了 2 个视频、以展示我们如何成功实现 2 个场景、并为固件项目提供一些小的更改。

    错误 0x11

    1. 与参数的连接超出范围(最短间隔 10ms)
    2. 5 秒外设请求新参数后(最短间隔 15ms)
    3. 中心 忽略该消息
    4. 45 秒(或 5 秒)后、外设尝试发送新的 连接参数
    5. 函数  BLEAppUtil_paramUpdateREQ return  0x11 (bleAlreadyInRequestedMode)

     e2e.ti.com/.../error-0x11.mp4

    错误 0x1A

    1. 与参数的连接超出范围(最短间隔 10ms)
    2. 5 秒外设请求新参数后(最短间隔 15ms)
    3. Central 发回 connectio 参数以保持 10ms 的间隔
    4.  接收到 BLEAPPUTIL_LINK_PARAM_UPDATE_EVENT 后、外设会立即重试以发送新的连接参数请求
    5. 函数  BLEAppUtil_paramUpdateREQ  返回 0x1A (bleProcedureComplete)

    e2e.ti.com/.../error0x1a.mp4

    使用的代码:

    e2e.ti.com/.../1348.basic_5F00_ble_5F00_LP_5F00_EM_5F00_CC2340R5_5F00_freertos_5F00_ticlang.zip

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

    您好、

    我认为当 LL param 更新不受支持时、L2CAP 降级可能会导致此问题。
    我的假设是,发生了以下情况:
    -外设发送一个 LL param Update HCI 命令
    - Central 返回 HCI_ERROR_CODE_UNSUPPORTED_REMOTE_FEATURE 因为它不支持 LL 参数更新
    -外设发送 L2CAP 参数更新,这不会清除参数更新标志
    -稍后,外设尝试发送 LL param Update HCI 命令,但失败,因为标志未被清除

    您是否有一个嗅探器、您可以使用它来记录中央和外围设备之间的交换、以确认 L2CAP 降级确实正在发生?

    此致、
    Maxence

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

    当然、 在 zip 文件中有 2 个 pcap 文件

    e2e.ti.com/.../connection-params.zip

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

    Lea 你好,这方面的任何更新?

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

     Lea 你好,这方面的任何更新?

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

    你好 Luca!

    我真的很抱歉、我真的很忙于处理其他事情。 您提供了很多关于您的两个案例的信息、我今天将花时间重现您的问题。

    此致、
    Maxence

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

    您好、

    我设法安装 nrf BLE Sniffer 并检查您的数据包。 我认为连接参数使用 L2CAP 是正确的。

    您可以尝试相同的操作、但要使用支持 LL Param 更新的中央器件、例如另一个 CC2340R5 吗?

    此致、
    Maxence

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

    Lea 我会尽可能做,我会离开几个星期。