iOS 通过 Gatt 忽略 HID 消费者页面的输入报告

标签 ios bluetooth-lowenergy hid

我使用 CSR1010 并通过 Gatt 应用程序编写了一个 BLE HID,该应用程序仅向 iOS 发送播放/暂停、音量增量/减量。

消费者报告的报告描述符配置为:

05 0C        (GLOBAL) USAGE_PAGE         0x000C Consumer Device Page
09 01        (LOCAL)  USAGE              0x000C0001 Consumer Control (CA=Application Collection)
A1 01        (MAIN)   COLLECTION         0x01 Application (Usage=0x000C0001: Page=Consumer Device Page, Usage=Consumer Control, Type=CA)
85 01          (GLOBAL) REPORT_ID          0x01 (1)
19 00          (LOCAL)  USAGE_MINIMUM      0x000C0000 Unassigned
2A 9C02        (LOCAL)  USAGE_MAXIMUM      0x000C029C AC Distribute Vertically (Sel=Selector)
15 00          (GLOBAL) LOGICAL_MINIMUM    0x00 (0) <-- Redundant: LOGICAL_MINIMUM is already 0
26 9C02        (GLOBAL) LOGICAL_MAXIMUM    0x029C (668)
95 01          (GLOBAL) REPORT_COUNT       0x01 (1) Number of fields
75 10          (GLOBAL) REPORT_SIZE        0x10 (16) Number of bits per field
81 00          (MAIN)   INPUT              0x00000000 (1 field x 16 bits) 0=Data 0=Array 0=Absolute 0=Ignored 0=Ignored 0=PrefState 0=NoNull
C0           (MAIN)   END_COLLECTION     Application

我使用 hidrdd 验证了此报告描述符所以我很有信心它会被很好地解析。

嗅探器中显示的发送到 iOS 的原始数据字节为 05 0c 09 01 a1 01 85 01 19 00 2a 9c 02 15 00 26 9c 02 95 01 75 10 81 00 c0完全按照配置。

我还从嗅探结果中看到,iOS 注册了来自消费者报告特征的客户端字符配置的通知。

一切看起来都不错,但是当我向 iOS 发送 2 个字节 0xcd 0x00(播放/暂停)时,没有任何反应。

现在我只是觉得我已经尽力了,但 iOS 仍然不高兴。没有办法知道 iOS 对什么不满意,因为没有涉及 iOS 应用程序。有这方面经验的人可以指点一下吗?

[编辑] 添加了以下嗅探器的一些屏幕截图:

Report Map 1st part Report Map 2nd part iOS writes client configuration HID report ignored by iOS

最佳答案

当您在报告描述符中包含报告 ID 时,所有 HID 报告(在该接口(interface)上)都必须以报告 ID 为前缀。在您的情况下,您需要发送 3 字节报告:

0x01 0xcd 0x00

...或从报告描述符中删除报告 ID。

关于iOS 通过 Gatt 忽略 HID 消费者页面的输入报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25402502/

相关文章:

macos - Mac OS X 用户空间中的游戏 handle 和操纵杆支持

ios - Realm 迁移中的访问列表属性

ios - json 解析期间的控制流程 - Objective C

usb - 自定义 HID 设备 HID 报告描述符

swift - 在 swift 中收听事件舞会蓝牙外围设备

android - BT 配对请求默认超时?

登录注册首页的IOS最佳实践

ios - CoreData 运行缓慢,因为有很多对象。我该如何优化它?

android - 如何在 android 中获取 BLE 通知?