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.
5 #ifndef COMPONENTS_USB_SERVICE_USB_INTERFACE_H_
6 #define COMPONENTS_USB_SERVICE_USB_INTERFACE_H_
8 #include "base/memory/ref_counted.h"
9 #include "components/usb_service/usb_service_export.h"
11 namespace usb_service
{
13 enum UsbTransferType
{
14 USB_TRANSFER_CONTROL
= 0,
15 USB_TRANSFER_ISOCHRONOUS
,
17 USB_TRANSFER_INTERRUPT
,
20 enum UsbEndpointDirection
{
21 USB_DIRECTION_INBOUND
= 0,
22 USB_DIRECTION_OUTBOUND
,
25 enum UsbSynchronizationType
{
26 USB_SYNCHRONIZATION_NONE
= 0,
27 USB_SYNCHRONIZATION_ASYNCHRONOUS
,
28 USB_SYNCHRONIZATION_ADAPTIVE
,
29 USB_SYNCHRONIZATION_SYNCHRONOUS
,
35 USB_USAGE_EXPLICIT_FEEDBACK
38 class USB_SERVICE_EXPORT UsbEndpointDescriptor
39 : public base::RefCounted
<const UsbEndpointDescriptor
> {
41 virtual int GetAddress() const = 0;
42 virtual UsbEndpointDirection
GetDirection() const = 0;
43 virtual int GetMaximumPacketSize() const = 0;
44 virtual UsbSynchronizationType
GetSynchronizationType() const = 0;
45 virtual UsbTransferType
GetTransferType() const = 0;
46 virtual UsbUsageType
GetUsageType() const = 0;
47 virtual int GetPollingInterval() const = 0;
50 friend class base::RefCounted
<const UsbEndpointDescriptor
>;
52 UsbEndpointDescriptor() {};
53 virtual ~UsbEndpointDescriptor() {};
55 DISALLOW_COPY_AND_ASSIGN(UsbEndpointDescriptor
);
58 class USB_SERVICE_EXPORT UsbInterfaceAltSettingDescriptor
59 : public base::RefCounted
<const UsbInterfaceAltSettingDescriptor
> {
61 virtual size_t GetNumEndpoints() const = 0;
62 virtual scoped_refptr
<const UsbEndpointDescriptor
> GetEndpoint(
63 size_t index
) const = 0;
65 virtual int GetInterfaceNumber() const = 0;
66 virtual int GetAlternateSetting() const = 0;
67 virtual int GetInterfaceClass() const = 0;
68 virtual int GetInterfaceSubclass() const = 0;
69 virtual int GetInterfaceProtocol() const = 0;
72 friend class base::RefCounted
<const UsbInterfaceAltSettingDescriptor
>;
74 UsbInterfaceAltSettingDescriptor() {};
75 virtual ~UsbInterfaceAltSettingDescriptor() {};
77 DISALLOW_COPY_AND_ASSIGN(UsbInterfaceAltSettingDescriptor
);
80 class USB_SERVICE_EXPORT UsbInterfaceDescriptor
81 : public base::RefCounted
<const UsbInterfaceDescriptor
> {
83 virtual size_t GetNumAltSettings() const = 0;
84 virtual scoped_refptr
<const UsbInterfaceAltSettingDescriptor
> GetAltSetting(
85 size_t index
) const = 0;
88 friend class base::RefCounted
<const UsbInterfaceDescriptor
>;
90 UsbInterfaceDescriptor() {};
91 virtual ~UsbInterfaceDescriptor() {};
93 DISALLOW_COPY_AND_ASSIGN(UsbInterfaceDescriptor
);
96 class USB_SERVICE_EXPORT UsbConfigDescriptor
97 : public base::RefCounted
<UsbConfigDescriptor
> {
99 virtual size_t GetNumInterfaces() const = 0;
100 virtual scoped_refptr
<const UsbInterfaceDescriptor
> GetInterface(
101 size_t index
) const = 0;
104 friend class base::RefCounted
<UsbConfigDescriptor
>;
106 UsbConfigDescriptor() {};
107 virtual ~UsbConfigDescriptor() {};
109 DISALLOW_COPY_AND_ASSIGN(UsbConfigDescriptor
);
112 } // namespace usb_service;
114 #endif // COMPONENTS_USB_SERVICE_USB_INTERFACE_H_