在 HID 设备上执行 USB 控制传输(设置、数据、状态)需要哪些 Android API?
What Android APIs do I need to perform a USB control transfer (setup, data, status) on a HID device?
我正在为使用 USB 主机链接到我的 Android 设备的 USB HID 控制器 开发驱动程序。
所有使我能够轮询控制器状态或设置不同标志的供应商特定操作都定义为 供应商特定控制命令,其中包含 设置 阶段和 data 阶段(设备 -> 控制器)。根据不同的命令,控制器可能会发回 status 阶段消息。
我了解到 UsbDeviceConnection.controlTransfer() 方法将用于发送设置和数据阶段。我不明白的是 method/API 我应该用什么来读取控制器发回的状态。
有人知道吗?
非常感谢!
根据著名的开源项目https://github.com/mik3y/usb-serial-for-android,该方法returns -1 如果有问题。
int result = mConnection.controlTransfer(FTDI_DEVICE_OUT_REQTYPE, SIO_RESET_REQUEST, SIO_RESET_SIO, 0 /* index */, null, 0, USB_WRITE_TIMEOUT_MILLIS);
if (result != 0) {
throw new IOException("Reset failed: result=" + result);
}
(代码摘自FtdiSerialDriver.java)
我知道,因为这就是发生在我身上的事情!!
我正在为使用 USB 主机链接到我的 Android 设备的 USB HID 控制器 开发驱动程序。 所有使我能够轮询控制器状态或设置不同标志的供应商特定操作都定义为 供应商特定控制命令,其中包含 设置 阶段和 data 阶段(设备 -> 控制器)。根据不同的命令,控制器可能会发回 status 阶段消息。
我了解到 UsbDeviceConnection.controlTransfer() 方法将用于发送设置和数据阶段。我不明白的是 method/API 我应该用什么来读取控制器发回的状态。
有人知道吗?
非常感谢!
根据著名的开源项目https://github.com/mik3y/usb-serial-for-android,该方法returns -1 如果有问题。
int result = mConnection.controlTransfer(FTDI_DEVICE_OUT_REQTYPE, SIO_RESET_REQUEST, SIO_RESET_SIO, 0 /* index */, null, 0, USB_WRITE_TIMEOUT_MILLIS);
if (result != 0) {
throw new IOException("Reset failed: result=" + result);
}
(代码摘自FtdiSerialDriver.java)
我知道,因为这就是发生在我身上的事情!!