请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC2640R2F Thread 中讨论的其他器件: BLE-STACK
问题:
Android 应用(GATT 客户端)和两 个 TI 板(CC2640R2F、GATT 服务器)之间的蓝牙连接不稳定。 当 Android 应用程序连接到两个板时、两个板的蓝牙连接状态会在连接和断开状态之间快速切换。 因此、服务发现过程受到影响、有时未发现 GATT 特征(GATT 服务为空)。 仅运行棉花糖(6.0+)及更高版本的 Android 设备出现问题。
此问题也会出现在 Play 商店中提供的其他第三方应用程序上、例如在这些 Android 设备上运行的 BLE 扫描仪、sensorTag 和 nrf connect。
固件信息:
芯片:CC2640R2F
BLE 堆栈:CC2640R2 SDK 1.00.00.22 (也称为 BLE-STACK V3.0)
TI Code Composer Studio:CCS- 7.1.0.00016
适用于 CC13XX 的 TI-RTOS:3.01.01.19
C 编译器 for ARM:16.09.0.LTS
XDCTools:3.32.01.22
在 Android 端尝试的修复:
在 Android 方面尝试了以下修复、但未成功。
- 在连接成功事件和 GATT.discoverServices()请求之间设置了一个延时时间(最多尝试2000ms)。
- 对于组强(6.0)以下和以上的器件、请使用单独的 device.gattConnect (...)方法。 棉花糖以上的设备需要 一个传输参数。
- 在 GATT 服务器之间切换连接、以确保在给定时间仅连接一台服务器。
- 为两台服务器创建了单独的 GATT 回调、并为涉及两台服务器的所有操作创建了单独的线程。
唯一成功的修复方法是仅将一台服务器连接到客户端。 要连接另一台服务器、需要重新打开该应用程序。 如果同时连接了另一个设备、则问题仍然存在。
在固件方面尝试的修复:
根据 TI 论坛上以下帖子建议的修复、 对固件进行了更改并进行了测试。 他们也没有成功。
收集的数据:
蓝牙监听器日志是从 Android 侧收集的、并已附加。
'btssnoop_HCI_SUCCESS.log'文件处理运行棉花糖(6.0.1)的 Android 设备(Samsung galaxy s7边缘)与仅一台服务器(净化器)之间的 BLE 连接成功。
'btssnoop_HCI_FAIL.log'文件处理同一 Android 设备和两台服务器(传感器和净化器)之间存在问题的 BLE 连接。