Étape 4: USB descripteurs
Pour rappel, nous avons besoin de s’inquiéter du descripteur de périphérique, descripteur de configuration, le descripteur d’interface, descripteur de point de terminaison et descripteurs de la chaîne. Il y a aussi un USB Human Interface Device rapport descripteur dont nous aurons besoin d’écrire plus tard.
Le descripteur de périphérique indiquera les informations de l’ordinateur sur l’appareil en général. Informations telles que le port USB standard, elle répond, c' est la classe de périphérique & sous-classe périphérique, protocole, vendeur, ID de produit et quelques chaînes en option tels que le nom du produit, nom de la fabrication et le numéro de série. Il indiquera également les configurations combien il sont disponibles pour ce périphérique (c’est presque toujours seul).
Pour ce projet, la classe de périphérique est définie sur 0, ce qui signifie « reporter à interface », donc notre descripteur d’interface décrira cet appareil comme un Human Interface Device (HID). La sous-classe de l’appareil et le protocole ne sont pas pertinents. Le vendor ID et ID de produit n’a pas dimportance (sorte de, nous parlerons plus tard). Dans le code source, j’ai mis la chaîne de fabrication sur mon site, et le nom du périphérique est « Wii Pad ».
Chaque descripteur de configuration vous indiquera comment l’appareil est alimenté, comment beaucoup pouvoir, il a besoin, et combien d’interfaces il a. Il y a aussi une chaîne qui décrit chaque configuration (je n’ai pas vu cela utilisé). Configuration différente peut être sélectionnée, mais habituellement il n’y a qu’une seule configuration disponible.
Pour ce projet, la configuration indique que cette manette sera alimentée par le port USB et il aura besoin d’environ 100 mA de courant (non ce n’est pas, mais 100 est un certain nombre de nice et bien sur nos besoins réels). Il n’y a qu’une seule interface.
Chaque descripteur d’interface contient des infos sur le nombre de points de terminaison dans l’interface et alors la classe d’interface, sous-classe de l’interface et protocole d’interface de cette interface particulière.
Pour ce projet, nous allons utiliser endpoint #0, qui est le « point de terminaison de contrôle » (valeur par défaut pour les requêtes standards de l’ordinateur) et le point de terminaison #1, qui est un point de terminaison « interruption-in » que nous allons envoyer USB HID rapports (ces rapports contiennent les données de la manette de jeu) à travers. La classe sera 0 x 03, indique Human Interface Device (HID), la sous-classe et le protocole sont les deux 0 x 00.
Lecture plus :