Forum: Mikrocontroller und Digitale Elektronik USB- Device als Systemgerät(Mouse,Keyboard)


von Markus Stohlert (Gast)


Lesenswert?

Hallo!

Kann mir bitte jemand erklären, wie sich eine Firmware für ein 
USB-Gerät, dass als HID-Mouse von Windows als solche erkannt wird, von 
einem generischen HID-Treiber unterscheidet?
Ich denke, dass dies in einem der Deksriptoren stehen musss, konnte aber 
nicht finden in welchem. Also Konkret (falls meine Annahme stimmt): In 
welchem Deskriptor, gibt welches Feld an, dass es sich um ein 
Systemgerät wie zb. eine Maus handelt?

Danke und Mit freundlichen Grüßen,

Markus Stohlert

von Albert .. (albert-k)


Lesenswert?

Schau dir den HID Deskriptor an. Dieser besteht aus folgenden Teilen:
- HID configuration descriptor
- HID interface descriptor
- HID HID class descriptor
- HID interrupt IN descriptor
- HID interrupt OUT dexriptor
- HID report descriptor

Ein "eindeutiges" Feld lässt sich da nicht geben, es ist die gesamtheit 
entscheidend. Und für Maus/tastatur ist es bsw. vorgeschrieben. Da 
unterscheiden sich in der Regel nur die String Deskriptoren.

von Albert .. (albert-k)


Lesenswert?

Zur Frage wegen Generic USB Driver/Mouse Driver:
Generic bedeutet ja nichts weiter als gewöhnlich/standard. Diese HID 
Driver unterstützen also bloss das einfache austauscchen von reports 
zwischen master und Slave. Für die Maus reicht dies nicht aus, da werden 
weitere Funktionen implementiert (bsw. weitere Endpoints).

von Albert .. (albert-k)


Lesenswert?

Hab mir mal die Deskriptoren meiner USB Maus und tastatur angesehen. 
Dort wird schon im Device Deskriptor über das Feld bDeviceProtocol 
definiert ob es sich um eine Maus oder eine Tastatur handelt. Für eine 
Maus ist es 2 und für eien Tastatur 1.

von Markus Stohlert (Gast)


Lesenswert?

Hallo Albert!

Genau dieses Feld habe ich auch identifiziert. Ich schätze, dass dies 
das ausschlaggebende bei der Enumeration ist! Es gibt dann ja auch noch 
das bInterfaceProtocol, aba dieses ist vermutlich nur wichtig, wenn sich 
ein Interface vom Deviceprotocol unterscheidet?!

Auf alle Fälle schon ein großes Dankeschön für die Beantwortung meiner 
Frage!

Mit freundlichen Grüßen,

Markus Stohlert

von Albert .. (albert-k)


Lesenswert?

Es ist bei HID ja so das du bei einem Device (also der Hardware die du 
vor dir liegen hast) mehrere Interfaces implementieren kannst (bsw. hat 
deine Tastatur noch ein Touchpad oder ein kleines Display eingebaut). So 
kannst du dann jedem Interface ein eigenes Interfaceprotocol zuweisen.

von Markus Stohlert (Gast)


Lesenswert?

Ah, okay! Vielen Dank nochmal!

MFG Markus Stohlert

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.