Поделиться через


Характеристики канала управления

Канал управления для устройства — это конечная точка управления 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, а не застопорить конечную точку управления.