Как не учитывать ограничение USB-опроса? - PullRequest
0 голосов
/ 16 февраля 2019

У меня есть USB-устройство, соответствующий дескриптор конечной точки которого объявляет bInterval, что слишком высоко для моего использования этого периферийного устройства.У меня есть основания полагать, что он может обрабатывать более высокую частоту, в отличие от того, что он объявляет.

Он имеет bDeviceClass 0 и bInterfaceClass 3 на своем единственном интерфейсе, что означает, что он HID.

Я бы хотел иметь возможность запросить это устройство с помощью libusb.Для этого сейчас привязываю к этому устройству драйвер WinUSB.Но вызов передачи прерывания с помощью libusb задерживает отправку (к устройству) запроса на предыдущее время отправления запроса, плюс минимальный период опроса, указанный устройством.

Например, если устройство было FullSpeedи мой bInterval был 10, а запрос остался на X=0,073s;мой следующий запрос оставлял бы в X+10*1ms=0,083s несмотря на вызов функции libusb, скажем, в 0,076s.Задержка вызвана драйвером и происходит, когда запрос уходит.

Как не учитывать интервал опроса?

Я совершенно новичок в периферийных USB-устройствах, и все, что я нахожу в Интернете, кажется конкретнымМыши / клавиатуры или Linux.Нужно ли мне писать свой собственный драйвер?Целиком?Могу ли я изменить часть обработки интервалов ранее существовавшего драйвера WinUSB - без понимания всей глубины спецификации USB?Есть ли альтернативы написанию драйвера?

Неуниверсальная информация: в данном конкретном случае у меня Windows 10, устройство FullSpeed, bInterval равно 8, я запрашиваю вход (устройство> host) - конечная точка прерывания, и я использую WinUSB v6.1.7600.16385.

Это следует из моего предыдущего вопроса, Как применяется bIntervals периферийных устройств USB? , но разные вопросы должны храниться отдельно.

...