2

我正在开发一个将连接到 Xbox 360 控制器的 Android 项目。我希望能够通过控制器的输入报告捕获用户反馈。我正在使用 Virtual Box 和 AndroidVM 进行测试,并使用以下内容作为 USB 协议的参考(尤其是与 Xbox 控制器有关的):

举几个我用来获取信息的链接。我还参考了 HID 协议信息来检查数据包描述。

我已经成功地能够通过 VM 检测和枚举控制器,并且已经成功地使用 Android SDK API(例如USBManager,等)获取输入报告USBInterfaceUSBDevice但只能通过使用控制转移请求显式请求报告.

我希望能够通过适当端点上的中断来提取这些输入报告。我试图从第一个接口 ( getInterface[0]and getEndpoint[0]) 上的第一个端点读取数据包并且我确实接收到数据,但是在解析字节缓冲区中的数据时遇到了困难(我将缓冲区设置为 little endian)。特别是,我如何知道每个数据包的分隔符?我知道每个数据包都以 Sync 字段开头,并且该 Sync 是 8 位,最后两位指示 PID 的开始位置,但我不确定这到底意味着什么。许多文档为 Sync 描述的 Ks 和 Js 是什么?它们如何表示为位?此外,所有数据包都应该有一个 EOP,这需要解析还是由硬件处理?

4

0 回答 0