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

 
 
> Проблема с hid-устройством, не приходят input_reports
mempfis_
сообщение Jun 27 2006, 16:34
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Заранее большая благодарность всем кто откликнется и даст толковый совет.
Ситуация такая: есть usb-устройство на основе isp1181a, а именно hid-устройство для передачи блока данных размером 1 байт. Устройство проходит энумерацию на шине. Реализован весь протокол пересылки дескрипторов. Проблема в том, что после запроса дескриптора репорта 8106002200005700 нет таких очень важных и необходимых запросов на input-report - т.е. нет возможности передавать данные.
Не понятно, почему идёт запрос 0х57 байт репорта, когда там всего 0х17 байт.Я работаю под WIN2000, под XP такая-же проблема.

Вот весь процесс энумерации на шине, а после неё все мои дескрипторы. Может кто сталкивался с такой-же проблемой - подскажите пожалуйста что нужно делать в этом случае.

000001: Abort Pipe (DOWN), 27.06.2006 18:04:55.7500000 +2.8125000
Pipe Handle: 0x816b94c0

000003: PnP Event: Device Disconnected (UP), 27.06.2006 18:04:55.7500000 +0.0
The USB device has just been removed from the system, all drivers unloaded.

000004: PnP Event: Query ID (UP), 27.06.2006 18:04:55.7500000 +0.0
Hardware IDs: USB\Vid_1131&Pid_8141&Rev_0000, USB\Vid_1131&Pid_8141

000005: PnP Event: Query ID (UP), 27.06.2006 18:04:55.7500000 +0.0
Compatible IDs: USB\Class_03&SubClass_00&Prot_00, USB\Class_03&SubClass_00, USB\Class_03

000006: Get Descriptor Request (DOWN), 27.06.2006 18:04:56.2968750 +0.5468750
Descriptor Type: Device
Descriptor Index: 0x0
Transfer Buffer Size: 0x12 bytes

000007: Control Transfer (UP), 27.06.2006 18:04:56.3593750 +0.0625000
Pipe Handle: 0x81782934

12 01 10 01 00 00 00 40 31 11 41 81 00 00 01 02 03 01 .......@1.A......

Setup Packet

80 06 00 01 00 00 12 00 ?.......

Recipient: Device
Request Type: Standard
Direction: Device->Host
Request: 0x6 (GET_CONFIGURATION)
Value: 0x100
Index: 0x0
Length: 0x12

000008: Get Descriptor Request (DOWN), 27.06.2006 18:04:56.3593750 +0.0
Descriptor Type: Configuration
Descriptor Index: 0x0
Transfer Buffer Size: 0x9 bytes


000009: Control Transfer (UP), 27.06.2006 18:04:56.4375000 +0.0781250
Pipe Handle: 0x81782934

09 02 22 00 01 01 00 C0 00 .."....À.

Setup Packet

80 06 00 02 00 00 09 00 ?.......

Recipient: Device
Request Type: Standard
Direction: Device->Host
Request: 0x6 (GET_CONFIGURATION)
Value: 0x200
Index: 0x0
Length: 0x9

000010: Get Descriptor Request (DOWN), 27.06.2006 18:04:56.4375000 +0.0
Descriptor Type: Configuration
Descriptor Index: 0x0
Transfer Buffer Size: 0x22 bytes


000011: Control Transfer (UP), 27.06.2006 18:04:56.5000000 +0.0625000
Pipe Handle: 0x81782934

09 02 22 00 01 01 00 C0 00 09 04 00 00 01 03 00 00 00 09 21 00 01 00 01 22 17 00 07 05 81 03 08 00 00 .."....À...........!...."........

Setup Packet

80 06 00 02 00 00 22 00 ?.....".

Recipient: Device
Request Type: Standard
Direction: Device->Host
Request: 0x6 (GET_CONFIGURATION)
Value: 0x200
Index: 0x0
Length: 0x22

000012: Select Configuration (DOWN), 27.06.2006 18:04:56.5000000 +0.0
Configuration Index: 1

000013: Select Configuration (UP), 27.06.2006 18:04:56.5625000 +0.0625000
Configuration Index: 1
Configuration Handle: 0xe26e0fa8

