usblibusbdfu

What is a Functional Descriptor in USB standards?


I am new to USB and I am trying to develop a library that can do Device Firmware Upgrade in our application.

The DFU Standard http://www.usb.org/developers/docs/devclass_docs/DFU_1.1.pdf talks about Run-Time DFU Functional Descriptor. I understand what Device, configuration, interface and endpoint descriptors are but I don't know what Functional descriptors are. Therefore my questions are:

1. What is a Functional Descriptor?

2. How do I retrieve information about Functional Descriptor?

I am working with libusbto do my work. So if you have any examples, that'll be great help.


Solution

  • 1 - Device, Configuration, Interface, Endpoint are standard descriptors for defining a device and its interfaces. These descriptors contain generic information and can be read by the USB device driver.

    But Functional descriptors are device class specific and its known to only the class drivers. So every class such as CDC, DFU, HID, etc. has their own functional descriptor specific to the class functionalities.

    Functional descriptor describes the class specific contents within interface descriptor. A class specific interface descriptor can have more than one functional descriptor. Functional descriptors have common header format.

    2 - Since functional descriptors are part of class interface descriptor, please read the interface descriptor using libusb API and you will get the functional descriptor too.