From 2f345d6642fd27b0942131c02882c565493adf31 Mon Sep 17 00:00:00 2001 From: "gdk@chromium.org" Date: Tue, 2 Oct 2012 20:51:42 +0000 Subject: 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 --- chrome/browser/usb/usb_device.cc | 17 +++++++++++++++++ chrome/browser/usb/usb_device.h | 7 +++++++ 2 files changed, 24 insertions(+) (limited to 'chrome') 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, size_t)> UsbTransferCallback; +typedef base::Callback 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 { // 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, -- cgit v1.1