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.

[参考译文] CC2652RB:如何确保在固件更新后在外设器件上发现新特性?

Guru**** 2554270 points
Other Parts Discussed in Thread: CC2652RB, SYSCONFIG

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/962381/cc2652rb-how-to-make-sure-new-characteristics-are-discovered-on-my-peripheral-device-after-a-firmware-update

器件型号:CC2652RB
Thread 中讨论的其他器件: SysConfig

我们根据 SimplePeripheral 示例在外设器件中使用 CC2652RB、该示例当前具有 SDK v4.20。  我们有一对多用例、在这种用例中、多个手机作为中间设备将随着时间的推移连接到我们的外设。  因此、我们不使用配对或绑定。  我们的问题是、在固件更新后、我们将一些新特性添加到我们的专有蓝牙服务中、以前连接到我们的任何设备的任何 iOS 设备的行为都与新特性不存在的情况类似。  似乎电话缓存了属性表并拒绝重新发现现在不同的列表。

我知道、蓝牙核心规范中规定的 GATT 服务的一部分中存在"服务已更改"特性、并且 Apple 的附件设计指南中规定、如果服务可能发生更改、则应使用该特性。  但是、它还指定了这适用于绑定的器件、并且更改通过重新连接时的指示进行通信。  由于我们不使用绑定、并且非绑定的设备在连接时无法立即接收到指示、因此我们的印象是、我们不需要更改此服务的特性、如果添加此服务、它甚至也不起作用。

但是,我们在这里迫切需要一个解决方案,所以我们愿意尝试,除非有人有更好的想法。  我的问题是:

  1. 是否有更好的方法来实现此目的?  TI BLE 器件如何通过 iOS 重新发现更新的特性列表?
  2. 服务更改的特性是否适用于非绑定连接?
  3. 如何使用 TI 库添加服务更改特性?  在我链接此帖子的"相关问题"中、针对之前 SDK 中的错误提供了一个权变措施。  但是、该帖子已有一年半的历史、并且提到应该在去年晚些时候提供修复。  那么、现在的步骤是什么?
  4. "相关问题"还提到、添加此特征会在 COC 填充的图像大小中添加大量代码;是否有方法可以在没有指示的情况下仅获取特征?  由于我们不使用绑定、并且指示可能不起作用、我们是否可以尝试添加特征以查看 iOS 是否足以不缓存服务并实际执行发现?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    很抱歉、您提到您没有配对或绑定、因此 iOS 缓存 GATT 特性让我有点惊讶。 Android 也会发生这种情况吗?  

    如果我正在正确阅读此内容、则规范的第1541页指出、不受信任的连接不应发生这种情况

    我不知道 iOS 是否/如何处理上述散列特性。 我在我们的示例或代码中看不到任何示例或代码(仅限配对哈希、在此处不适用)。  

    在任何情况下、添加服务更改功能的步骤都显示在我们的 BLE 用户指南的 GATTService 部分中;直接链接为:

    https://dev.ti.com/tirex/explore/content/simplelink_cc13x2_26x2_sdk_4_30_00_54/docs/ble5stack/ble_user_guide/html/ble-stack-5.x/gatt.html#using-the-gatt-service

    希望这对您有所帮助、

    拉斐尔

     

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

    [引用 user="desouza"]

    您提到您没有配对或绑定、因此 iOS 缓存 GATT 特征让我感到有点惊讶。

    [/报价]

    我也是!

    [引用 user="desouza"]

    Android 也会发生这种情况吗?  

    [/报价]

    它不是。

    [引用 user="desouza"]

    如果我正在正确阅读此内容、则规范的第1541页指出、不受信任的连接不应发生这种情况

    [/报价]

    我再次同意、但...

    [引用 user="desouza"]

    在任何情况下、添加服务更改功能的步骤都显示在我们的 BLE 用户指南的 GATTService 部分中;直接链接为:

    https://dev.ti.com/tirex/explore/content/simplelink_cc13x2_26x2_sdk_4_30_00_54/docs/ble5stack/ble_user_guide/html/ble-stack-5.x/gatt.html#using-the-gatt-service

    [/报价]

    我发现了这一点、但我们正在为定制板使用 TI 建议的另一种权变措施、在该方法中、我们运行 SysConfig 进行初始设置、然后将其从后续构建中排除、而不是依赖它生成的初始文件、以及我们自那时以来所做的手动更改。  我真的不想重做、所以我尝试编辑了用户指南中提到的 build_config.opt 文件、除了... 再也没有了。  该文件在工程中不再存在、因为 SysConfig 在 SDK 中是强制性的。  在{PROJECT_LOC}\SysConfig 文件夹中有一个 ti_build_config.opt 文件、但在其中添加定义不会执行任何操作。  通过在  项目 Properties->Build->Arm Compiler->Predefined Symbols 下添加 BLE_V41_features =L2CAP_COC_CFG,我终于能够显示特征(我仍在等待我们的 iOS 团队的评价,是否有用)。  这是否足够好、或者它是否必须位于某些选项文件中、以便其他编译/编译步骤可以看到它?

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

    Chris、

    请对延迟表示歉意。 与传统项目相比、SysConfig 确实发生了很大的变化。  

    我怀疑您已经尝试过此操作、但如果您仅自行修改 ti_build_config.opt 文件而不进行任何其他修改、则可能不会触发新的编译。 您必须右键单击该项目并发出 Rebuild Project。

    对于您的问题、您选择的方法是将预定义符号传递给编译器的传统方法之一、因此使用它是完全安全的。  

    此致、

    拉斐尔