1 // Copyright 2018 The Fuchsia 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 "usb-handler.h"
6 
7 namespace xdc {
8 
9 // static
Create()10 std::unique_ptr<UsbHandler::Transfer> UsbHandler::Transfer::Create() {
11     auto transfer = std::make_unique<UsbHandler::Transfer>(ConstructorTag{});
12     // TODO(jocelyndang): need to initialize the transfer.
13     return transfer;
14 }
15 
FillHeader(uint32_t stream_id,size_t data_len)16 zx_status_t UsbHandler::Transfer::FillHeader(uint32_t stream_id, size_t data_len) {
17     // TODO(jocelyndang): implement this.
18     return ZX_ERR_NOT_SUPPORTED;
19 }
20 
FillData(uint32_t stream_id,unsigned char * data,size_t data_len)21 zx_status_t UsbHandler::Transfer::FillData(uint32_t stream_id, unsigned char* data,
22                                            size_t data_len) {
23     // TODO(jocelyndang): implement this.
24     return ZX_ERR_NOT_SUPPORTED;
25 }
26 
SetOffset(int offset)27 bool UsbHandler::Transfer::SetOffset(int offset) {
28     if (offset < 0 || offset > actual_length_) {
29         return false;
30     }
31     offset_ = offset;
32     return true;
33 }
34 
35 // static
Create()36 std::unique_ptr<UsbHandler> UsbHandler::Create() {
37     auto usb_handler = std::make_unique<UsbHandler>(ConstructorTag{});
38     if (!usb_handler) {
39         return nullptr;
40     }
41     // TODO(jocelyndang): need to initialize initial libusb fds.
42     return usb_handler;
43 }
44 
HandleEvents(std::vector<std::unique_ptr<Transfer>> & completed_reads)45 bool UsbHandler::HandleEvents(std::vector<std::unique_ptr<Transfer>>& completed_reads) {
46     // TODO(jocelyndang): implement this.
47     return false;
48 }
49 
RequeueRead(std::unique_ptr<Transfer> transfer)50 void UsbHandler::RequeueRead(std::unique_ptr<Transfer> transfer) {
51     // TODO(jocelyndang): implement this.
52 }
53 
GetFdUpdates(std::map<int,short> & added_fds,std::set<int> & removed_fds)54 void UsbHandler::GetFdUpdates(std::map<int, short>& added_fds, std::set<int>& removed_fds) {
55     // TODO(jocelyndang): implement this.
56 }
57 
GetWriteTransfer()58 std::unique_ptr<UsbHandler::Transfer> UsbHandler::GetWriteTransfer() {
59     // TODO(jocelyndang): implement this.
60     return nullptr;
61 }
62 
ReturnWriteTransfer(std::unique_ptr<Transfer>)63 void UsbHandler::ReturnWriteTransfer(std::unique_ptr<Transfer>) {
64     // TODO(jocelyndang): implement this.
65 }
66 
QueueWriteTransfer(std::unique_ptr<Transfer> transfer)67 std::unique_ptr<UsbHandler::Transfer> UsbHandler::QueueWriteTransfer(
68     std::unique_ptr<Transfer> transfer) {
69     // TODO(jocelyndang): implement this.
70     return transfer;
71 }
72 
73 } // namespace xdc