Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Вопрос знатокам USB про HID Report Descriptor

Отправлено groovy 18 марта 2009, г. 17:15


Снюхиваю пленку тачскрин со стандартным HID драйвером. Пленка 255 на 255 точек.

Взял из демонстрации для STM32 проект джойстика, переделал формат INPUT на абсолютную позицию, вместо относительной. Длины полей Х и Y по 8 бит

Позиция шлется, курсор скачет, но на тычки в пленку с координатами выше 127 реакции нет. Видимо драйвер воспринимает координаты со знаком.

Увеличиваю длину полей до 16 бит и все перестает работать вообще.
Куда копать в моем случае?

Дескриптор оригинальный, рабочий


const u8 Joystick_ReportDescriptor[JOYSTICK_SIZ_REPORT_DESC] =
{
0x05, /*Usage Page(Generic Desktop)*/
0x01,
0x09, /*Usage(Mouse)*/
0x02,
0xA1, /*Collection(Application)*/
0x01,
0x09, /*Usage(Pointer)*/
0x01,
/* 8 */
0xA1, /*Collection(Linked)*/
0x00,

0x05, /*Usage Page(Buttons)*/
0x09,
0x19, /*Usage Minimum(1)*/
0x01,
0x29, /*Usage Maximum(3)*/
0x03,
/* 16 */
0x15, /*Logical Minimum(0)*/
0x00,
0x25, /*Logical Maximum(1)*/
0x01,
0x95, /*Report Count(3)*/
0x03,
0x75, /*Report Size(1)*/
0x01,
/* 24 */
0x81, /*Input(Data, Variable, Absolute)*/
0x02,
0x95, /*Report Count(1)*/
0x01,
0x75, /*Report Size(5)*/
0x05,
0x81, /*Input(Constant,Array)*/
0x01,
/* 32 */
0x05, /*Usage Page(Generic Desktop)*/
0x01,
0x09, /*Usage(X axis)*/
0x30,
0x09, /*Usage(Y axis)*/
0x31,
0x09, /*Usage(Wheel)*/
0x38,
/* 40 */
0x16, /*Logical Minimum(0)*/
0x00, 0x00,
0x26, /*Logical Maximum(255)*/
0xFF, 0x00,
0x36, /*Physical Minimum (0)*/
0x00, 0x00,
0x46, /*Physical Maximum (255) */
0xFF, 0x00,
0x66, /*UNIT (none) */
0x00, 0x00,
0x95, /*Report Count(2)*/
0x03,
0x75, /*Report Size(8)*/
0x08,
/* 48 */
0x81, /*Input (Data, Variable, Absolute, No Preferred, Null State)*/
0x62,

0xC0, /*End Collection*/
0x09,
0x3c,
0x05,
0xff,
0x09,
/* 56 */
0x01,
0x15,
0x00,
0x25,
0x01,
0x75,
0x01,
0x95,
/* 64 */
0x02,
0xb1,
0x22,
0x75,
0x06,
0x95,
0x01,
0xb1,
/* 72 */
0x01,
0xc0

}
; /* Joystick_ReportDescriptor */


Дескриптор измененный


const u8 Joystick_ReportDescriptor[JOYSTICK_SIZ_REPORT_DESC] =
{
0x05, /*Usage Page(Generic Desktop)*/
0x01,
0x09, /*Usage(Mouse)*/
0x02,
0xA1, /*Collection(Application)*/
0x01,
0x09, /*Usage(Pointer)*/
0x01,
/* 8 */
0xA1, /*Collection(Linked)*/
0x00,

0x05, /*Usage Page(Buttons)*/
0x09,
0x19, /*Usage Minimum(1)*/
0x01,
0x29, /*Usage Maximum(3)*/
0x03,
/* 16 */
0x15, /*Logical Minimum(0)*/
0x00,
0x25, /*Logical Maximum(1)*/
0x01,
0x95, /*Report Count(3)*/
0x03,
0x75, /*Report Size(1)*/
0x01,
/* 24 */
0x81, /*Input(Data, Variable, Absolute)*/
0x02,
0x95, /*Report Count(1)*/
0x01,
0x75, /*Report Size(5)*/
0x05,
0x81, /*Input(Constant,Array)*/
0x01,
/* 32 */
0x05, /*Usage Page(Generic Desktop)*/
0x01,
0x09, /*Usage(X axis)*/
0x30,
0x09, /*Usage(Y axis)*/
0x31,
0x09, /*Usage(Wheel)*/
0x38,
/* 40 */
0x16, /*Logical Minimum(0)*/
0x00, 0x00,
0x26, /*Logical Maximum(255)*/
0xFF, 0x00,
0x36, /*Physical Minimum (0)*/
0x00, 0x00,
0x46, /*Physical Maximum (255) */
0xFF, 0x00,
0x66, /*UNIT (none) */
0x00, 0x00,
0x95, /*Report Count(2)*/
0x03,
0x75, /*Report Size(16)*/
0x10,
/* 48 */
0x81, /*Input (Data, Variable, Absolute, No Preferred, Null State)*/
0x62,

0xC0, /*End Collection*/
0x09,
0x3c,
0x05,
0xff,
0x09,
/* 56 */
0x01,
0x15,
0x00,
0x25,
0x01,
0x75,
0x01,
0x95,
/* 64 */
0x02,
0xb1,
0x22,
0x75,
0x06,
0x95,
0x01,
0xb1,
/* 72 */
0x01,
0xc0

}
; /* Joystick_ReportDescriptor */




Составить ответ | Вернуться на конференцию.

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
прибавьте тройку к двум:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru