Характеристики канала управления
Канал управления для устройства — это конечная точка управления USB. Управляющее сообщение от узла на устройство отправляется в виде SEND_ENCAPSULATED_COMMAND передачи. Эта передача определена в следующей таблице.
BmRequestType | bRequest | wValue | wIndex | wLength | Данные |
---|---|---|---|---|---|
0x21 |
0x00 |
0x0000 |
Поле bInterfaceNumber дескриптора интерфейса класса коммуникации |
Длина байтов блока сообщений элемента управления |
Управление блоком сообщений |
Узел не постоянно опрашит конечную точку управления USB на наличие входных сообщений управления. При размещении сообщения элемента управления в конечной точке управления устройство должно вернуть уведомление в конечную точку прерывания в интерфейсе класса коммуникации, которая опрашивается узлом всякий раз, когда устройство может возвращать управляющие сообщения. Передача с конечной точки прерывания устройства на узел является стандартной передачей прерывания USB IN. Единственным определенным уведомлением устройства является уведомление RESPONSE_AVAILABLE, определенное в следующей таблице.
Смещение (байты) | Длина (байты) | Поле | Данные |
---|---|---|---|
0 |
4 |
Уведомление |
RESPONSE_AVAILABLE (0x00000001) |
4 |
4 |
Зарезервировано |
0 |
После получения уведомления RESPONSE_AVAILABLE узел считывает сообщение элемента управления из конечной точки элемента управления с помощью GET_ENCAPSULATED_RESPONSE передачи, определенной в следующей таблице.
bmRequestType | bRequest | wValue | wIndex | wLength | Данные |
---|---|---|---|---|---|
0xA1 |
0x01 |
0x0000 |
Поле bInterfaceNumber дескриптора интерфейса класса коммуникации |
0x0400 (это минимальная длина буфера, размещенного узлом) |
Управление блоком сообщений |
Если по какой-либо причине устройство получает GET_ENCAPSULATED_RESPONSE и не может ответить допустимыми данными в конечной точке управления, оно должно вернуть однобайтовый пакет, для 0x00, а не застопорить конечную точку управления.