000014: Class-Specific Request (DOWN), 27.06.2006 18:04:56.5625000 +0.0
Destination: Inrterface, Index 0
Reserved Bits: 34
Request: 0xa
Value: 0x0
Send 0x0 bytes to the device


000015: Control Transfer (UP), 27.06.2006 18:05:01.6562500 +5.0937500
Pipe Handle: 0x81782934

Setup Packet

21 0A 00 00 00 00 00 00 !.......

Recipient: Inrterface
Request Type: Class
Direction: Host->Device
Request: 0xa (Unknown)
Value: 0x0
Index: 0x0
Length: 0x0


000016: Get Descriptor Request (DOWN), 27.06.2006 18:05:01.6562500 +0.0
Descriptor Type: Unknown
Descriptor Index: 0x0
Transfer Buffer Size: 0x57 bytes


000017: Control Transfer (UP), 27.06.2006 18:05:01.7187500 +0.0625000
Pipe Handle: 0x81782934

06 00 FF 09 01 A1 01 19 01 29 01 15 00 26 FF 00 75 08 95 01 81 02 C0 ..ÿ..¡...)...&ÿ.u.•..À

Setup Packet

81 06 00 22 00 00 57 00 .."..W.

Recipient: Inrterface
Request Type: Standard
Direction: Device->Host
Request: 0x6 (GET_CONFIGURATION)
Value: 0x2200
Index: 0x0
Length: 0x57

000018: PnP Event: Query ID (UP), 27.06.2006 18:05:01.7187500 +0.0
Device ID: USB\Vid_1131&Pid_8141


