【问题标题】:Incomplete list of BLE GATT services discovered in Android HCI log is returned in getServices()在 getServices() 中返回在 Android HCI 日志中发现的 BLE GATT 服务的不完整列表
【发布时间】:2018-05-17 06:12:48
【问题描述】:

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

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

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

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

连接事件后所有活动的更长 HCI 日志,包括对可见特征之一的特征读取,链接如下: HCI log subset

【问题讨论】:

  • 也许您可以发布整个 hci 日志?现在我们只看到发现服务的第一部分(而不是数据包内容)。另外,您是否尝试过其他手机或平板电脑?
  • @Emil 链接已添加。总共试用了大约 10 部手机。

标签: android bluetooth-lowenergy gatt hci


【解决方案1】:

在数据包 54 中,有一个按类型读取的响应。内容是包含句柄 0x0211 和值 00 的“属性数据”项。此值 (00) 无效。特性声明必须具有以下值组件:

  • 特征属性(1字节),特征属性的位域
  • 特征值句柄(2 字节),包含此特征值的属性句柄
  • 特征 UUID(2 或 16 字节)、16 位蓝牙 UUID 或 128 位 UUID 用于特征值

所以该值总共应该是 5 或 19 个字节。你的值是 1 个字节。

【讨论】:

  • 我们使用的是 PAN1026 蓝牙模块。你知道为什么模块会错误地响应按类型读取请求吗?
  • 不,我不熟悉那个模块。
猜你喜欢
  • 1970-01-01
  • 2017-04-02
  • 1970-01-01
  • 2018-11-15
  • 1970-01-01
  • 2021-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多