USB-Wii Classic Controller (5 / 18 steg)
Steg 4: USB-beskrivningar
För att sammanfatta, behöver vi oroa enhetsbeskrivningen, konfiguration deskriptor, gränssnitt deskriptor, slutpunktsbeskrivning och sträng deskriptorer. Det finns också en USB-Human Interface rapport enhetsbeskrivningen som vi behöver för att skriva senare.
Enhetsbeskrivningen berättar datorinformation om enheten i allmänhet. Information såsom USB standard den möter, det är enhetsklass & enhet underklass, protokoll, leverantör, produkt-ID och några valfria strängar som produktnamn, tillverkning namn och serienummer. Det visar också hur många konfigurationer där finns tillgängliga för den här enheten (detta är nästan alltid bara en).
För detta projekt, är enhetsklassen satt till 0, vilket betyder "uppskjuta till gränssnittet", så våra gränssnitt deskriptor beskriver enheten som en Human Interface Device (HID). Den enheten underklass och protokollet är irrelevant. Säljaren- och produkt-ID kan något (typ av, ska vi prata om detta senare). Jag har ställt tillverkning strängen till min hemsida i källkoden, och namnet på enheten är "Wii Pad".
Varje konfiguration säkerhetsbeskrivningen anger hur enheten drivs, hur mycket effekt det behöver, och hur många gränssnitt har. Det finns också en sträng som beskriver varje konfiguration (jag inte har sett detta används). Annan konfiguration kan väljas men oftast finns det bara en tillgänglig konfigurationen.
För detta projekt, konfigurationen anger att denna gamepad kommer att drivas av USB-porten och det kommer att behöva ca 100 mA ström (nej det inte, men 100 är en trevlig antal och väl över våra verkliga krav). Det finns endast ett gränssnitt.
Varje gränssnitt deskriptor innehåller information om antalet slutpunkter i gränssnittet, och sedan gränssnittsklassen, gränssnitt underklass och gränssnitt protokoll av denna särskilt gränssnitt.
För detta projekt, vi kommer att använda slutpunkt #0, som är "kontrollslutpunkt" (standard för standard begäranden från datorn), och slutpunkt #1, som är en "avbrott in" slutpunkten att vi kommer att skicka USB-HID-rapporter (dessa rapporter innehåller data som gamepad) igenom. Klassen kommer att 0x03, som anger Human Interface Device (HID), underklass och protokollet är båda 0x00.
Mer läsning: