struct libusb_config_descriptor

Overview

A structure representing the standard USB configuration descriptor. Moreā€¦

#include <libusb.h>

struct libusb_config_descriptor {
    // fields

    uint8_t bLength;
    uint8_t bDescriptorType;
    uint16_t wTotalLength;
    uint8_t bNumInterfaces;
    uint8_t bConfigurationValue;
    uint8_t iConfiguration;
    uint8_t bmAttributes;
    uint8_t MaxPower;
    const struct libusb_interface* interface;
    const unsigned char* extra;
    int extra_length;
};

Detailed Documentation

A structure representing the standard USB configuration descriptor.

This descriptor is documented in section 9.6.3 of the USB 3.0 specification. All multiple-byte fields are represented in host-endian format.

Fields

uint8_t bLength

Size of this descriptor (in bytes)

uint8_t bDescriptorType

Descriptor type.

Will have value libusb_descriptor_type::LIBUSB_DT_CONFIG LIBUSB_DT_CONFIG in this context.

uint16_t wTotalLength

Total length of data returned for this configuration.

uint8_t bNumInterfaces

Number of interfaces supported by this configuration.

uint8_t bConfigurationValue

Identifier value for this configuration.

uint8_t iConfiguration

Index of string descriptor describing this configuration.

uint8_t bmAttributes

Configuration characteristics.

uint8_t MaxPower

Maximum power consumption of the USB device from this bus in this configuration when the device is fully operation.

Expressed in units of 2 mA when the device is operating in high-speed mode and in units of 8 mA when the device is operating in super-speed mode.

const struct libusb_interface* interface

Array of interfaces supported by this configuration.

The length of this array is determined by the bNumInterfaces field.

const unsigned char* extra

Extra descriptors.

If libusb encounters unknown configuration descriptors, it will store them here, should you wish to parse them.

int extra_length

Length of the extra descriptors, in bytes.