我正在开发一个将连接到Xbox 360控制器的Android项目。我希望能够通过控制器的输入报告捕获用户反馈。我正在使用Virtual Box和AndroidVM进行测试,并使用以下内容参考USB协议(特别是与Xbox控制器有关):
列举我用于获取信息的一些链接。我还引用了HID协议信息来检查数据包描述。
我已成功通过VM检测并枚举控制器并且已成功使用Android SDK API获取输入报告(例如USBManager
,USBInterface
,USBDevice
等。),但只能通过使用控制转移请求明确地发出报告请求。
我希望能够通过适当的端点上的中断来提取这些输入报告。我试图从第一个接口(getInterface[0]
和getEndpoint[0]
)上的第一个端点读取数据包,我确实收到数据,但是在解析字节缓冲区中的数据时遇到了困难(我有缓冲区集)作为小端)。特别是,我如何知道每个数据包的分隔符?我知道每个数据包都以一个同步字段开始,并且该同步是8位,最后两位表示PID开始的位置,但我不确定这意味着什么。什么是Ks和Js,因为许多文档描述了Sync以及它们如何表示为位?此外,所有数据包都应该有一个EOP,这需要解析还是由硬件处理?