000019: PnP Event: Query ID (UP), 27.06.2006 18:05:01.7187500 +0.0
Hardware IDs: USB\Vid_1131&Pid_8141&Rev_0000, USB\Vid_1131&Pid_814

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Мои дескрипторы
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;описание стандартных дескрипторов
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;стандартный дескриптор устройства
usb_device_descriptor:
.db 0x12 ;bLength длина дескриптора
.db 0x01 ;bDescriptorType тип дескриптора
.db 0x10 ;bcdUSB версия спецификации USB в формате BCD
.db 0x01 ;
.db 0x00 ;bDeviceClass код класса USB
.db 0x00 ;bDeviceSubClass код подкласса устройства USB
.db 0x00 ;bDeviceProtocol код протокола USB
.db 64 ;bMaxPacketSize мах размер нулевой конечной точки
.db 0x31 ;idVendor идентификатор изготовителя устройства
.db 0x11 ;
.db 0x41 ;idProduct идентификатор продукта
.db 0x81
.db 0x00 ;bcdDevice номер версии устройства в формате BCD
.db 0x00
.db 0x01 ;iManufacturer индекс дескриптора строки описывающей изготовителя
.db 0x02 ;iProduct индекс дескриптора строки описывающей продукт
.db 0x03 ;iSerialNumberиндекс дескриптора строки описывающей серийный номер устройства
.db 0x01 ;bNumConfigurations количество возможных конфигураций устройства


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;стандартный дескриптор конфигурации1
;сразу за ним следует описание дескриптора интерфеса1 и дескрипторы всех конечных точек, входящих в интерфейс1
;описание дескриптора интерфеса2 и дескрипторы всех конечных точек, входящих в интерфейс2
;далее следует опитсание дескриптора конфигурации2
usb_config_descriptor1:
begin_config:
.db 0x09 ; bLength длина дескриптора
.db 0x02 ;bDescriptorType тип дескриптора
.db low(end_config-begin_config) ;wTotalLenth полный размер описания конфигурации включая описание всех интерфейсов и точек
.db high(end_config-begin_config)
.db 0x01 ;bNumInterface кол-во интерфейсов в данной конфигурации
.db 0x01 ;bConfigurationValue номер конфигурации используемый по требованию SET_CONFIGURATION
.db 0x00 ;iConfiguration индекс строки описывающий данную конфигурацию
.db 0b11000000 ;bmAttribute
;битовая маска характеризующая конфигурацию
;D7 - зарезервирован=1
;D6 - признак наличия собственного источника питания
;D5 - признак разрешения сообщения хосту о выходе у-ва из режима сна
;D4-D0 - зарезервированы=0
.db 0x00 ;bMaxPower мах ток потребления от шины для устройств без собственного и-ка питания, кратность едениц 2 ма
end_usb_config_descriptor1:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;описание дескриптора интерфеса10
usb_interf_descriptor10:
.db 0x09 ;bLength длина дескриптора
.db 0x04 ;bDescriptorType тип дескриптора
.db 0x00 ;bInterfaceNumber номер данного интерфейса
.db 0x00 ;bAlternateSetting номер альтернативной установки для данного интерфейса
.db 0x01 ;bNumEndpoints число конечных точек для данного интерфейса без учёта нулевой конечной точки
.db 0x03 ;bInterfaceClass код класса интерфейса 0x03 код HID-устройства
.db 0x00 ;bInterfaceSubClass код класса интерфеса,
.db 0x00 ;bInterfaceProtocol код протокола
.db 0x00 ;iInterface индекс дескриптора строки описывающей интерфейс
;при использовании только конечной точки 0 дескриптор конечной точки не требуется
end_usb_interf_descriptor10:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;описание дескриптора HID-устройства
usb_hid_descriptor:
.db 0x09 ;bLength длина дескриптора
.db 0x21 ;bDescriptorType тип дескриптора
.db 0x00 ;bcdHID версия HID
.db 0x01
.db 0x00 ;bCountryCode числовой код страны для локализированых устройств
.db 0x01 ;bNumDescriptor число дескрипторов репортов
.db 0x22 ;bNumReportType номер дескриптора репорта используемый при вызове Set_Descriptor
.db low(end_report-begin_report) ;wReportLength размер дескриптора репорта
.db high(end_report-begin_report)
;.db 0x00 ;bReportType номер дополнительного дескриптора
;.db 0x00 ;wReportLenth размер дополнительного дескриптора
;.db 0x00
;при использовании только конечной точки 0 дескриптор конечной точки не требуется
end_usb_hid_descriptor:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;описание дескриптора конечной точки входящей в
usb_endpoint_descriptor100:
.db 0x07 ;bLength длина дескриптора
.db 0x05 ;bDescriptorType тип дескриптора
.db 0b10000001 ;bEndpointAddress бит7 0-OUT, 1-IN
;6-4 зарезервировано=0
;3-0 номер конечной точки
.db 0b00000011 ;bmAttributes
;7-6 зарезервировано=0
;5-4 тип использования конечной точки 00-для передачи данных, 01-для явной обратной связи
; 10-для неявной обратной связиб 11-зарезервировано
;3-2 тип синхронизации 00-нет синхронизации, 01-асинхронная, 10-адаптивная, 11-синхронная
;1-0 тип конечной точки 00-канал сообщений, 01-изохронный канал
; 10-канал передачи данных, 11-канал прерываний
.db 0x08 ;wMaxPacketSize мах размер пакета конечной точки
.db 0x00
.db 0x00 ;bInterval интервал опроса конечной точки в мс для кт прерываний
;1 для изохронной кт, для остальных типов кт не имеет значения
end_usb_endpoint_descriptor100:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
end_config:
;окончание описания конфигурации1
;end_usb_config_descriptor1:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;дескриптор рапорта hid-устройства
usb_report_descroptor:
begin_report:
.db 0x06 ;Usage_Page (Generic Desktop)
.db 0x00
.db 0xff

.db 0x09 ;Usage (Vendor Usage 1)
.db 0x01

.db 0xa1 ;Collection (Aplication)
.db 0x01

.db 0x19 ;Usage_Minimum (Vendor Usage 1)
.db 0x01

.db 0x29 ;Usage_Maximum (Vendor Usage 1)
.db 0x01

.db 0x15 ;Logical_Minimum (0)
.db 0x00

.db 0x26 ;Logical_Maximum (255)
.db 0xff
.db 0x00

.db 0x75 ;Report_Size (8)
.db 0x08

.db 0x95 ;Report_Count (1)
.db 0x01

.db 0x81 ;Input (Data, Var, Abs)
.db 0x02

.db 0xc0 ;End_Collection
end_report:
end_usb_report_descroptor:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Go to the top of the page
 
+Quote Post



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

 


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


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