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.
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.
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.