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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Работа с радиомышкой в МХ6, Куда копать - без понятия..
mantech
сообщение Aug 11 2015, 14:15
Сообщение #1


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Приветствую.
Всю башку сломал по поводу этих композитных устройств, будь они не ладны!
Вообщем суть вопроса такая - есть обычная проводная мышь, у которой 1 интерфейс-дескриптор, все работает норм, а есть радио, у которой их 2, причем первый, с которым работает моя прога - клавиатура, а мышь - следующий.

В драйвере усб этого камня, есть список, в котором считывается конфиг. дескр., затем интерфейс 1, хид1, контр. точка1, затем интерфейс 2, хид2, контр. точка2, и тд., если есть еще. Вопрос, как заставить прогу поллить не 1, а второй интерфейс? В драйвере от фрискейла только магические цифры...Может кто в курсе?? Хотя, о чем я спрашиваю - в тренде же линукс-онли rolleyes.gif
Go to the top of the page
 
+Quote Post
prottoss
сообщение Aug 11 2015, 17:01
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(mantech @ Aug 11 2015, 20:15) *
В драйвере усб этого камня, есть список, в котором считывается конфиг. дескр., затем интерфейс 1, хид1, контр. точка1, затем интерфейс 2, хид2, контр. точка2, и тд., если есть еще. Вопрос, как заставить прогу поллить не 1, а второй интерфейс? В драйвере от фрискейла только магические цифры...Может кто в курсе?? Хотя, о чем я спрашиваю - в тренде же линукс-онли rolleyes.gif
Если Вы про Win32 спрашиваете, то Вам нужно:
1. Провести перечисление USB устройств с целью поиска искомого устройства с помощью функций Windows Setup API
2. Если устройтсво имеет несколько интерфейсов то выбрать нужный.
3. Работать с помощью Create/Read/Write File


--------------------
Go to the top of the page
 
+Quote Post
mantech
сообщение Aug 11 2015, 17:14
Сообщение #3


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(prottoss @ Aug 11 2015, 20:01) *
Если Вы про Win32 спрашиваете, то Вам нужно:


Еслиб про винду, так там уже давно все понятно, нет, это контроллер кортекс А9
Go to the top of the page
 
+Quote Post
mantech
сообщение Aug 12 2015, 08:56
Сообщение #4


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(mantech @ Aug 11 2015, 20:14) *
Еслиб про винду, так там уже давно все понятно, нет, это контроллер кортекс А9

Вообщем, вот пример запроса на задание конфигурации:

usbhSetupCommand[0] = 0x00000900 | ((0x7F & config_value) <<16);
usbhSetupCommand[1] = 0x00000000;

usb_qtd1 = usbh_qtd_init(0x8, 0, SETUP_PID, usbhSetupCommand);
usb_qtd2 = usbh_qtd_init(0x0, 1, IN_PID, 0);

Тут идет передача от хоста к уст-ву, приема нет, вопрос, что за магические цифры?

То, что понял - 0x00000900 - от мл к ст...00-запрос SET, 09-Set Config, остальное - хз.
Второе - 0x00000000 - первые 2 байта - хз, 3й- длина ответа уст-ва(0) - нет ответа, 4й тоже непонятно что...

Может кто разбирался с этими запросами, у Агурова все мутно очень wacko.gif
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 12 2015, 09:09
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(mantech @ Aug 12 2015, 11:56) *
Тут идет передача от хоста к уст-ву, приема нет, вопрос, что за магические цифры?

Обычный запрос SET_CONFIGURATION:
mRequestType = 00000000B
bRequest = SET_CONFIGURATION (9)
wValue = config_value
wIndex = Zero
wLength = Zero
Data = None
Go to the top of the page
 
+Quote Post
mantech
сообщение Aug 12 2015, 10:37
Сообщение #6


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(aaarrr @ Aug 12 2015, 12:09) *
Обычный запрос SET_CONFIGURATION:


Ну это я понимаю, что обычный, вопрос в том, где можео узнать, что за поля в запросе и что они означают, без воды и мутностей?
ЗЫ. И второе, если вы в курсе, как заставить уст-во работать не с 1, а вторым интерфейсом. Я догадываюсь, что есть запрос на переключение или добавление считывания данных для моей ситуации, но пока знаний не хватает...

