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

 
 
> Про HID, GET_REPORT и Interrupt/Bulk transfer, Никак не разберусь...
Kitsok
сообщение Dec 6 2006, 14:04
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 9-11-06
Пользователь №: 22 136



Добрый день!

Итак, имеет место быть HID-джойстик. У него два ендпоинта - Control и Interrupt IN.
Енумерация, понятно, идет по Control. А вот что касается работы, то тот пример, который я использую в качестве базового (из FreeRTOS под SAM7S) при получении прерывания от контроллера USB, делает так:
Код
if( xQueueReceive( xUSBInterruptQueue, &pxMessage, usbSHORT_DELAY ) )
      {
       if( pxMessage->ulISR & AT91C_UDP_EPINT0 )
    {
     /* Process end point 0 interrupt. */
     prvProcessEndPoint0Interrupt( pxMessage );
    }

       if( pxMessage->ulISR & AT91C_UDP_ENDBUSRES )
    {
     /* Process an end of bus reset interrupt. */
     prvResetEndPoints();        
    }
      }
     else
      {
       /* The ISR did not post any data for us to process on the queue, so
      just generate and send some sample data. */
       if( eDriverState == eREADY_TO_SEND )
    {
     prvTransmitSampleValues();
    }
      }


Т.е. асинхронно, по мере возникновения времени на задачу и свободности контроллера, просто шлет репорт с данными через EP1.

Мне это кажется неправильным. По-моему, надо получить GET_REPORT, и в ответ слать уже данные репорта. (прав ли я?)

Но тут просто клинч какой-то. Если бы была только одна точка (EP0), то все понятно - по ней получили GET_REPORT, через нее и отправили. А в случае, если есть специально выделенная Interrupt IN, где GET_REPORT приходит? Или он вообще не приходит и просто Interrupt IN прилетает на EP1?
Направьте пожалуйста, запутался.

Заранее спасибо!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 06:42
Рейтинг@Mail.ru


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