Имею отладочную плату от Atmel AT91SAM7S-EK, на которой запустил пример из usbframework usb-device-hid-keyboard-project-1.4-iar5-at91sam7s-ek. Пример вроде работает.
Далее, изменяю пример: из hid-keyboard пытаюсь сделать hid-generic, как это описано в апликейшине "USB HID Driver Implementation". Т.е. изменяю дескриптор репорта, чтобы получить два репорта - IN и OUT, использующие соответственно 2 конечные точки по прерыванию. Плюс изменяю пару функций из HIDDKeyboardDriver, чтобы можно было принимать и передавать данные. Все это работает. Компьютерная программа, используя ReadFile и WriteFile, читает данные из устройства и записывает их туда. А устройство соответственно посылает данные и получает их. Все бы хорошо, но...
Хочется иметь возможность вести прием/передачу не только с помощью ReadFile и WriteFile, но и с помощью GetReport и SetReport. Использование GetReport работает - устройство передает данные, а хост их принимает. Но вот с SetReport большой затык (четвертый день маюсь). Данные устройству посылаются и устройство их принимает, но при этом устройство, видимо, чего-то недосылает, какой-нибудь Ack. Так что вызов SetReport заканчивается ошибкой и выходом по таймауту. Пытался изменять длину репортов от 1 байта и далее, кратно и некратно размеру конечных точек. Результат одинаков.
Кто подробно разбирался во внутренностях usbframework? Куда копать?
|