Сообщение отредактировал mantech - Aug 12 2015, 10:40
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 12 2015, 10:51
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(mantech @ Aug 12 2015, 13:37) *
Ну это я понимаю, что обычный, вопрос в том, где можео узнать, что за поля в запросе и что они означают, без воды и мутностей?

В спецификации USB.

Цитата(mantech @ Aug 12 2015, 13:37) *
ЗЫ. И второе, если вы в курсе, как заставить уст-во работать не с 1, а вторым интерфейсом. Я догадываюсь, что есть запрос на переключение или добавление считывания данных для моей ситуации, но пока знаний не хватает...

Вам просто нужно работать с конечными точками второго интерфейса, каких-либо дополнительных действий не требуется.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Aug 12 2015, 11:00
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата
Вам просто нужно работать с конечными точками второго интерфейса, каких-либо дополнительных действий не требуется.

как так не требуется? А команда Set Configuration к чему? в которой wValue как раз выбирает конфигурацию? и команда Set Interface 1B wValue - Alternate setting, wIndex - Interface

Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 12 2015, 11:25
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Golikov A. @ Aug 12 2015, 14:00) *
как так не требуется? А команда Set Configuration к чему? в которой wValue как раз выбирает конфигурацию? и команда Set Interface 1B wValue - Alternate setting, wIndex - Interface

И? Сколько у рассматриваемой мышки конфигураций? А есть ли alternate settings у интерфейсов?
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Aug 12 2015, 11:45
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



А мне то откуда знатьsm.gif беспроводная мышь, которая еще в придачу и клавиатура... всяко бывает, это автору виднее, мы же дескрипторы то не читали...
Go to the top of the page
 
+Quote Post
kovigor
сообщение Aug 12 2015, 11:49
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Golikov A. @ Aug 12 2015, 14:45) *
А мне то откуда знатьsm.gif беспроводная мышь, которая еще в придачу и клавиатура... всяко бывает, это автору виднее, мы же дескрипторы то не читали...

Почти наверняка это самое обычное устройство с одной конфигурацией и двумя интерфейсами ...
Go to the top of the page
 
+Quote Post
mantech
сообщение Aug 12 2015, 12:03
Сообщение #12


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(kovigor @ Aug 12 2015, 14:49) *
Почти наверняка это самое обычное устройство с одной конфигурацией и двумя интерфейсами ...


Вот это что, да обычная радиомышка defender biggrin.gif

CODE
Device Descriptor 2.4G Keyboard Mouse
Offset Field Size Value Description
0 bLength 1 12h
1 bDescriptorType 1 01h Device
2 bcdUSB 2 0110h USB Spec 1.1
4 bDeviceClass 1 00h Class info in Ifc Descriptors
5 bDeviceSubClass 1 00h
6 bDeviceProtocol 1 00h
7 bMaxPacketSize0 1 08h 8 bytes
8 idVendor 2 062Ah Creative Labs
10 idProduct 2 4127h
12 bcdDevice 2 0210h 2.10
14 iManufacturer 1 01h "MOSART Semi."
15 iProduct 1 02h "2.4G Keyboard Mouse"
16 iSerialNumber 1 00h
17 bNumConfigurations 1 01h

Configuration Descriptor 1 Bus Powered, 100 mA
Offset Field Size Value Description
0 bLength 1 09h
1 bDescriptorType 1 02h Configuration
2 wTotalLength 2 003Bh
4 bNumInterfaces 1 02h
5 bConfigurationValue 1 01h
6 iConfiguration 1 00h
7 bmAttributes 1 A0h Bus Powered, Remote Wakeup
4..0: Reserved ...00000
5: Remote Wakeup ..1..... Yes
6: Self Powered .0...... No, Bus Powered
7: Reserved (set to one)
(bus-powered for 1.0) 1.......
8 bMaxPower 1 32h 100 mA

Interface Descriptor 0/0 HID, 1 Endpoint
Offset Field Size Value Description
0 bLength 1 09h
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 00h
3 bAlternateSetting 1 00h
4 bNumEndpoints 1 01h
5 bInterfaceClass 1 03h HID
6 bInterfaceSubClass 1 01h Boot Interface
7 bInterfaceProtocol 1 01h Keyboard
8 iInterface 1 00h

