summaryrefslogtreecommitdiffstats
path: root/chrome/browser/usb
diff options
context:
space:
mode:
authorgdk@chromium.org <gdk@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-02 20:51:42 +0000
committergdk@chromium.org <gdk@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-02 20:51:42 +0000
commit2f345d6642fd27b0942131c02882c565493adf31 (patch)
treedf72c1770e6f452d4070666033eee57fdf5655fd /chrome/browser/usb
parentcf428f73fcd070ebe19a37ef5cb66ed9455e3727 (diff)
downloadchromium_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.cc17
-rw-r--r--chrome/browser/usb/usb_device.h7
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,