Hello,
I am a bit confused about how host retrieves information about multiple configurations of a device.
In Device descriptor host gets bNumConfigurations field with the value indicating Number of possible configuration (1, 2 etc.) at current speed.
Then host sends the GetDescriptor command with wValue-HSB set to Configuration Descriptor type and wValue LSB set to the index of the possible configuration.
So, Index = 0 means first (or default) configuration, Index=1 means second configuration etc.
But When Host issues Set_Configuration command, to indicate which configuration to set, it should use the bConfigurationValue which was provided as part of Configuration descriptor.
Also the iConfiguration field in Configuration Descriptor provides index to string descriptor for that configuration.
The index provided in this field should not collide with index numbers provided in iManufacturer, iProduct, iSerialNumber indexes in Device descriptor.
Is that how it goes?
Regards,
NVD