6

I'd like to deconstruct the raw reports received from the hid_read function of hidapi.

As I understand, this can be achieved using the information from the device's report descriptors. But when trying to query for those descriptors, I get lost somewhere between the HID Spec and using the methods available in hidapi.

I would love to see a concrete C or node-hidapi based example that queries and enumerates all the report descriptors for a device — perhaps a mouse to keep things simple?

Shane Holloway
  • 7,550
  • 4
  • 29
  • 37

3 Answers3

7

I asked Alan Ott by email about this, and he responded with no as follows:

HIDAPI does not provide functions for getting or parsing the report descriptor. Since HIDAPI is for talking to a custom devices, these devices will likely contain all or mostly vendor-defined report items anyway.

Shane Holloway
  • 7,550
  • 4
  • 29
  • 37
  • Thanks, this was not really apparent from their docs! I had spend a lot of time trying to understand what is going on =) – user10607 Dec 12 '16 at 20:25
3

This isn't exactly what you're looking for, but it will get the same job done. I highly recommend you use libusbx over any other hid library. If you are willing to do so, here is a very blatant example of device enumeration.

Edit:

It appears that libusbx has been merged back into libusb. This is awesome! As the above link is broken, here is the new link.

eatonphil
  • 13,115
  • 27
  • 76
  • 133
1

I had success with using both https://github.com/Orochimarufan/HIDRAW/tree/master/HIDRAW_test (that is hopefully the C code example that you asked about) and RDD! USB HID Report Descriptor Decoder for more descriptive output.

L.R.
  • 977
  • 6
  • 22