Caractéristiques du canal de contrôle
Le canal de contrôle de l’appareil est son point de terminaison de contrôle USB. Un message de contrôle de l’hôte vers l’appareil est envoyé en tant que transfert SEND_ENCAPSULATED_COMMAND. Ce transfert est défini dans le tableau suivant.
BmRequestType | bRequest | wValue | Windex | wLength | Données |
---|---|---|---|---|---|
0x21 |
0x00 |
0x0000 |
Champ bInterfaceNumber du descripteur d’interface de classe de communication |
Longueur en octets du bloc de message de contrôle |
Contrôler le bloc de messages |
L’hôte n’interroge pas en permanence le point de terminaison de contrôle USB pour les messages de contrôle d’entrée. Lors du placement d’un message de contrôle sur son point de terminaison Control, l’appareil doit retourner une notification sur le point de terminaison Interrupt IN de l’interface communication Class, qui est interrogé par l’hôte chaque fois que l’appareil peut retourner des messages de contrôle. Le transfert du point de terminaison IN d’interruption de l’appareil vers l’hôte est un transfert USB Interrupt IN standard. La seule notification d’appareil définie est la notification RESPONSE_AVAILABLE, définie dans le tableau suivant.
Offset (octets) | Longueur (octets) | Champ | Données |
---|---|---|---|
0 |
4 |
Notification |
RESPONSE_AVAILABLE (0x00000001) |
4 |
4 |
Réservé |
0 |
Lors de la réception de la notification RESPONSE_AVAILABLE, l’hôte lit le message de contrôle à partir du point de terminaison de contrôle à l’aide d’un transfert GET_ENCAPSULATED_RESPONSE, défini dans le tableau suivant.
bmRequestType | bRequest | wValue | Windex | wLength | Données |
---|---|---|---|---|---|
0xA1 |
0x01 |
0x0000 |
Champ bInterfaceNumber du descripteur d’interface de classe de communication |
0x0400 (il s’agit de la longueur minimale en octets de la mémoire tampon publiée par l’hôte) |
Contrôler le bloc de messages |
Si, pour une raison quelconque, l’appareil reçoit un GET_ENCAPSULATED_RESPONSE et ne peut pas répondre avec des données valides sur le point de terminaison De contrôle, il doit retourner un paquet codé sur un octet défini sur 0x00, au lieu de bloquer le point de terminaison de contrôle.