HID Descriptor
Offset Field Size Value Description
0 bLength 1 09h
1 bDescriptorType 1 21h HID
2 bcdHID 2 0110h 1.10
4 bCountryCode 1 00h
5 bNumDescriptors 1 01h
6 bDescriptorType 1 22h Report
7 wDescriptorLength 2 0041h 65 bytes

Endpoint Descriptor 81 1 In, Interrupt, 10 ms
Offset Field Size Value Description
0 bLength 1 07h
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 81h 1 In
3 bmAttributes 1 03h Interrupt
1..0: Transfer Type ......11 Interrupt
7..2: Reserved 000000..
4 wMaxPacketSize 2 0008h 8 bytes
6 bInterval 1 0Ah 10 ms

Interface Descriptor 1/0 HID, 1 Endpoint
Offset Field Size Value Description
0 bLength 1 09h
1 bDescriptorType 1 04h Interface
2 bInterfaceNumber 1 01h
3 bAlternateSetting 1 00h
4 bNumEndpoints 1 01h
5 bInterfaceClass 1 03h HID
6 bInterfaceSubClass 1 01h Boot Interface
7 bInterfaceProtocol 1 02h Mouse
8 iInterface 1 00h

HID Descriptor
Offset Field Size Value Description
0 bLength 1 09h
1 bDescriptorType 1 21h HID
2 bcdHID 2 0110h 1.10
4 bCountryCode 1 00h
5 bNumDescriptors 1 01h
6 bDescriptorType 1 22h Report
7 wDescriptorLength 2 00A8h 168 bytes

Endpoint Descriptor 82 2 In, Interrupt, 4 ms
Offset Field Size Value Description
0 bLength 1 07h
1 bDescriptorType 1 05h Endpoint
2 bEndpointAddress 1 82h 2 In
3 bmAttributes 1 03h Interrupt
1..0: Transfer Type ......11 Interrupt
7..2: Reserved 000000..
4 wMaxPacketSize 2 0007h 7 bytes
6 bInterval 1 04h 4 ms

Interface 0 HID Report Descriptor Keyboard
Item Tag (Value) Raw Data
Usage Page (Generic Desktop) 05 01
Usage (Keyboard) 09 06
Collection (Application) A1 01
Usage Page (Keyboard/Keypad) 05 07
Usage Minimum (Keyboard Left Control) 19 E0
Usage Maximum (Keyboard Right GUI) 29 E7
Logical Minimum (0) 15 00
Logical Maximum (1) 25 01
Report Size (1) 75 01
Report Count (8) 95 08
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Report Size (8) 75 08
Report Count (1) 95 01
Input (Cnst,Ary,Abs) 81 01
Report Size (1) 75 01
Report Count (3) 95 03
Usage Page (LEDs) 05 08
Usage Minimum (Num Lock) 19 01
Usage Maximum (Scroll Lock) 29 03
Output (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) 91 02
Report Size (1) 75 01
Report Count (5) 95 05
Output (Cnst,Ary,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) 91 01
Report Size (8) 75 08
Report Count (6) 95 06
Logical Minimum (0) 15 00
Logical Maximum (255) 26 FF 00
Usage Page (Keyboard/Keypad) 05 07
Usage Minimum (Undefined) 19 00
Usage Maximum 2A FF 00
Input (Data,Ary,Abs) 81 00
End Collection C0

