Index: device/usb/usb_device_impl.cc |
diff --git a/device/usb/usb_device_impl.cc b/device/usb/usb_device_impl.cc |
index 52806996c31f669c923e500b5f542779c41eea5b..1a8bedf1f120c12cc59d7e6ec40230b0756c82df 100644 |
--- a/device/usb/usb_device_impl.cc |
+++ b/device/usb/usb_device_impl.cc |
@@ -94,47 +94,37 @@ UsbUsageType GetUsageType(const libusb_endpoint_descriptor* descriptor) { |
void ConvertConfigDescriptor(const libusb_config_descriptor* platform_config, |
UsbConfigDescriptor* configuration) { |
- configuration->configuration_value = platform_config->bConfigurationValue; |
- configuration->self_powered = (platform_config->bmAttributes & 0x40) != 0; |
- configuration->remote_wakeup = (platform_config->bmAttributes & 0x20) != 0; |
- configuration->maximum_power = platform_config->MaxPower * 2; |
- |
for (size_t i = 0; i < platform_config->bNumInterfaces; ++i) { |
const struct libusb_interface* platform_interface = |
&platform_config->interface[i]; |
for (int j = 0; j < platform_interface->num_altsetting; ++j) { |
const struct libusb_interface_descriptor* platform_alt_setting = |
&platform_interface->altsetting[j]; |
- UsbInterfaceDescriptor interface; |
- |
- interface.interface_number = platform_alt_setting->bInterfaceNumber; |
- interface.alternate_setting = platform_alt_setting->bAlternateSetting; |
- interface.interface_class = platform_alt_setting->bInterfaceClass; |
- interface.interface_subclass = platform_alt_setting->bInterfaceSubClass; |
- interface.interface_protocol = platform_alt_setting->bInterfaceProtocol; |
+ UsbInterfaceDescriptor interface( |
+ platform_alt_setting->bInterfaceNumber, |
+ platform_alt_setting->bAlternateSetting, |
+ platform_alt_setting->bInterfaceClass, |
+ platform_alt_setting->bInterfaceSubClass, |
+ platform_alt_setting->bInterfaceProtocol); |
interface.endpoints.reserve(platform_alt_setting->bNumEndpoints); |
for (size_t k = 0; k < platform_alt_setting->bNumEndpoints; ++k) { |
const struct libusb_endpoint_descriptor* platform_endpoint = |
&platform_alt_setting->endpoint[k]; |
- UsbEndpointDescriptor endpoint; |
- |
- endpoint.address = platform_endpoint->bEndpointAddress; |
- endpoint.direction = GetDirection(platform_endpoint); |
- endpoint.maximum_packet_size = platform_endpoint->wMaxPacketSize; |
- endpoint.synchronization_type = |
- GetSynchronizationType(platform_endpoint); |
- endpoint.transfer_type = GetTransferType(platform_endpoint); |
- endpoint.usage_type = GetUsageType(platform_endpoint); |
- endpoint.polling_interval = platform_endpoint->bInterval; |
- endpoint.extra_data = std::vector<uint8_t>( |
+ UsbEndpointDescriptor endpoint( |
+ platform_endpoint->bEndpointAddress, |
+ GetDirection(platform_endpoint), platform_endpoint->wMaxPacketSize, |
+ GetSynchronizationType(platform_endpoint), |
+ GetTransferType(platform_endpoint), GetUsageType(platform_endpoint), |
+ platform_endpoint->bInterval); |
+ endpoint.extra_data.assign( |
platform_endpoint->extra, |
platform_endpoint->extra + platform_endpoint->extra_length); |
interface.endpoints.push_back(endpoint); |
} |
- interface.extra_data = std::vector<uint8_t>( |
+ interface.extra_data.assign( |
platform_alt_setting->extra, |
platform_alt_setting->extra + platform_alt_setting->extra_length); |
@@ -142,7 +132,7 @@ void ConvertConfigDescriptor(const libusb_config_descriptor* platform_config, |
} |
} |
- configuration->extra_data = std::vector<uint8_t>( |
+ configuration->extra_data.assign( |
platform_config->extra, |
platform_config->extra + platform_config->extra_length); |
} |
@@ -251,7 +241,11 @@ void UsbDeviceImpl::ReadAllConfigurations() { |
continue; |
} |
- UsbConfigDescriptor config_descriptor; |
+ UsbConfigDescriptor config_descriptor( |
+ platform_config->bConfigurationValue, |
+ (platform_config->bmAttributes & 0x40) != 0, |
+ (platform_config->bmAttributes & 0x20) != 0, |
+ platform_config->MaxPower * 2); |
ConvertConfigDescriptor(platform_config, &config_descriptor); |
configurations_.push_back(config_descriptor); |
libusb_free_config_descriptor(platform_config); |