Stap 4: USB-Descriptors
Om te recapituleren, hoeft we te maken over het apparaat descriptor, configuratie-descriptor interface descriptor, eindpunt descriptor en tekenreeks descriptoren. Er is ook een USB menselijk Interface-apparaat verslag "descriptor" die we zullen moeten later schrijven.
De apparaat "descriptor" zal in het algemeen de computerinformatie over het apparaat. Info zoals de USB standaard het voldoet aan, het is stuurprogramma-installatieklasse & apparaat subklasse, protocol, leverancier, product-ID en een paar optionele tekenreeksen zoals productnaam, vervaardiging naam en serienummer. Het zal ook aangeven hoeveel configuraties er beschikbaar zijn voor dit apparaat (dit is bijna altijd slechts één).
Voor dit project is de stuurprogramma-installatieklasse ingesteld op 0, wat betekent "uitstellen naar interface", zodat onze interface-descriptor dit apparaat als een Human Interface Device (HID beschrijven zal). Het apparaat subklasse en protocol zijn irrelevant. De leverancier-ID en product-ID kan van alles zijn (soort, we zullen praten hierover later). Ik heb de vervaardiging tekenreeks ingesteld op mijn website in de source code, en de naam van het apparaat is "Wii Pad".
Elke configuratie-descriptor wordt aangegeven hoe het apparaat wordt aangedreven, hoe veel macht het behoeften, en hoeveel interfaces die het heeft. Er is ook een tekenreeks die de beschrijving van elke configuratie (ik nog niet gezien dit gebruikt). Andere configuratie kan worden geselecteerd, maar meestal is er slechts één beschikbare configuratie.
Voor dit project, de configuratie wordt aangegeven dat deze gamepad zal worden aangedreven door de USB-poort en het moet ongeveer 100 mA van huidige (Nee het niet, maar 100 is een mooi nummer en goed voorbij onze reële behoeften). Er is slechts één interface.
Elke interface-descriptor bevat info over het aantal eindpunten in de interface, en vervolgens de interface klasse, onderklasse van de interface en protocol van de interface van deze bijzondere interface.
Voor dit project, we zullen gebruiken eindpunt #0, oftewel de "controle eindpunt" (standaard voor standaard aanvragen van de computer), begin- en eindpunt #1, oftewel een "interrupt-in" eindpunt dat wij USB-HID sturen verslagen (deze verslagen bevatten de gamepad-gegevens) door. De klasse 0x03, die aangeeft Human Interface Device (HID), de subklasse en protocol zijn beide 0x00.
Meer lezen: