Charakterystyka kanału sterowania
Kanał kontrolny urządzenia to punkt końcowy kontroli USB. Komunikat kontrolny z hosta do urządzenia jest wysyłany jako transfer SEND_ENCAPSULATED_COMMAND. Ten transfer jest zdefiniowany w poniższej tabeli.
BmRequestType | bRequest | wValue | wIndex | długość | Dane |
---|---|---|---|---|---|
0x21 |
0x00 |
0x0000 |
bInterfaceNumber pole deskryptora interfejsu klasy komunikacji |
Długość bajtu bloku komunikatów sterujących |
Blok komunikatów sterujących |
Host nie przeprowadza ciągłego sondowania punktu końcowego USB w poszukiwaniu komunikatów sterujących dotyczących wejścia. Po umieszczeniu komunikatu sterującego w punkcie końcowym sterowania urządzenie musi zwrócić powiadomienie na punkcie końcowym przerwania IN interfejsu klasy komunikacji, które jest odpytywane przez hosta za każdym razem, gdy urządzenie może zwrócić komunikaty sterujące. Transfer z punktu końcowego przerwania IN urządzenia do hosta jest standardowym transferem USB Interrupt IN. Jedynym zdefiniowanym powiadomieniem urządzenia jest powiadomienie RESPONSE_AVAILABLE zdefiniowane w poniższej tabeli.
Przesunięcie (bajty) | Długość (bajty) | Pole | Dane |
---|---|---|---|
0 |
4 |
Powiadomienie |
RESPONSE_AVAILABLE (dostępna_odpowiedź) (0x00000001) |
4 |
4 |
Zastrzeżony |
0 |
Po otrzymaniu powiadomienia RESPONSE_AVAILABLE host odczytuje komunikat kontrolny z punktu końcowego sterowania przy użyciu transferu GET_ENCAPSULATED_RESPONSE zdefiniowanego w poniższej tabeli.
bmRequestType | bRequest | wValue | wIndex | długośćW | Dane |
---|---|---|---|---|---|
0xA1 |
0x01 |
0x0000 |
bInterfaceNumber pole deskryptora interfejsu klasy komunikacji |
0x0400 (jest to minimalna długość bajtu buforu opublikowanego przez hosta) |
Blok komunikatów kontrolnych |
Jeśli z jakiegoś powodu urządzenie otrzyma GET_ENCAPSULATED_RESPONSE i nie może odpowiedzieć prawidłowymi danymi na punkcie końcowym sterowania, powinno zwrócić jednogajtowy pakiet ustawiony na 0x00, zamiast zatrzymywania punktu końcowego sterowania.