getConfiguration method
Implementation
@override
Future<UsbConfiguration> getConfiguration(int index) async {
assert(_devHandle != null, 'Device not open');
var configDescPtrPtr = ffi.calloc<Pointer<libusb_config_descriptor>>();
try {
var device = _libusb.libusb_get_device(_devHandle!);
var getConfigDesc =
_libusb.libusb_get_config_descriptor(device, index, configDescPtrPtr);
if (getConfigDesc != libusb_error.LIBUSB_SUCCESS) {
throw 'getConfigDesc error: ${_libusb.describeError(getConfigDesc)}';
}
var configDescPtr = configDescPtrPtr.value;
var usbConfiguration = UsbConfiguration(
id: configDescPtr.ref.bConfigurationValue,
index: configDescPtr.ref.iConfiguration,
interfaces: _iterateInterface(
configDescPtr.ref.interface_1, configDescPtr.ref.bNumInterfaces)
.toList(),
);
_libusb.libusb_free_config_descriptor(configDescPtr);
return usbConfiguration;
} finally {
ffi.calloc.free(configDescPtrPtr);
}
}