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

Side by Side Diff: device/usb/usb_device_handle.h

Issue 1618393004: Update device/usb and its Mojo interface for variable size ISO packets. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef DEVICE_USB_USB_DEVICE_HANDLE_H_ 5 #ifndef DEVICE_USB_USB_DEVICE_HANDLE_H_
6 #define DEVICE_USB_USB_DEVICE_HANDLE_H_ 6 #define DEVICE_USB_USB_DEVICE_HANDLE_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 19 matching lines...) Expand all
30 USB_TRANSFER_CANCELLED, 30 USB_TRANSFER_CANCELLED,
31 USB_TRANSFER_STALLED, 31 USB_TRANSFER_STALLED,
32 USB_TRANSFER_DISCONNECT, 32 USB_TRANSFER_DISCONNECT,
33 USB_TRANSFER_OVERFLOW, 33 USB_TRANSFER_OVERFLOW,
34 USB_TRANSFER_LENGTH_SHORT, 34 USB_TRANSFER_LENGTH_SHORT,
35 }; 35 };
36 36
37 // UsbDeviceHandle class provides basic I/O related functionalities. 37 // UsbDeviceHandle class provides basic I/O related functionalities.
38 class UsbDeviceHandle : public base::RefCountedThreadSafe<UsbDeviceHandle> { 38 class UsbDeviceHandle : public base::RefCountedThreadSafe<UsbDeviceHandle> {
39 public: 39 public:
40 struct IsochronousPacket {
41 uint32_t length;
42 uint32_t transferred_length;
43 UsbTransferStatus status;
44 };
45
40 using ResultCallback = base::Callback<void(bool)>; 46 using ResultCallback = base::Callback<void(bool)>;
41 using TransferCallback = base::Callback< 47 using TransferCallback = base::Callback<
42 void(UsbTransferStatus, scoped_refptr<net::IOBuffer>, size_t)>; 48 void(UsbTransferStatus, scoped_refptr<net::IOBuffer>, size_t)>;
49 using IsochronousTransferCallback =
50 base::Callback<void(scoped_refptr<net::IOBuffer>,
51 const std::vector<IsochronousPacket>& packets)>;
43 52
44 enum TransferRequestType { STANDARD, CLASS, VENDOR, RESERVED }; 53 enum TransferRequestType { STANDARD, CLASS, VENDOR, RESERVED };
45 enum TransferRecipient { DEVICE, INTERFACE, ENDPOINT, OTHER }; 54 enum TransferRecipient { DEVICE, INTERFACE, ENDPOINT, OTHER };
46 55
47 virtual scoped_refptr<UsbDevice> GetDevice() const = 0; 56 virtual scoped_refptr<UsbDevice> GetDevice() const = 0;
48 57
49 // Notifies UsbDevice to drop the reference of this object; cancels all the 58 // Notifies UsbDevice to drop the reference of this object; cancels all the
50 // flying transfers. 59 // flying transfers.
51 // It is possible that the object has no other reference after this call. So 60 // It is possible that the object has no other reference after this call. So
52 // if it is called using a raw pointer, it could be invalidated. 61 // if it is called using a raw pointer, it could be invalidated.
(...skipping 18 matching lines...) Expand all
71 TransferRequestType request_type, 80 TransferRequestType request_type,
72 TransferRecipient recipient, 81 TransferRecipient recipient,
73 uint8_t request, 82 uint8_t request,
74 uint16_t value, 83 uint16_t value,
75 uint16_t index, 84 uint16_t index,
76 scoped_refptr<net::IOBuffer> buffer, 85 scoped_refptr<net::IOBuffer> buffer,
77 size_t length, 86 size_t length,
78 unsigned int timeout, 87 unsigned int timeout,
79 const TransferCallback& callback) = 0; 88 const TransferCallback& callback) = 0;
80 89
81 virtual void IsochronousTransfer(UsbEndpointDirection direction, 90 virtual void IsochronousTransferIn(
82 uint8_t endpoint, 91 uint8_t endpoint_number,
83 scoped_refptr<net::IOBuffer> buffer, 92 const std::vector<uint32_t>& packet_lengths,
84 size_t length, 93 unsigned int timeout,
85 unsigned int packets, 94 const IsochronousTransferCallback& callback) = 0;
86 unsigned int packet_length, 95
87 unsigned int timeout, 96 virtual void IsochronousTransferOut(
88 const TransferCallback& callback) = 0; 97 uint8_t endpoint_number,
98 scoped_refptr<net::IOBuffer> buffer,
99 const std::vector<uint32_t>& packet_lengths,
100 unsigned int timeout,
101 const IsochronousTransferCallback& callback) = 0;
89 102
90 virtual void GenericTransfer(UsbEndpointDirection direction, 103 virtual void GenericTransfer(UsbEndpointDirection direction,
91 uint8_t endpoint, 104 uint8_t endpoint_number,
92 scoped_refptr<net::IOBuffer> buffer, 105 scoped_refptr<net::IOBuffer> buffer,
93 size_t length, 106 size_t length,
94 unsigned int timeout, 107 unsigned int timeout,
95 const TransferCallback& callback) = 0; 108 const TransferCallback& callback) = 0;
96 109
97 // Gets the interface containing |endpoint_address|. Returns false if no 110 // Gets the interface containing |endpoint_address|. Returns false if no
98 // claimed interface contains that endpoint. 111 // claimed interface contains that endpoint.
99 virtual bool FindInterfaceByEndpoint(uint8_t endpoint_address, 112 virtual bool FindInterfaceByEndpoint(uint8_t endpoint_address,
100 uint8_t* interface_number) = 0; 113 uint8_t* interface_number) = 0;
101 114
102 protected: 115 protected:
103 friend class base::RefCountedThreadSafe<UsbDeviceHandle>; 116 friend class base::RefCountedThreadSafe<UsbDeviceHandle>;
104 117
105 UsbDeviceHandle(); 118 UsbDeviceHandle();
106 119
107 virtual ~UsbDeviceHandle(); 120 virtual ~UsbDeviceHandle();
108 121
122 private:
109 DISALLOW_COPY_AND_ASSIGN(UsbDeviceHandle); 123 DISALLOW_COPY_AND_ASSIGN(UsbDeviceHandle);
110 }; 124 };
111 125
112 } // namespace device 126 } // namespace device
113 127
114 #endif // DEVICE_USB_USB_DEVICE_HANDLE_H_ 128 #endif // DEVICE_USB_USB_DEVICE_HANDLE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698