diff options
author | gdk@chromium.org <gdk@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-02 20:51:42 +0000 |
---|---|---|
committer | gdk@chromium.org <gdk@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-02 20:51:42 +0000 |
commit | 2f345d6642fd27b0942131c02882c565493adf31 (patch) | |
tree | df72c1770e6f452d4070666033eee57fdf5655fd /chrome/browser/usb | |
parent | cf428f73fcd070ebe19a37ef5cb66ed9455e3727 (diff) | |
download | chromium_src-2f345d6642fd27b0942131c02882c565493adf31.zip chromium_src-2f345d6642fd27b0942131c02882c565493adf31.tar.gz chromium_src-2f345d6642fd27b0942131c02882c565493adf31.tar.bz2 |
Adding {Claim,Release}Interface to UsbDevice.
BUG=153567
Review URL: https://chromiumcodereview.appspot.com/11032021
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@159759 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/usb')
-rw-r--r-- | chrome/browser/usb/usb_device.cc | 17 | ||||
-rw-r--r-- | chrome/browser/usb/usb_device.h | 7 |
2 files changed, 24 insertions, 0 deletions
diff --git a/chrome/browser/usb/usb_device.cc b/chrome/browser/usb/usb_device.cc index 8cb72db..8b6a135 100644 --- a/chrome/browser/usb/usb_device.cc +++ b/chrome/browser/usb/usb_device.cc @@ -150,6 +150,23 @@ void UsbDevice::TransferComplete(PlatformUsbTransferHandle handle) { libusb_free_transfer(handle); } +void UsbDevice::ClaimInterface(const int interface_number, + const UsbInterfaceCallback& callback) { + CheckDevice(); + + const int claim_result = libusb_claim_interface(handle_, interface_number); + callback.Run(claim_result == 0); +} + +void UsbDevice::ReleaseInterface(const int interface_number, + const UsbInterfaceCallback& callback) { + CheckDevice(); + + const int release_result = libusb_release_interface(handle_, + interface_number); + callback.Run(release_result == 0); +} + void UsbDevice::ControlTransfer(const TransferDirection direction, const TransferRequestType request_type, const TransferRecipient recipient, const uint8 request, const uint16 value, const uint16 index, diff --git a/chrome/browser/usb/usb_device.h b/chrome/browser/usb/usb_device.h index cd7b511..55e047a 100644 --- a/chrome/browser/usb/usb_device.h +++ b/chrome/browser/usb/usb_device.h @@ -39,6 +39,7 @@ enum UsbTransferStatus { typedef base::Callback<void(UsbTransferStatus, scoped_refptr<net::IOBuffer>, size_t)> UsbTransferCallback; +typedef base::Callback<void(bool)> UsbInterfaceCallback; // A UsbDevice wraps the platform's underlying representation of what a USB // device actually is, and provides accessors for performing many of the @@ -59,6 +60,12 @@ class UsbDevice : public base::RefCounted<UsbDevice> { // Close the USB device and release the underlying platform device. virtual void Close(); + virtual void ClaimInterface(const int interface_number, + const UsbInterfaceCallback& callback); + + virtual void ReleaseInterface(const int interface_number, + const UsbInterfaceCallback& callback); + virtual void ControlTransfer(const TransferDirection direction, const TransferRequestType request_type, const TransferRecipient recipient, |