реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Куда же USB-хост шлет репорты?!
Chestor
сообщение Aug 30 2011, 13:08
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 23-11-10
Пользователь №: 61 098



Добрый день...
Исследую эмулятор клавиатуры из примеров ATMEL для AT91SAM9G45 (работаю в IAR).

ПРИМЕР ATMEL: показывает клавиатуру с двумя эндпоинтами (кроме нулевой) IN и OUT.
IN посылает статусы с нажатыми клавишами, а OUT принимает состояние светодиодов и устанавливает их.
Для описания репортов обмена испрользуется один дескриптор-репорта.

Попробовал впихнуть дескрипторы от реальной клавиатуры для исследования, как оно устроено...
РЕАЛЬНАЯ КЛАВА: содержит одну конечную точку OUT, и шлет через нее статусы с нажатыми клавишами. Установка состояния светодиодов при этом осуществляется через 0-точку. Описание репортов находится в одном дескрипторе репорта.

ДЕСКРИПТОРЫ РЕАЛЬНОЙ КЛАВЫ НА ПРОЦЕ:
переношу их 1-в-1 в мой проц... "клавиатура" обнаруживается, шлет все эти дескрипторы (проверял снифером), даже правильно посылает статусы с нажатыми клавишами!! НО не принимает (почти) статусы светодиодов!...
Почему "почти"?... потому что принимает, но только те, которые после включения и определения устройстве в винде отсылаются на нулевую точку... дальнейшие поползновения с отправкой статусов светодиодов ни к чему не приводят... =(

НЕПОНЯТКИ: Думаю, хост шлет репорты не туда... =( Но не могу понять, откуда хост берет информацию о том, на какую конечную точку слать репорты???!!... Может, я где-то чего-то упустил при переносе дескрипторов?!...

ПРИМЕЧАНИЯ: при впихивании клавиатурных дескрипторов в проц я оставил дескриптор репорта тем, который был в процессоре (чтобы не переделывать обработку нажатых клавиш). при этом, конечно же, не забыв поменять соответствующее поле длины дескриптора репорта в HID-дескрипторе.
...для любителей отвечать "читай usb.org": читал, но не нашел. Если подскажете более точно, где натий, то спасибо.

Спасибо за ответы!
Go to the top of the page
 
+Quote Post
galjoen
сообщение Aug 30 2011, 15:05
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(Chestor @ Aug 30 2011, 17:08) *
РЕАЛЬНАЯ КЛАВА: содержит одну конечную точку OUT, и шлет через нее статусы с нажатыми клавишами.

Реальная клава обязательно содержит конечную точку IN, и через InterruptIn шлёт клавиши, а вот OUT ни разу не видел. Краем уха слышал, что с InterruptOut в винде какая то проблема, но сам с ним дело не имел. Да и не представляю для чего это может понадобится - через 0-ю EP работать куда лучше.
Go to the top of the page
 
+Quote Post
Chestor
сообщение Aug 31 2011, 07:43
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 23-11-10
Пользователь №: 61 098



Цитата(galjoen @ Aug 30 2011, 19:05) *
...через 0-ю EP работать куда лучше.

Ок, Понял... но у меня проблема в том, что БЕЗ EndPoint2 мой макет не работет!!! Я бы и рад работать через нулевую конечную тоску, но как??!!
Go to the top of the page
 
+Quote Post
galjoen
сообщение Aug 31 2011, 08:03
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(Chestor @ Aug 31 2011, 11:43) *
Я бы и рад работать через нулевую конечную тоску, но как??!!

Если InterruptOut EP не описывать, то через SET_REPORT в EP 0 от компа данные в HID пойдут. Причём, у какой то винды, в любом случае только через EP 0 данные идут (встречался), поэтому, даже если InterruptOut EP есть, то приём этих данных через EP 0 всё равно писать нужно (только разбор заголовка 8 байт добавляется, а сами данные те же), чтобы и так и сяк работало.
Лучше всего сниффером посмотреть какие пакеты от хоста в EP 0 идут - там всё понятно будет.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th June 2025 - 13:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.01366 секунд с 7
ELECTRONIX ©2004-2016