Caratteristiche del canale di controllo
Il canale di controllo per il dispositivo è l'endpoint di controllo USB. Viene inviato un messaggio di controllo dall'host al dispositivo come trasferimento SEND_ENCAPSULATED_COMMAND. Questo trasferimento viene definito nella tabella seguente.
BmRequestType | bRequest | wValue | Windex | wLength | Dati |
---|---|---|---|---|---|
0x21 |
0x00 |
0x0000 |
campo bInterfaceNumber del descrittore dell'interfaccia della classe di comunicazione |
Lunghezza byte del blocco di messaggi di controllo |
Blocco messaggi di controllo |
L'host non esegue il polling continuo dell'endpoint di controllo USB per i messaggi di controllo di input. Al momento dell'inserimento di un messaggio di controllo nell'endpoint di controllo, il dispositivo deve restituire una notifica nell'endpoint Di interruzione dell'interfaccia della classe di comunicazione, che viene eseguito il polling dall'host ogni volta che il dispositivo può restituire messaggi di controllo. Il trasferimento dall'endpoint IN di interruzione del dispositivo all'host è un trasferimento USB Interrupt IN standard. L'unica notifica del dispositivo definita è la notifica RESPONSE_AVAILABLE definita nella tabella seguente.
Offset (byte) | Lunghezza (byte) | Campo | Dati |
---|---|---|---|
0 |
4 |
Notifica |
RESPONSE_AVAILABLE (0x00000001) |
4 |
4 |
Riservato |
0 |
Dopo aver ricevuto la notifica di RESPONSE_AVAILABLE, l'host legge il messaggio di controllo dall'endpoint di controllo usando un trasferimento GET_ENCAPSULATED_RESPONSE definito nella tabella seguente.
bmRequestType | bRequest | wValue | Windex | wLength | Dati |
---|---|---|---|---|---|
0xA1 |
0x01 |
0x0000 |
campo bInterfaceNumber del descrittore dell'interfaccia della classe di comunicazione |
0x0400 (si tratta della lunghezza minima di byte del buffer pubblicata dall'host) |
Blocco messaggi di controllo |
Se per qualche motivo il dispositivo riceve un GET_ENCAPSULATED_RESPONSE e non è in grado di rispondere con dati validi nell'endpoint di controllo, dovrebbe restituire un pacchetto di un byte impostato su 0x00, anziché bloccare l'endpoint di controllo.