iOS 忽略 Gatt 上 HID 的消费者页面的输入报告
<p><p>我使用 CSR1010 并通过 Gatt 应用程序编写了一个 BLE HID,该应用程序仅向 iOS 发送播放/暂停、音量增量/减量。</p>
<p>消费者报告的报告描述符配置为:</p>
<pre><code>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
</code></pre>
<p>我使用 <a href="http://sourceforge.net/projects/hidrdd/" rel="noreferrer noopener nofollow">hidrdd</a> 验证了此报告描述符所以我很有信心它会被很好地解析。</p>
<p>如嗅探器所示,发送到 iOS 的原始数据字节为 <code>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</code>完全按照配置。</p>
<p>我还从嗅探结果中看到,iOS 注册了来自消费者报告特征的客户端字符配置的通知。</p>
<p>一切看起来都不错,但是当我向 iOS 发送 2 个字节 <code>0xcd 0x00</code>(播放/暂停)时,什么也没有发生。</p>
<p>现在我只是觉得我做了我能做的一切,但 iOS 仍然不开心。没有办法说出 iOS 对什么不满意,因为没有涉及 iOS 应用程序。哪位有这方面经验的可以指点一下吗?</p>
<p>[编辑]
在下面添加了一些嗅探器的截图:</p>
<p> <a href="/image/vCoAI.jpg" rel="noreferrer noopener nofollow"><img src="/image/vCoAI.jpg" alt="Report Map 1st part"/></a>
<a href="/image/vCoAI.jpg" rel="noreferrer noopener nofollow"><img src="/image/15Icm.jpg" alt="Report Map 2nd part"/></a>
<a href="/image/TWGnr.jpg" rel="noreferrer noopener nofollow"><img src="/image/TWGnr.jpg" alt="iOS writes client configuration"/></a>
<a href="/image/9HkDt.jpg" rel="noreferrer noopener nofollow"><img src="/image/9HkDt.jpg" alt="HID report ignored by iOS"/></a> </p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>当您在报告描述符中包含报告 ID 时,所有 HID 报告(在该接口(interface)上)都必须以报告 ID 为前缀。在您的情况下,您需要发送一个 3 字节的报告:</p>
<pre><code>0x01 0xcd 0x00
</code></pre>
<p>...或从您的报告描述符中删除报告 ID。</p></p>
<p style="font-size: 20px;">关于iOS 忽略 Gatt 上 HID 的消费者页面的输入报告,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/25402502/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/25402502/
</a>
</p>
页:
[1]