Je suis en œuvre un dispositif HID personnalisé qui a l'interface suivante:USB HID différence entre « Obtenir le rapport d'entrée » et « Rapport d'entrée »
0x06, 0xA0, 0xFF, // Usage Page (Vendor Defined 0xFFA0)
0x09, 0x01, // Usage (0x01)
0xA1, 0x01, // Collection (Application)
0x85, 0x01, // Report ID (1)
0x15, 0x00, // Logical Minimum (0)
0x26, 0x01, 0x00, // Logical Maximum (1)
0x75, 0x08, // Report Size (8)
0x95, 0x01, // Report Count (1)
0x91, 0x02, // Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0x85, 0x01, // Report ID (1)
0x15, 0x00, // Logical Minimum (0)
0x26, 0x01, 0x00, // Logical Maximum (1)
0x75, 0x01, // Report Size (1)
0x95, 0x02, // Report Count (2)
0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x75, 0x06, // Report Size (6)
0x95, 0x01, // Report Count (1)
0x81, 0x01, // Input (Const,Array,Abs,No Wrap,Linear,Preferred State,No Null Position)
0x85, 0x03, // Report ID (1)
0x15, 0x00, // Logical Minimum (0)
0x26, 0xFF, 0xFF, // Logical Maximum (65535)
0x75, 0x10, // Report Size (16)
0x95, 0x01, // Report Count (1)
0xB1, 0x02, // Feature (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)
0xC0, // End Collection
Lorsque je branche l'appareil à l'ordinateur par une logique USB analyseur je vois énumèrent, alors quelque chose (je ne sais pas quoi, des idées?) utilise le descripteur caché du rapport de saisir intelligemment un tas de rapports:
(control)(endpoint 0) Get Input Report[1]
(control)(endpoint 0) Get Feature Report[1]
l'entrée « Obtenir le rapport d'entrée » me confondre comme Je pensais que les rapports d'entrée étaient envoyés via un transfert d'interruption. Si j'utilise hid_write de usbhid, je vois l'entrée suivante je dois donc être au moins la moitié droite sur les rapports d'entrée étant envoyés par des transferts d'interruption ...:
(interrupt)(endpoint 1) Input Report[1]"
Je suis incapable de trouver des informations décrivant la différence entre contrôler "obtenir des rapports d'entrée" et d'interrompre les transferts de "rapport d'entrée" dont j'espère que l'un d'entre vous saura.
Pourquoi le contrôle "obtenir des rapports d'entrée" existe-t-il?
Pourquoi ne pas simplement avoir le mandat de spécification d'une entrée "get feature report" existe pour chaque entrée "input report"? Pourquoi est-ce que saisir des rapports d'entrée/de fonction est nécessaire pour chaque rapport d'entrée/fonction défini en utilisant un transfert de contrôle pour les rapports d'entrée par rapport à un transfert d'interruption?