Wednesday, September 17, 2008

HID my ass...

Interfaz HID
El estándar HID, permite que los dispositivos se puedan describir a si mismos, utilizando un bloque descriptor de HID. Este bloque incluye una enumeración de reportes que el dispositivo entiende.Un reporte, puede ser visto como un puerto de una red, que está asigando con algún servicio en particular. La única diferencia, es que los reportes son unidireccionales, y el descriptor HID lista para cada puerto la dirección, ya sea de salida o de entrada, también dice cual sera el tamaño payload para cada uno de los puertos. Como todos los dispositivos HID, el Wiimote reporta su bloque descriptor HID, cuando se le pide información usando el protocolo SDP. Su descriptor, se ve de la siguiente forma:



Salidas





















Salidas:
ID del Reporte Tamaño
Payload
Función
0x11 1 Player LEDs, Rumble
0x12 2 Tipo de reporte/ID
0x13 1 Habilita el sensor infrarojo
0x14 1 Habilita bocina
0x15 1 Controla el estátus
0x16 21 Escribe datos
0x17 6 Lee datos
0x18 21 Le da datos a la bocina
0x19 1 Pone a la bocina en silencio
0x1a 1 Habilita el sensor infrarojo 2

Entradas






























Entradas:
Reporte ID Tamaño
Payload
Función
0x20 6 Puerto de expansión
0x21 21 Lee datos
0x22 4 Escribe datos
0x30 2 Es sólo para los botonesButtons only
0x31 5 Da un reporte de sensado de los botones.
0x32 16 Es puerto de expansión para los botones
0x33 17 Da un reporte del sensado del movimiento , así como de los botones.
0x34 21 Puerto de expansión del infrarojo
0x35 21 Da un reporte del sensado del movimiento , así como de los botones.
0x36 21 Da un reporte del sensado del movimiento , así como de los botones.
0x37 21 Da un reporte del sensado del movimiento , así como de los botones.
0x38 21 Da un reporte del sensado del movimiento , así como de los botones.
0x3d 21 Da un reporte del sensado del movimiento , así como de los botones.
0x3e 21 Da un reporte del sensado del movimiento , así como de los botones.
0x3f 21 Da un reporte del sensado del movimiento , así como de los botones.


Nótese que "salida" se refiere a paquetes, que son enviados del host al wiimote, y "entrada" se refiere a paquetes que van del Wiimote al host.

La notación de escritura, que se llevará acabo, es:

Incluir la cabecera del Bluetooth en paréntesis, el ID del reporte, y finalmente el payload. Cada byte se escribe en hexadecimal, sin tomar el prefijo 0x y separado por espacios.
Por ejemplo:
(a1) 30 00 00

Es un paquete de datos de entrada (0xa1), en el canal 0x30, con 2 bytes de payload 0x00, 0x00.

No comments: