USB
Descriptors
One of the most complex things when developing USB is the descriptors. Descriptors are used by a USB Gadgets to inform the USB Host about it's capabilities.
Overall, USB Descriptors is a hierarchy of descriptors organised like this:
A USB device (or gadget) can only have one device descriptor.
When a USB host enumerates a USB device, the device and configuration descriptors are analysed and one configuration is enabled. Only one configuration can be active at any time.
While it _is_ possible for a host to switch configuration on a device offering more than one, it is very rare for devices to offer more than one configuration.