Paso 4: USB descriptores
Para recapitular, tenemos que preocuparse el descriptor de dispositivo, el descriptor de configuración, descriptor de interfaz, descriptor de endpoint y descriptores de cadena. También hay un USB humano interfaz dispositivo Informe Descriptor que tendremos que escribir más adelante.
El descriptor de dispositivo le indicará la información de la computadora sobre el dispositivo en general. Información como el USB estándar cumple, su dispositivo clase y subclase de dispositivo, protocolo, proveedor, ID del producto y unas cuerdas opcionales como nombre del producto, nombre de fabricación y número de serie. También se indicará cuantas configuraciones que están disponibles para este dispositivo (esto es casi siempre sólo uno).
Para este proyecto, la clase de dispositivo se establece en 0, lo que significa "aplazar la interfaz", por lo que nuestro descriptor de interfaz describe este dispositivo como un dispositivo de interfaz humana (HID). El dispositivo subclase y protocolo son irrelevantes. El proveedor ID y ID del producto puede ser cualquier cosa (especie de, vamos a hablar sobre esto más adelante). En el código fuente, yo he marcado la cadena de fabricación a mi sitio web y el nombre del dispositivo es "Wii".
Cada descriptor de configuración le indicará cómo el dispositivo se alimenta, cómo mucha energía necesita, y cómo muchas interfaces tiene. También hay una cadena que describe cada configuración (no he visto esto usado). Pueden seleccionar diferentes configuraciones pero generalmente hay solamente una configuración disponible.
Para este proyecto, la configuración indicará que este gamepad se alimenta por el puerto USB y tendrá alrededor de 100 mA de corriente (no no, pero 100 es un número bonito y bien sobre nuestras necesidades reales). Hay una única interfaz.
Cada descriptor de interfaz contiene información sobre el número de puntos finales en la interfaz, entonces la clase de interfaz, subclase de interfaz y Protocolo de la interfaz de esta interfaz particular.
Para este proyecto, utilizaremos punto final #0, que es el "objetivo de control" (por defecto para las solicitudes estándar de la computadora) y punto final #1, que es un "interrupción-en" punto final que nos va enviando USB HID informes (estos informes contienen datos Pad) a través. La clase será 0 x 03, que indica el dispositivo de interfaz humana (HID), la subclase y protocolo son ambos 0 x 00.
Leer más: