STM32 HID USB

Gast #4709487
Lesenswert?
• ▲
▼
Hallo,

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

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

7

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

11
[c]
12
HID_TypeTypeDef USBH_HID_GetDeviceType(USBH_HandleTypeDef *phost)
13
{
14
  HID_TypeTypeDef   type = HID_UNKNOWN;
15
  
16
  if(phost->gState == HOST_CLASS)
17
  {
18
    
19
    if(phost->device.CfgDesc.Itf_Desc[phost->device.current_interface].bInterfaceProtocol \
20
      == HID_KEYBRD_BOOT_CODE)
21
    {
22
      type = HID_KEYBOARD;  
23
    }
24

25
  }
26
  return type;
27
}

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?
Gast #4709767
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?

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.