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.

[参考译文] CC2652RSIP:CCC 不会在新连接时复位

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1424979/cc2652rsip-ccc-is-not-reset-on-new-connection

器件型号:CC2652RSIP

工具与软件:

根据蓝牙规范、需要在每次新连接时重置 CCC:

  • 客户端特征配置(CCC):
    CCC 是一个描述符(UUID:0x2902)、用于控制是否启用针对给定特征的通知或指示。 它特定于 中央 (例如智能手机或主机器件)和 外设 (例如 BLE 传感器)。

  • BLE 连接处于无状态:
    在低功耗蓝牙(BLE)中、每个连接都被视为独立的。 当连接断开或重新建立时、 所有与该连接相关的状态信息 (包括 CCC 配置)丢失。

  • Re 启用通知的要求:
    重新建立连接后 中央 必须再次写入 CCC 描述符以启用通知/指示。 这确保只有在中央设备明确同意的情况下才发送通知 当前连接会话 .

  • 实际意义:

    • 外设 在连接中断时、必须将 CCC 重置为默认值(通常为"禁用")。
    • 中央设备重新连接后、如果要接收通知或指示、则必须重新配置 CCC。

似乎尚未按照规范实现行为。 我使用的是 SimpleLink 7.40.77。 当我建立连接并启用通知后、断开并重新连接时、通知仍处于启用状态。 我看了提供的示例代码、似乎需要 App_Init 为每个新连接的每个服务中的每个 CCC 致电 GATT387Cfg、但在您的示例中、启动时只会调用一次。 我缺少什么?

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

    您好!

    仅当连接了两个未绑定的器件时、CCC 设置才为非持久的。 如果一对器件进行连接、绑定、更改 CCCD 和断开连接、则在重新连接时应保留 CCCD 设置。 低功耗蓝牙规范的以下部分中提到了这一点:

    此致、

    1月

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

    感谢您的回答、我在 BT 规范中漏掉了该数字。

    但是、这种行为会给我带来一些问题、是否有一种简单的方法来禁用它、以便绑定管理器在下次连接时不会再次启用 CCC?

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

    您好!

    遗憾的是、这是 BLE 规范的一部分、因此偏离该规范在技术上就违反了该规范。 也就是说、如果您不计划将您的设备认证为蓝牙产品、那么您可以修改此行为、前提是您可以控制连接的两端。 我建议查看 gapbondmgr.c 文件以尝试删除此功能。

    此致、

    1月