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

Side by Side Diff: components/usb_service/usb_interface_impl.h

Issue 270323003: Extracted UsbConfigDescriptor, UsbInterfaceDescriptor and helper classes (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 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
OLDNEW
(Empty)
1 // Copyright 2014 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 #ifndef COMPONENTS_USB_SERVICE_USB_INTERFACE_IMPL_H_
6 #define COMPONENTS_USB_SERVICE_USB_INTERFACE_IMPL_H_
7
8 #include "base/memory/ref_counted.h"
9 #include "components/usb_service/usb_interface.h"
10 #include "components/usb_service/usb_service_export.h"
11
12 struct libusb_config_descriptor;
13 struct libusb_endpoint_descriptor;
14 struct libusb_interface;
15 struct libusb_interface_descriptor;
16
17 namespace usb_service {
18
19 typedef libusb_config_descriptor* PlatformUsbConfigDescriptor;
20 typedef const libusb_endpoint_descriptor* PlatformUsbEndpointDescriptor;
21 typedef const libusb_interface* PlatformUsbInterface;
22 typedef const libusb_interface_descriptor* PlatformUsbInterfaceDescriptor;
23
24 class UsbConfigDescriptorImpl;
25 class UsbInterfaceAltSettingDescriptor;
26
27 class UsbEndpointDescriptorImpl : public UsbEndpointDescriptor {
28 public:
29 virtual int GetAddress() const OVERRIDE;
30 virtual UsbEndpointDirection GetDirection() const OVERRIDE;
31 virtual int GetMaximumPacketSize() const OVERRIDE;
32 virtual UsbSynchronizationType GetSynchronizationType() const OVERRIDE;
33 virtual UsbTransferType GetTransferType() const OVERRIDE;
34 virtual UsbUsageType GetUsageType() const OVERRIDE;
35 virtual int GetPollingInterval() const OVERRIDE;
36
37 private:
38 friend class base::RefCounted<const UsbEndpointDescriptorImpl>;
39 friend class UsbInterfaceAltSettingDescriptorImpl;
40
41 UsbEndpointDescriptorImpl(scoped_refptr<const UsbConfigDescriptor> config,
42 PlatformUsbEndpointDescriptor descriptor);
43 virtual ~UsbEndpointDescriptorImpl();
44
45 scoped_refptr<const UsbConfigDescriptor> config_;
46 PlatformUsbEndpointDescriptor descriptor_;
47
48 DISALLOW_COPY_AND_ASSIGN(UsbEndpointDescriptorImpl);
49 };
50
51 class UsbInterfaceAltSettingDescriptorImpl
52 : public UsbInterfaceAltSettingDescriptor {
53 public:
54 virtual size_t GetNumEndpoints() const OVERRIDE;
55 virtual scoped_refptr<const UsbEndpointDescriptor> GetEndpoint(
56 size_t index) const OVERRIDE;
57
58 virtual int GetInterfaceNumber() const OVERRIDE;
59 virtual int GetAlternateSetting() const OVERRIDE;
60 virtual int GetInterfaceClass() const OVERRIDE;
61 virtual int GetInterfaceSubclass() const OVERRIDE;
62 virtual int GetInterfaceProtocol() const OVERRIDE;
63
64 private:
65 friend class UsbInterfaceDescriptorImpl;
66
67 UsbInterfaceAltSettingDescriptorImpl(
68 scoped_refptr<const UsbConfigDescriptor> config,
69 PlatformUsbInterfaceDescriptor descriptor);
70 virtual ~UsbInterfaceAltSettingDescriptorImpl();
71
72 scoped_refptr<const UsbConfigDescriptor> config_;
73 PlatformUsbInterfaceDescriptor descriptor_;
74
75 DISALLOW_COPY_AND_ASSIGN(UsbInterfaceAltSettingDescriptorImpl);
76 };
77
78 class UsbInterfaceDescriptorImpl : public UsbInterfaceDescriptor {
79 public:
80 virtual size_t GetNumAltSettings() const OVERRIDE;
81 virtual scoped_refptr<const UsbInterfaceAltSettingDescriptor> GetAltSetting(
82 size_t index) const OVERRIDE;
83
84 private:
85 friend class base::RefCounted<const UsbInterfaceDescriptorImpl>;
86 friend class UsbConfigDescriptorImpl;
87
88 UsbInterfaceDescriptorImpl(scoped_refptr<const UsbConfigDescriptor> config,
89 PlatformUsbInterface usbInterface);
90 virtual ~UsbInterfaceDescriptorImpl();
91
92 scoped_refptr<const UsbConfigDescriptor> config_;
93 PlatformUsbInterface interface_;
94
95 DISALLOW_COPY_AND_ASSIGN(UsbInterfaceDescriptorImpl);
96 };
97
98 class UsbConfigDescriptorImpl : public UsbConfigDescriptor {
99 public:
100 virtual size_t GetNumInterfaces() const OVERRIDE;
101 virtual scoped_refptr<const UsbInterfaceDescriptor> GetInterface(
102 size_t index) const OVERRIDE;
103
104 private:
105 friend class base::RefCounted<UsbConfigDescriptor>;
106 friend class UsbDeviceImpl;
107
108 explicit UsbConfigDescriptorImpl(PlatformUsbConfigDescriptor config);
109 virtual ~UsbConfigDescriptorImpl();
110
111 PlatformUsbConfigDescriptor config_;
112
113 DISALLOW_COPY_AND_ASSIGN(UsbConfigDescriptorImpl);
114 };
115
116 } // namespace usb_service;
117
118 #endif // COMPONENTS_USB_SERVICE_USB_INTERFACE_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698