2016-09-26 3 views
0

Я реализацией пользовательским HID устройством, которое имеет следующий интерфейс:USB HID разницы между «Get Input Report» и «отчетом Input»

0x06, 0xA0, 0xFF, // Usage Page (Vendor Defined 0xFFA0) 
0x09, 0x01,  // Usage (0x01) 
0xA1, 0x01,  // Collection (Application) 

0x85, 0x01,  // Report ID (1) 
0x15, 0x00,  // Logical Minimum (0) 
0x26, 0x01, 0x00, // Logical Maximum (1) 
0x75, 0x08,  // Report Size (8) 
0x95, 0x01,  // Report Count (1) 
0x91, 0x02,  // Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) 

0x85, 0x01,  // Report ID (1) 
0x15, 0x00,  // Logical Minimum (0) 
0x26, 0x01, 0x00, // Logical Maximum (1) 
0x75, 0x01,  // Report Size (1) 
0x95, 0x02,  // Report Count (2) 
0x81, 0x02,  // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) 
0x75, 0x06,  // Report Size (6) 
0x95, 0x01,  // Report Count (1) 
0x81, 0x01,  // Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position) 

0x85, 0x03,  // Report ID (1) 
0x15, 0x00,  // Logical Minimum (0) 
0x26, 0xFF, 0xFF, // Logical Maximum (65535) 
0x75, 0x10,  // Report Size (16) 
0x95, 0x01,  // Report Count (1) 
0xB1, 0x02,  // Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile) 

0xC0,    // End Collection 

При подключении этого устройства к компьютеру через USB-логику анализатор Я вижу это перечисление, то что-то (я не уверен, что любые идеи?) использует спрятанный дескриптор отчета разумно захватить кучу отчетов:

(control)(endpoint 0) Get Input Report[1] 
(control)(endpoint 0) Get Feature Report[1] 

запись «Get Input Report» перепутал меня Я думал, что входные отчеты были отправлены через передачу прерываний. Если я использую hid_write usbhid, я вижу следующую запись, так что я должен быть, по крайней мере половина прав относительно входных отчетов, отправляемых через прерывания передачи ...:

(interrupt)(endpoint 1) Input Report[1]" 

Я не смог найти информацию, которая описывает разницу между «получать входные отчеты» и прерывать передачу «входных отчетов», о которых я надеюсь, что один из вас узнает.

Почему существует контроль над «получением входных отчетов»?

Почему бы не указать мандат спецификации для записи входного отчета «входной отчет»?

Почему что-то захватывает отчеты ввода/функции для каждого определенного отчета ввода/функции, используя передачу управления для входных отчетов и передачу прерываний?

ответ

0

Посмотрите USB HID v1.1, есть определение запроса Get_Report на странице 51:

Этот запрос полезен во время инициализации для абсолютных элементов, а также для определения состояния художественных элементов. Этот запрос не предназначен для регулярного опроса состояния устройства.

Здесь это именно то, что делает драйвер: он извлекает различные отчеты для инициализации своего текущего состояния. Обратите внимание, что хост не может запросить устройство для отправки отчета по его прерывистому каналу. Следовательно, запрос на управляющую трубу.

В главе 4.4 объясняется использование различных конечных точек.

Также обратите внимание, что отчеты функций и входные отчеты не адресуют одни и те же данные, даже если они имеют одинаковый идентификатор отчета (идентификаторы отчетов относятся к типу отчета).

Смежные вопросы