mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik STM32 HID USB


Autor: STM32 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hat shconmal jemand von euch mit der HID-USB-Host Library gearbeitet?

In der Funktion GetDeviceType:
if(USBH_HID_GetDeviceType(&hUSBHost) == HID_KEYBOARD)
{
hid_demo.keyboard_state = HID_KEYBOARD_IDLE; 
hid_demo.state = HID_DEMO_KEYBOARD;
[c/]


wird abgefragt, ob ein Keyboard angeschlossen ist.
Öffnet man die Funktion, dann sieht sie wie folgt aus:

[c]
HID_TypeTypeDef USBH_HID_GetDeviceType(USBH_HandleTypeDef *phost)
{
  HID_TypeTypeDef   type = HID_UNKNOWN;
  
  if(phost->gState == HOST_CLASS)
  {
    
    if(phost->device.CfgDesc.Itf_Desc[phost->device.current_interface].bInterfaceProtocol \
      == HID_KEYBRD_BOOT_CODE)
    {
      type = HID_KEYBOARD;  
    }

  }
  return type;
}

Nun frage ich mich an dieser Stelle, wie das Programm offenbar ohne 
Einlesen des Report Deskriptors erkennen kann, dass ein Keyboard 
angeschlossen ist.
Es wird der Protokollcode abgefragt, aber dies ist ja nicht der 
Reportdeskriptor.

Ist das eine Lücke in der Software, oder wird das Feld 
".bInterfaceProtocol" noch an anderer Stelle aus dem Reportdeskriptor 
gefüllt?

Autor: Jim Meba (turboj)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Flascher Deskriptor Typ. Das hier ist der Interface Deskriptor, der hat 
mit dem Report Deskriptor so direkt nix am Hut.
Lies Dich mal in die USB Standard Deskriptor Typen ein.

: Bearbeitet durch User
Autor: STM32 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also, das ist doch das Problem.

Im Interfacedeskriptor ist die Kombination des 6., 7. und 8. Byte die

Interface Class
Interface SubClass
Interface Protocol


Für HID also:
Interface Class = 0x03
Interface SubClass wird sich ausgeschwiegen
Interface Protocol wird sich ausgeschwiegen


Aus dem Vergleich einer Mausanmeldung und einer Tastaturanmeldung kann 
man schließen, dass
Interface Protocol = 1 = Tastatur
Interface Protocol = 2 = Maus

gilt.
Wo aber finde ich das in den USB Dokumentationen?

Autor: Clemens L. (c_l)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
STM32 schrieb im Beitrag #4709767:
> Wo aber finde ich das in den USB Dokumentationen?

Device Class Definition for Human Interface Devices (HID) Version 1.11, 
Abschnitte 4.2 und 4.3.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.