Есть железо на базе AT91RM9200 в котором OHCI USB host.
На выходе UHP AT91RM9200 припаян Хаб TUSB2046B.
На данный момент реализованы управляющие (Control) запросы через OHCI, которыми читаю дескрипторы и управляю портами на выходе хаба.
На первом этапе стоит задача подключить мышь.
При подключении мыши определяем факт подключения, настраиваем поты хаба, делаем сброс порта ну и так далее…
Читаю дескрипторы мыши и ее отчетный дескриптор все получается.
После чего
1) Устанавливаю новый адрес мыши
2) Устанавливаю ее конфигурацию (Set_Configuration)
3) Для проверки читаю конфигурацию все ОК (Get_Configuration)
4) Устанавливаю отчетный протокол (пробовал и загрузочный) (Set_Protocol)
5) Тоже его читаю (Get_Protocol)
6) После чего пытаюсь прочитать отчет, через канал управления мыши и тут ничего не получается
Отчет читаю через специфический запрос HID Get_Report
Сам запрос
Код
bmRequestType = 0xA1
bRequest = 0x01 //GET_REPORT
wValue = 0x0100 //Тип отчета Report ID
wIndex = 0x0000 //интерфейс если установить в 1 то ошибка
wLength = 0x0005 // Length
[/code]
{0xA1,0x01,0x00,0x01,0x00,0x00,0x05,0x00}
В ответ приходит мой Setup пакет и никаких ошибок передачи.
0xA1,0x01,0x00,0x01,0x00 что послал то и вернулось.
Функции для чтения дескрипторов и для отчета одни и те же.
Дескрипторы читаются правильно проверял снифером на ПК, а вот с отчетами не понятно.
Тот порядок настроек, который под цифрами 1-6 это последняя вариация пробовал по разному, как и по разному формировал запрос HID Get_Report.
В результате либо ошибка, а если нет ошибки, то возвращается сам запрос.
Также игрался с настройками периода передачи Set_Idle, но ничего не помогает.
По стандарту данные c устройства HID нужно читать через канал Interrupt IN, но так же можно через канал Control ENDP0.
Подскажите, что я делаю не так?