Paso 5: USB HID informes y descriptores de informe
Echa un vistazo a tu controlador clásico de Wii. Cuenta con 15 botones (redondo hasta 16 por simplicidad) y dos joysticks. Esto significa que necesitamos enviar 15 bits de datos para los botones y 4 números, uno para cada eje de datos de la palanca de mando. Definimos el formato de datos para ver como esta:
Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 | |
Byte 0 | Botón | Botón | Botón | Botón | Botón | Botón | Botón | Botón |
Byte 1 | Botón | Botón | Botón | Botón | Botón | Botón | Botón | Botón |
Byte 2 | Joystick izquierdo X eje entero firmado Char | |||||||
Byte 3 | Joystick izquierdo Y eje entero firmado Char | |||||||
Byte 4 | Palo derecho X eje entero firmado Char | |||||||
Byte 5 | Palo derecho Y eje entero firmado Char |
Y luego podemos definir una estructura de datos en C y C++
Escribir un descriptor de informe implica describir en primer lugar, un contexto de uso y luego describiendo el significado de los datos en función del contexto de uso y luego describiendo los datos en términos de su rango y tamaño.
En primer lugar, hacer que el ordenador entiende que el dispositivo es un gamepad
Luego describen los datos botón (16 bits)
Entonces, describir los datos de 4 ejes como enteros de 8 bits firmados
- Nota: Z se utiliza para representar la palanca derecha eje X, Rx se utiliza para representar el eje Y del stick derecho. Esto no tiene sentido pero esto es cómo la mayoría existentes cojines juego de USB funcionan. He probado esto con Battlefield Bad Company 2, funciona.
- Nota: Use "absoluta" en algo como palancas de mando, pero "relativa" por cosas como el ratón.
Por último, parece el descriptor de informe:
Ahora que ya tenemos un descriptor de informe, ¿cómo hacemos nuestra AVR Dile estas cosas al ordenador? Ir a descargar la herramienta oficial de"HID Descriptor" de http://www.usb.org/developers/hidpage/ . Se usa para poner estas cosas en, y la herramienta generará la matriz binaria correcta para usted.
Cuando ahorrará su resultado, vaya a "Archivo" -> "Guardar como" y asegúrese de que usted elija "archivo de cabecera (*. h)" en el guardar cuadro de diálogo. A continuación, abra el archivo, debe parecer
Grandes, el tamaño del array debe copiarse en V-USB "usbconfig.h" donde dice "USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH" y "char ReportDescriptor" debe ser renombrado a "PROGMEM char usbHidReportDescriptor" por lo que se almacena en la memoria flash del AVR. Terminas con algo como:
Que pedazo de código, además el typedef struct que hicimos anteriormente, se incluye en nuestro código fuente del proyecto (ver código fuente entero) más tarde.
Leer más: