¿Cómo llegar en Android Usb Host qué respuestas de dispositivo USB después de Host envía comando?

Después del sencillo tutorial puedo conectarme al dispositivo (ratón óptico usb con el chip ADNS-5000 dentro) y hacer un bulkTransfer .

UsbInterface intf = device.getInterface(0); UsbEndpoint endpoint = intf.getEndpoint(0); UsbDeviceConnection connection = manager.openDevice(device); connection.claimInterface(intf, forceClaim); connection.bulkTransfer(endpoint, bytes, bytes.length, TIMEOUT); //do in another thread 

La especificación ADNS-5000 (se puede buscar por google) define algunos conjuntos de "Comandos USB" entre los que se encuentra, por ejemplo:

Mnemónico: Get_Status_Device

Comando: 80 00 00 00 00 00 02 00

Notas: Normalmente devuelve 00 00, Self-powered 00 00, Remote wakeup 02 00

Así que lo entiendo como: cuando escribo datos:

 private byte[] bytes = {(byte) 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00}; 

Al dispositivo debo obtener 0x00, 0x00 o 0x00, 0x00 (esto es probablemente un error en spec como esta secuencia de bytes se define como resultado para dos estados diferentes) o 0x20, 0x00 a cambio, pero no veo ninguna forma El api devuelve algo, ¿verdad?

Eché un vistazo rápido a una especificación ADNS-5000. Una cosa es segura, usted tiene punto de entrada y salida disponibles.

Get_Status_Endpt0 82 00 00 00 xx 00 02 00 OUT: xx = 00, IN: xx = 80 Normalmente devuelve 00 00

Lo que significa que los comandos (no hay API) pueden devolver el resultado.

La única manera que puedo imaginar sería escribir el comando al punto extremo de salida y leer (por sondeo) el estado (después de la ejecución del comando) desde el punto final IN.

Esto es algo que he estado utilizando en algunos proyectos y está perfectamente bien. No estoy seguro sobre ADNS-5000 puesto que no he comprobado los detalles del protocolo del USB.

Espero eso ayude.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.