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

Side by Side Diff: chrome/browser/usb/usb_interface.cc

Issue 12471013: Add chrome.usb.listInterfaces API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase of PS10 Created 7 years, 7 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/usb/usb_interface.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/usb/usb_interface.h"
6
7 #include "base/logging.h"
8 #include "third_party/libusb/src/libusb/libusb.h"
9
10 UsbEndpointDescriptor::UsbEndpointDescriptor(
11 scoped_refptr<const UsbConfigDescriptor> config,
12 PlatformUsbEndpointDescriptor descriptor)
13 : config_(config), descriptor_(descriptor) {
14 }
15
16 UsbEndpointDescriptor::~UsbEndpointDescriptor() {}
17
18 int UsbEndpointDescriptor::GetAddress() const {
19 return descriptor_->bEndpointAddress & LIBUSB_ENDPOINT_ADDRESS_MASK;
20 }
21
22 UsbEndpointDirection UsbEndpointDescriptor::GetDirection() const {
23 switch (descriptor_->bEndpointAddress & LIBUSB_ENDPOINT_DIR_MASK) {
24 case LIBUSB_ENDPOINT_IN:
25 return USB_DIRECTION_INBOUND;
26 case LIBUSB_ENDPOINT_OUT:
27 return USB_DIRECTION_OUTBOUND;
28 default:
29 NOTREACHED();
30 return USB_DIRECTION_INBOUND;
31 }
32 }
33
34 int UsbEndpointDescriptor::GetMaximumPacketSize() const {
35 return descriptor_->wMaxPacketSize;
36 }
37
38 UsbSynchronizationType UsbEndpointDescriptor::GetSynchronizationType() const {
39 switch (descriptor_->bmAttributes & LIBUSB_ISO_SYNC_TYPE_MASK) {
40 case LIBUSB_ISO_SYNC_TYPE_NONE:
41 return USB_SYNCHRONIZATION_NONE;
42 case LIBUSB_ISO_SYNC_TYPE_ASYNC:
43 return USB_SYNCHRONIZATION_ASYNCHRONOUS;
44 case LIBUSB_ISO_SYNC_TYPE_ADAPTIVE:
45 return USB_SYNCHRONIZATION_ADAPTIVE;
46 case LIBUSB_ISO_SYNC_TYPE_SYNC:
47 return USB_SYNCHRONIZATION_SYNCHRONOUS;
48 default:
49 NOTREACHED();
50 return USB_SYNCHRONIZATION_NONE;
51 }
52 }
53
54 UsbTransferType UsbEndpointDescriptor::GetTransferType() const {
55 switch (descriptor_->bmAttributes & LIBUSB_TRANSFER_TYPE_MASK) {
56 case LIBUSB_TRANSFER_TYPE_CONTROL:
57 return USB_TRANSFER_CONTROL;
58 case LIBUSB_TRANSFER_TYPE_ISOCHRONOUS:
59 return USB_TRANSFER_ISOCHRONOUS;
60 case LIBUSB_TRANSFER_TYPE_BULK:
61 return USB_TRANSFER_BULK;
62 case LIBUSB_TRANSFER_TYPE_INTERRUPT:
63 return USB_TRANSFER_INTERRUPT;
64 default:
65 NOTREACHED();
66 return USB_TRANSFER_CONTROL;
67 }
68 }
69
70 UsbUsageType UsbEndpointDescriptor::GetUsageType() const {
71 switch (descriptor_->bmAttributes & LIBUSB_ISO_USAGE_TYPE_MASK) {
72 case LIBUSB_ISO_USAGE_TYPE_DATA:
73 return USB_USAGE_DATA;
74 case LIBUSB_ISO_USAGE_TYPE_FEEDBACK:
75 return USB_USAGE_FEEDBACK;
76 case LIBUSB_ISO_USAGE_TYPE_IMPLICIT:
77 return USB_USAGE_EXPLICIT_FEEDBACK;
78 default:
79 NOTREACHED();
80 return USB_USAGE_DATA;
81 }
82 }
83
84 int UsbEndpointDescriptor::GetPollingInterval() const {
85 return descriptor_->bInterval;
86 }
87
88 UsbInterfaceDescriptor::UsbInterfaceDescriptor(
89 scoped_refptr<const UsbConfigDescriptor> config,
90 PlatformUsbInterfaceDescriptor descriptor)
91 : config_(config), descriptor_(descriptor) {
92 }
93
94 UsbInterfaceDescriptor::~UsbInterfaceDescriptor() {}
95
96 size_t UsbInterfaceDescriptor::GetNumEndpoints() const {
97 return descriptor_->bNumEndpoints;
98 }
99
100 scoped_refptr<const UsbEndpointDescriptor>
101 UsbInterfaceDescriptor::GetEndpoint(size_t index) const {
102 return make_scoped_refptr(new UsbEndpointDescriptor(config_,
103 &descriptor_->endpoint[index]));
104 }
105
106 int UsbInterfaceDescriptor::GetInterfaceNumber() const {
107 return descriptor_->bInterfaceNumber;
108 }
109
110 int UsbInterfaceDescriptor::GetAlternateSetting() const {
111 return descriptor_->bAlternateSetting;
112 }
113
114 int UsbInterfaceDescriptor::GetInterfaceClass() const {
115 return descriptor_->bInterfaceClass;
116 }
117
118 int UsbInterfaceDescriptor::GetInterfaceSubclass() const {
119 return descriptor_->bInterfaceSubClass;
120 }
121
122 int UsbInterfaceDescriptor::GetInterfaceProtocol() const {
123 return descriptor_->bInterfaceProtocol;
124 }
125
126 UsbInterface::UsbInterface(scoped_refptr<const UsbConfigDescriptor> config,
127 PlatformUsbInterface usbInterface)
128 : config_(config), interface_(usbInterface) {
129 }
130
131 UsbInterface::~UsbInterface() {}
132
133 size_t UsbInterface::GetNumAltSettings() const {
134 return interface_->num_altsetting;
135 }
136
137 scoped_refptr<const UsbInterfaceDescriptor>
138 UsbInterface::GetAltSetting(size_t index) const {
139 return make_scoped_refptr(new UsbInterfaceDescriptor(config_,
140 &interface_->altsetting[index]));
141 }
142
143 UsbConfigDescriptor::UsbConfigDescriptor()
144 : config_(NULL) {
145 }
146
147 UsbConfigDescriptor::~UsbConfigDescriptor() {
148 if (config_ != NULL) {
149 libusb_free_config_descriptor(config_);
150 config_ = NULL;
151 }
152 }
153
154 void UsbConfigDescriptor::Reset(PlatformUsbConfigDescriptor config) {
155 config_ = config;
156 }
157
158 size_t UsbConfigDescriptor::GetNumInterfaces() const {
159 return config_->bNumInterfaces;
160 }
161
162 scoped_refptr<const UsbInterface>
163 UsbConfigDescriptor::GetInterface(size_t index) const {
164 return make_scoped_refptr(new UsbInterface(make_scoped_refptr(this),
165 &config_->interface[index]));
166 }
OLDNEW
« no previous file with comments | « chrome/browser/usb/usb_interface.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698