在 Android HCI 日志中发现的 BLE GATT 服务的不完整列表在 getServices() 中返回

Incomplete list of BLE GATT services discovered in Android HCI log is returned in getServices()

我正在连接到具有自定义固件和 4 项服务的 BLE 设备,其中 2 项是自定义服务,每项服务都有一个自定义特征。

成功连接后使用 discoverServices() 时,会在 HCI 日志中找到 4 个服务(参见下面的 Wireshark 屏幕)。

但是在我自己的 Android 代码和 nRF 蓝牙应用程序中,getServices() 只返回了 3 个服务,而第三个服务缺少它唯一的特征:

第4项服务及其特征无处可寻。

连接事件后所有 activity 的较长 HCI 日志,包括对其中一个可见特征的特征读取,链接如下: HCI log subset

在数据包54中,有一个Read By Type Response。内容是包含句柄 0x0211 和值 00 的项目 "Attribute Data"。此值 (00) 无效。特性声明必须具有以下值组件:

  • Characteristic Properties(1字节),特征属性的位域
  • 特征值句柄(2 字节),包含该特征值的属性句柄
  • 特征 UUID(2 或 16 字节),特征值的 16 位蓝牙 UUID 或 128 位 UUID

因此该值总共应为 5 或 19 个字节。您的值为 1 个字节。