Interface 1 HID Report Descriptor Mouse
Item Tag (Value) Raw Data
Usage Page (Generic Desktop) 05 01
Usage (Mouse) 09 02
Collection (Application) A1 01
Report ID (3) 85 03
Usage (Pointer) 09 01
Collection (Physical) A1 00
Usage Page (Button) 05 09
Usage Minimum (Button 1) 19 01
Usage Maximum (Button 5) 29 05
Logical Minimum (0) 15 00
Logical Maximum (1) 25 01
Report Size (1) 75 01
Report Count (5) 95 05
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Report Size (3) 75 03
Report Count (1) 95 01
Input (Cnst,Ary,Abs) 81 01
Usage Page (Generic Desktop) 05 01
Usage (X) 09 30
Usage (Y) 09 31
Logical Minimum (-2047) 16 01 F8
Logical Maximum (2047) 26 FF 07
Report Size (12) 75 0C
Report Count (2) 95 02
Input (Data,Var,Rel,NWrp,Lin,Pref,NNul,Bit) 81 06
Usage (Wheel) 09 38
Logical Minimum (-127) 15 81
Logical Maximum (127) 25 7F
Report Size (8) 75 08
Report Count (1) 95 01
Input (Data,Var,Rel,NWrp,Lin,Pref,NNul,Bit) 81 06
End Collection C0
Usage Page (Consumer Devices) 05 0C
Logical Minimum (-127) 15 81
Logical Maximum (127) 25 7F
Report Size (8) 75 08
Report Count (1) 95 01
Usage (AC Pan) 0A 38 02
Input (Data,Var,Rel,NWrp,Lin,Pref,NNul,Bit) 81 06
End Collection C0
Usage Page (Consumer Devices) 05 0C
Usage (Consumer Control) 09 01
Collection (Application) A1 01
Report ID (1) 85 01
Usage Minimum (Undefined) 19 00
Usage Maximum 2A 80 03
Logical Minimum (0) 15 00
Logical Maximum (896) 26 80 03
Report Size (16) 75 10
Report Count (1) 95 01
Input (Data,Ary,Abs) 81 00
End Collection C0
Usage Page (Generic Desktop) 05 01
Usage (System Control) 09 80
Collection (Application) A1 01
Report ID (2) 85 02
Usage Minimum (System Power Down) 19 81
Usage Maximum (System Wake Up) 29 83
Logical Maximum (1) 25 01
Report Size (1) 75 01
Report Count (3) 95 03
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
Report Count (5) 95 05
Input (Cnst,Ary,Abs) 81 01
End Collection C0
Usage Page 06 F2 F1
Usage 0A F2 F1
Collection (Application) A1 01
Report ID (5) 85 05
Usage 09 00
Report Count (6) 95 06
Report Size (8) 75 08
Logical Minimum (0) 15 00
Logical Maximum (255) 26 FF 00
Output (Data,Var,Abs,NWrp,Lin,Pref,NNul,NVol,Bit) 91 02
Usage 09 00
Report Count (5) 95 05
Report Size (8) 75 08
Logical Minimum (0) 15 00
Logical Maximum (255) 26 FF 00
Input (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02
End Collection C0


Цитата(mantech @ Aug 12 2015, 14:58) *
1


Как видите, Interface Descriptor 0 - это клавиатура, с чем и пытается работать моя прога безуспешно, а
Interface Descriptor 1 - это мышь, вот к ней надо "достучаться"...

Цитата(Golikov A. @ Aug 12 2015, 14:00) *
как так не требуется? А команда Set Configuration к чему? в которой wValue как раз выбирает конфигурацию? и команда Set Interface 1B wValue - Alternate setting, wIndex - Interface


Ну вот это я и хочу узнать, например - wValue - это что за поле, в каком месте из 8 байт запроса оно распологается? И остальные..
Go to the top of the page
 
+Quote Post
kovigor
сообщение Aug 12 2015, 12:05
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(mantech @ Aug 12 2015, 15:03) *
Ну вот это я и хочу узнать, например - wValue - это что за поле, в каком месте из 8 байт запроса оно распологается? И остальные..

Книжку Гука посмотрите, там все это расписано:
http://www.twirpx.com/file/97618/
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Aug 12 2015, 12:12
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата
Ну вот это я и хочу узнать, например - wValue - это что за поле, в каком месте из 8 байт запроса оно распологается? И остальные..

ну так это не к процессору же... Это к стандарту USB надо обращаться, посмотрите где то он тут был... Там расписаны и команды и структуры и какое поле чего значит.
Оно для того и было сделано USB, чтобы от реализаций не зависеть.
Go to the top of the page
 
+Quote Post
mantech
сообщение Aug 12 2015, 12:25
Сообщение #15


Гуру
******

Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143



Цитата(Golikov A. @ Aug 12 2015, 15:12) *
ну так это не к процессору же... Это к стандарту USB надо обращаться,


Это я понимаю, просто вдруг у кого есть кусочек кода для инициализации 2х или более интерфейсных девайсов...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 08:29
Рейтинг@Mail.ru


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