1#ifndef SYMBIAN_DEVICE_TRANSPORT_H_
2#define SYMBIAN_DEVICE_TRANSPORT_H_
9#include <absl/status/status.h>
10#include <absl/status/statusor.h>
35class UsbSession :
public std::enable_shared_from_this<UsbSession> {
37 static absl::StatusOr<std::shared_ptr<UsbSession>>
Open(
38 uint16_t vendor, uint16_t product,
const std::string& serial_anchor);
47 absl::StatusOr<std::string>
BulkIn(uint8_t endpoint,
int length,
49 absl::Status
BulkOut(uint8_t endpoint,
const std::string&
data,
51 absl::StatusOr<std::string>
InterruptIn(uint8_t endpoint,
int length,
55 absl::StatusOr<std::string>
ControlIn(uint8_t request_type, uint8_t request,
56 uint16_t
value, uint16_t index,
57 int length,
int timeout_ms);
58 absl::Status
ControlOut(uint8_t request_type, uint8_t request, uint16_t
value,
59 uint16_t index,
const std::string&
data,
61 absl::StatusOr<uint64_t>
SubmitBulk(uint8_t endpoint,
const std::string&
data,
62 int length,
int timeout_ms);
64 const std::string&
data,
int length,
67 uint8_t request_type, uint8_t request, uint16_t
value, uint16_t index,
68 const std::string&
data,
int length,
int timeout_ms,
70 confirmation =
nullptr);
71 absl::StatusOr<symbian::concurrency::Future<UsbCompletion>>
SubmitBulkFuture(
72 uint8_t endpoint,
const std::string&
data,
int length,
int timeout_ms);
73 absl::StatusOr<symbian::concurrency::Future<UsbCompletion>>
76 absl::StatusOr<symbian::concurrency::Future<UsbCompletion>>
78 uint16_t index,
const std::string&
data,
int length,
80 absl::Status
Cancel(uint64_t
id);
81 absl::StatusOr<std::vector<UsbCompletion>>
HandleEvents(
int timeout_ms);
88 explicit UsbSession(std::unique_ptr<Impl> impl);
89 absl::StatusOr<std::string> SyncIn(uint8_t endpoint,
int length,
90 int timeout_ms,
bool interrupt);
91 absl::Status SyncOut(uint8_t endpoint,
const std::string&
data,
92 int timeout_ms,
bool interrupt);
93 absl::StatusOr<uint64_t> Submit(
94 uint8_t endpoint,
const std::string&
data,
int length,
int timeout_ms,
97 confirmation =
nullptr);
98 std::unique_ptr<Impl> impl_;
Definition bounded_channel.h:38
Definition transport.h:35
absl::StatusOr< std::vector< UsbPollFd > > PollFileDescriptors() const
Definition usb.cc:2136
absl::StatusOr< uint64_t > SubmitBulk(uint8_t endpoint, const std::string &data, int length, int timeout_ms)
Definition usb.cc:1945
absl::Status Claim(int number)
Definition usb.cc:1644
absl::StatusOr< std::string > BulkIn(uint8_t endpoint, int length, int timeout_ms)
Definition usb.cc:1788
absl::Status Cancel(uint64_t id)
Definition usb.cc:2088
absl::StatusOr< uint64_t > SubmitInterrupt(uint8_t endpoint, const std::string &data, int length, int timeout_ms)
Definition usb.cc:1951
absl::StatusOr< std::string > ControlIn(uint8_t request_type, uint8_t request, uint16_t value, uint16_t index, int length, int timeout_ms)
Definition usb.cc:1808
absl::StatusOr< int > NextTimeoutMs() const
Definition usb.cc:2153
absl::StatusOr< std::string > InterruptIn(uint8_t endpoint, int length, int timeout_ms)
Definition usb.cc:1798
absl::Status InterruptOut(uint8_t endpoint, const std::string &data, int timeout_ms)
Definition usb.cc:1803
UsbSession & operator=(const UsbSession &)=delete
absl::StatusOr< std::vector< UsbCompletion > > HandleEvents(int timeout_ms)
Definition usb.cc:2102
absl::Status SetAlternate(int number, int alternate)
Definition usb.cc:1663
absl::Status ControlOut(uint8_t request_type, uint8_t request, uint16_t value, uint16_t index, const std::string &data, int timeout_ms)
Definition usb.cc:1843
absl::Status BulkOut(uint8_t endpoint, const std::string &data, int timeout_ms)
Definition usb.cc:1793
absl::StatusOr< symbian::concurrency::Future< UsbCompletion > > SubmitBulkFuture(uint8_t endpoint, const std::string &data, int length, int timeout_ms)
Definition usb.cc:2027
UsbSession(const UsbSession &)=delete
absl::Status Close()
Definition usb.cc:2169
absl::Status Release(int number)
Definition usb.cc:1683
absl::StatusOr< uint64_t > SubmitControl(uint8_t request_type, uint8_t request, uint16_t value, uint16_t index, const std::string &data, int length, int timeout_ms, std::shared_ptr< symbian::concurrency::Promise< UsbCompletion > > confirmation=nullptr)
Definition usb.cc:1958
static absl::StatusOr< std::shared_ptr< UsbSession > > Open(uint16_t vendor, uint16_t product, const std::string &serial_anchor)
Definition usb.cc:1570
absl::StatusOr< symbian::concurrency::Future< UsbCompletion > > SubmitControlFuture(uint8_t request_type, uint8_t request, uint16_t value, uint16_t index, const std::string &data, int length, int timeout_ms)
Definition usb.cc:2067
absl::StatusOr< UsbProbe > Descriptors() const
Definition usb.cc:1636
~UsbSession()
Definition usb.cc:1564
absl::StatusOr< symbian::concurrency::Future< UsbCompletion > > SubmitInterruptFuture(uint8_t endpoint, const std::string &data, int length, int timeout_ms)
Definition usb.cc:2047
Definition transport.h:15
absl::StatusOr< std::vector< UsbDeviceDescriptor > > ListUsbDevices()
Definition usb.cc:2216
Definition transport.h:24
std::string data
Definition transport.h:32
std::string status
Definition transport.h:28
int actual_length
Definition transport.h:30
Definition transport.h:17
int events
Definition transport.h:21
int fd
Definition transport.h:19
libusb_context * value
Definition usb.cc:35
int number
Definition usb.cc:80
std::vector< unsigned char > data
Definition usb.cc:292