OLD | NEW |
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 #include "device/usb/usb_device_handle_impl.h" | 5 #include "device/usb/usb_device_handle_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 665 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
676 task_runner_, callback); | 676 task_runner_, callback); |
677 } else { | 677 } else { |
678 task_runner_->PostTask( | 678 task_runner_->PostTask( |
679 FROM_HERE, | 679 FROM_HERE, |
680 base::Bind(&UsbDeviceHandleImpl::GenericTransferInternal, this, | 680 base::Bind(&UsbDeviceHandleImpl::GenericTransferInternal, this, |
681 direction, endpoint, buffer, length, timeout, | 681 direction, endpoint, buffer, length, timeout, |
682 base::ThreadTaskRunnerHandle::Get(), callback)); | 682 base::ThreadTaskRunnerHandle::Get(), callback)); |
683 } | 683 } |
684 } | 684 } |
685 | 685 |
| 686 bool UsbDeviceHandleImpl::FindInterfaceByEndpoint(uint8_t endpoint_address, |
| 687 uint8_t* interface_number) { |
| 688 DCHECK(thread_checker_.CalledOnValidThread()); |
| 689 const auto endpoint_it = endpoint_map_.find(endpoint_address); |
| 690 if (endpoint_it != endpoint_map_.end()) { |
| 691 *interface_number = endpoint_it->second.interface_number; |
| 692 return true; |
| 693 } |
| 694 return false; |
| 695 } |
| 696 |
686 UsbDeviceHandleImpl::UsbDeviceHandleImpl( | 697 UsbDeviceHandleImpl::UsbDeviceHandleImpl( |
687 scoped_refptr<UsbContext> context, | 698 scoped_refptr<UsbContext> context, |
688 scoped_refptr<UsbDeviceImpl> device, | 699 scoped_refptr<UsbDeviceImpl> device, |
689 PlatformUsbDeviceHandle handle, | 700 PlatformUsbDeviceHandle handle, |
690 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner) | 701 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner) |
691 : device_(device), | 702 : device_(device), |
692 handle_(handle), | 703 handle_(handle), |
693 context_(context), | 704 context_(context), |
694 task_runner_(base::ThreadTaskRunnerHandle::Get()), | 705 task_runner_(base::ThreadTaskRunnerHandle::Get()), |
695 blocking_task_runner_(blocking_task_runner) { | 706 blocking_task_runner_(blocking_task_runner) { |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
820 } | 831 } |
821 break; | 832 break; |
822 } | 833 } |
823 } | 834 } |
824 } | 835 } |
825 } | 836 } |
826 } | 837 } |
827 | 838 |
828 scoped_refptr<UsbDeviceHandleImpl::InterfaceClaimer> | 839 scoped_refptr<UsbDeviceHandleImpl::InterfaceClaimer> |
829 UsbDeviceHandleImpl::GetClaimedInterfaceForEndpoint(uint8_t endpoint) { | 840 UsbDeviceHandleImpl::GetClaimedInterfaceForEndpoint(uint8_t endpoint) { |
830 if (ContainsKey(endpoint_map_, endpoint)) | 841 const auto endpoint_it = endpoint_map_.find(endpoint); |
831 return claimed_interfaces_[endpoint_map_[endpoint].interface_number]; | 842 if (endpoint_it != endpoint_map_.end()) |
832 return NULL; | 843 return claimed_interfaces_[endpoint_it->second.interface_number]; |
| 844 return nullptr; |
833 } | 845 } |
834 | 846 |
835 void UsbDeviceHandleImpl::ControlTransferInternal( | 847 void UsbDeviceHandleImpl::ControlTransferInternal( |
836 UsbEndpointDirection direction, | 848 UsbEndpointDirection direction, |
837 TransferRequestType request_type, | 849 TransferRequestType request_type, |
838 TransferRecipient recipient, | 850 TransferRecipient recipient, |
839 uint8_t request, | 851 uint8_t request, |
840 uint16_t value, | 852 uint16_t value, |
841 uint16_t index, | 853 uint16_t index, |
842 scoped_refptr<net::IOBuffer> buffer, | 854 scoped_refptr<net::IOBuffer> buffer, |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1050 // Attempt-release all the interfaces. | 1062 // Attempt-release all the interfaces. |
1051 // It will be retained until the transfer cancellation is finished. | 1063 // It will be retained until the transfer cancellation is finished. |
1052 claimed_interfaces_.clear(); | 1064 claimed_interfaces_.clear(); |
1053 | 1065 |
1054 // Cannot close device handle here. Need to wait for libusb_cancel_transfer to | 1066 // Cannot close device handle here. Need to wait for libusb_cancel_transfer to |
1055 // finish. | 1067 // finish. |
1056 device_ = NULL; | 1068 device_ = NULL; |
1057 } | 1069 } |
1058 | 1070 |
1059 } // namespace device | 1071 } // namespace device |
OLD | NEW |