菜鸟教程小白 发表于 2022-12-13 08:56:39

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) &lt;-- 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]
查看完整版本: iOS 忽略 Gatt 上 HID 的消费者页面的输入报告