Eigenschaften des Steuerkanals
Der Steuerungskanal für das Gerät ist dessen USB-Steuerungsendpunkt. Eine Steuernachricht vom Host an das Gerät wird als SEND_ENCAPSULATED_COMMAND übertragen. Diese Übertragung wird in der folgenden Tabelle definiert.
BmRequestType | bRequest | wValue | Windex | wLength | Daten |
---|---|---|---|---|---|
0x21 |
0x00 |
0x0000 |
bInterfaceNumber-Feld des Kommunikationsklassen-Schnittstellendeskriptors |
Bytelänge des Kontrollmeldungsblocks |
Kontrollmeldungsblock |
Der Host fragt den USB Control-Endpunkt nicht kontinuierlich nach Eingabesteuerungsmeldungen ab. Beim Platzieren einer Steuernachricht auf dem Control-Endpunkt muss das Gerät eine Benachrichtigung über den Interrupt-IN-Endpunkt der Communication Class-Schnittstelle zurückgeben, die vom Host abgefragt wird, wenn das Gerät Steuernachrichten zurückgeben kann. Die Übertragung vom Interrupt-IN-Endpunkt des Geräts auf den Host ist eine standardmäßige USB-Interrupt-IN-Übertragung. Die einzige definierte Gerätebenachrichtigung ist die RESPONSE_AVAILABLE Benachrichtigung, die in der folgenden Tabelle definiert ist.
Offset (Bytes) | Länge (Bytes) | Feld | Daten |
---|---|---|---|
0 |
4 |
benachrichtigungs- |
RESPONSE_AVAILABLE (0x00000001) |
4 |
4 |
Reserviert |
0 |
Beim Empfang der RESPONSE_AVAILABLE-Benachrichtigung liest der Host die Steuernachricht vom Control-Endpunkt mithilfe einer GET_ENCAPSULATED_RESPONSE-Übertragung, die in der folgenden Tabelle definiert ist.
bmRequestType | bRequest | wValue | Windex | wLength | Daten |
---|---|---|---|---|---|
0xA1 |
0x01 |
0x0000 |
bInterfaceNumber-Feld des Kommunikationsklassen-Schnittstellendeskriptors |
0x0400 (dies ist die minimale Bytelänge des vom Host bereitgestellten Puffers) |
Kontrollmeldungsblock |
Wenn das Gerät aus irgendeinem Grund eine GET_ENCAPSULATED_RESPONSE empfängt und nicht mit gültigen Daten auf dem Control-Endpunkt reagieren kann, sollte es ein Ein-Byte-Paket zurückgeben, das auf 0x00 festgelegt ist, anstatt den Control-Endpunkt zu blockieren.