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 libusb
to do my work. So if you have any examples, that'll be great help.
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.