stalko 0 26 ноября, 2012 Опубликовано 26 ноября, 2012 · Жалоба Еще раз всем доброго времени суток! Не подскажет ли кто адекватную программу, дабы проверить форматы дескрипторов, получаемых хостом? Или, возможно, просто идею подаст, в направлении, где искать... Суть проблемы: Делаю композитное HID-устройство. Процессор Xmega128A3U. Начинал делать еще с год назад, но начальник тогда работу приостановил, вот дошло время продолжить... 1 интерфейс - стандартная клавиатура, все работает (2 EP) 2 интерфейс - трекбол, работает в режиме мыша, все работает (1 EP) 3 интерфейс (Generic) - клавиатура со специфичными сканкодами для программы (2 EP) 4 интерфейс (Generic) - набор энкодеров (1EP) Первые два интерфейса запустил, все работает. Включаю третий - все три при энумерации встают с восклицательными знаками. Включаю четвертый (пропустив третий) - два первых работают, но интерфейс стоит с восклицательным знаком. В последнем случае подозреваю, что проблема в дескрипторе репорта (если неправ, поправьте). В первом даже не знаю, на что грешить. На что вообще такое поведение указывает обычно? Я USB раньше не делал, если честно, а тут сразу композит. Проверял с помощью USBlyzer (в дескрипторе конфигурации говорю, что интерфейсов два, но спихиваю все 4 набора дескрипторов). Вроде, все дескрипторы в порядке, передаются нормально... P.S. Есть еще "забавная" фишка: все интерфейсы нормально при энумерации отображают имя забитое в строковом дескрипторе, а вот 2-й упорно хочет на это плевать, хотя код выбора строки единый, по switch-у, номер дескриптора правильный, строка сама есть, все проверил... P.P.S. Понимаю, что многого хочу... но вдруг... :laughing: Забыл добавить: часть кода переделана из Атмеловского фреймворка, с исправлением замеченных мною косяков... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 5 26 ноября, 2012 Опубликовано 26 ноября, 2012 · Жалоба Еще раз всем доброго времени суток! Делаю композитное HID-устройство. ... 1 интерфейс - стандартная клавиатура, все работает (2 EP) 2 интерфейс - трекбол, работает в режиме мыша, все работает (1 EP) 3 интерфейс (Generic) - клавиатура со специфичными сканкодами для программы (2 EP) Пока вообще уберите четвертый интерфейс и добейтесь нормальной работы первых трех. Замечу, что любая USB - клавиатура - это всегда устройство с двумя интерфейсами (других я пока не встречал). Первый интерфейс - сама клавиатура (т.е., основной набор клавиш), а второй - мультимедийные клавиши (неважно, сколько их - одна кнопка "Sleep" или десяток мультимедийных кнопок). К чему я веду: возьмите фабричную клавиатуру, заполучите ее дескрипторы, тем же BuSHound'ом, и посмотрите, как они сделаны ... P.S. А зачем клавиатуре по две EP на интерфейс ? Никогда такого не видел. По одной EP Interrupt In на интерфейс и управление всей клавиатурой через Control EP0 ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stalko 0 26 ноября, 2012 Опубликовано 26 ноября, 2012 · Жалоба Пока вообще уберите четвертый интерфейс и добейтесь нормальной работы первых трех. Так у меня сейчас два последних убраны. Как раз и пытаюсь приживить третий... Ну, ради интереса разик попробовал запустить сразу 4-й, без третьего... Замечу, что любая USB - клавиатура - это всегда устройство с двумя интерфейсами (других я пока не встречал). Первый интерфейс - сама клавиатура (т.е., основной набор клавиш), а второй - мультимедийные клавиши (неважно, сколько их - одна кнопка "Sleep" или десяток мультимедийных кнопок). Давно, когда еще начинал делать год назад брал, смотрел. Но, в принципе, да, надо заново глянуть, мож свежим взглядом что увижу. Спасибо за идею. К чему я веду: возьмите фабричную клавиатуру, заполучите ее дескрипторы, тем же BuSHound'ом, Оп-па! Новое слово!! Это какой-то очередной сниффер USB? и посмотрите, как они сделаны ... Да прямо сейчас на ноуте и гляну, в файлик сгоню, а завтра на работе проанализирую... P.S. А зачем клавиатуре по две EP на интерфейс ? Никогда такого не видел. По одной EP Interrupt In на интерфейс и управление всей клавиатурой через Control EP0 ... Out для управления светодиодами (CapsLock, NumLock и т.д.)... Кстати, та клава, что я смотрел когда-то, тоже так была сделана, вроде... Хотя, могу уже и ошибаться... Да и среди примеров репорт-дескриптора (они меня в замешательство приводят, если честно) для клавы не видел ни одного с фичами в описании (я не путаю, что именно они нужны для прогона данных через EP0?). Реально, когда год назад начинал делать прогу, начитался по теме, а потом за год почти работы над другими изделиями все выветрилось, и сейчас смотрю на собственную программу как Чебурашка... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 5 26 ноября, 2012 Опубликовано 26 ноября, 2012 · Жалоба Оп-па! Новое слово!! Это какой-то очередной сниффер USB? Out для управления светодиодами (CapsLock, NumLock и т.д.)... BusHound - это такая программа - сниффер. Interrupt Out для управления светодиодами ? А зачем ? В обычных клавиатурах это всегда делается через управляющие передачи по EP0 ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stalko 0 26 ноября, 2012 Опубликовано 26 ноября, 2012 · Жалоба BusHound - это такая программа - сниффер. Скачал, попробую. Снуппи мне не понравился, глючноват... Сейчас пользуюсь USBlyzer-ом, вроде приятно, но вдруг эта лучше будет... Interrupt Out для управления светодиодами ? А зачем ? В обычных клавиатурах это всегда делается через управляющие передачи по EP0 ... Так получилось Работает, и ладно (когда все заработает, тогда и поправлю) P.S. Вижу, Вы в USB не новичек, если несложно разрешите мои сомнения... Правильно ли я понимаю, что для такой клавы (3-й интерфейс) я могу заявиться в дескрипторе репорта USAGE как клавиатура, а USAGE_PAGE как Vendor Defined, чтоб винда не пыталась обрабатывать нажатия ее кнопок, а отдавала их на растерзание пользовательской программе. Кстати, для 3-го интерфейса EP0 вероятно не покатит, там аж 11 байт управления светодиодами... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stalko 0 26 ноября, 2012 Опубликовано 26 ноября, 2012 · Жалоба BusHound - это такая программа - сниффер. Посмотрел... действительно, непохожая на другие снифферы программа... Завтра на работе опробую в "боевых условиях". Хотя, если честно, еще не до конца ее понял. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 5 27 ноября, 2012 Опубликовано 27 ноября, 2012 · Жалоба Правильно ли я понимаю, что для такой клавы (3-й интерфейс) я могу заявиться в дескрипторе репорта USAGE как клавиатура, а USAGE_PAGE как Vendor Defined, чтоб винда не пыталась обрабатывать нажатия ее кнопок, а отдавала их на растерзание пользовательской программе. Не подскажу, т.к. я сам дескрипторы Report'ов не формировал, а использовал готовые ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kirmarina 0 1 марта, 2013 Опубликовано 1 марта, 2013 · Жалоба вопрос вдогонку. Как уважаемый stalko описывал hid-репорты для своих нескольких интерфейсов?. очень хочется глянуть... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
stalko 0 4 марта, 2013 Опубликовано 4 марта, 2013 · Жалоба вопрос вдогонку. Как уважаемый stalko описывал hid-репорты для своих нескольких интерфейсов?. очень хочется глянуть... Вам полностью содержание полей дескрипторов, или просто сам порядок дескрипторов интересен? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться