Forum: Mikrocontroller und Digitale Elektronik STM32 HID USB


von STM32 (Gast)


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?

von Jim M. (turboj)


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
von STM32 (Gast)


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?

von Clemens L. (c_l)


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.

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.