Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2204)

Unified Diff: device/usb/usb_device_impl.cc

Issue 1468423003: Construct USB descriptors over explicit values. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update Android code. Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « device/usb/usb_device_filter_unittest.cc ('k') | device/usb/usb_endpoint_android.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
« no previous file with comments | « device/usb/usb_device_filter_unittest.cc ('k') | device/usb/usb_endpoint_android.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698