diff options
author | Mike Lockwood <lockwood@android.com> | 2011-03-11 08:18:08 -0500 |
---|---|---|
committer | Mike Lockwood <lockwood@android.com> | 2011-03-11 10:24:21 -0500 |
commit | acc29cc91be634070c92a807df412ced97b9b375 (patch) | |
tree | 0d4f25642cd68ac9d15966129d04ea127665d00d /media/java | |
parent | 364903bac6b9bfde694f1c0c5c40b6a2af628408 (diff) | |
download | frameworks_base-acc29cc91be634070c92a807df412ced97b9b375.zip frameworks_base-acc29cc91be634070c92a807df412ced97b9b375.tar.gz frameworks_base-acc29cc91be634070c92a807df412ced97b9b375.tar.bz2 |
UsbDevice: Move IO related methods to new UsbDeviceConnection class
UsbDevice is now just an immutable parcelable object like UsbInterface and
UsbEndpoint.
All IO related functionality is now contained in UsbDeviceConnection
and UsbRequest.
Bug: 4067029
Change-Id: Ia84da0b512a697acc940eee0c3566711c62e1a68
Signed-off-by: Mike Lockwood <lockwood@android.com>
Diffstat (limited to 'media/java')
-rw-r--r-- | media/java/android/mtp/MtpClient.java | 12 | ||||
-rw-r--r-- | media/java/android/mtp/MtpDevice.java | 19 |
2 files changed, 19 insertions, 12 deletions
diff --git a/media/java/android/mtp/MtpClient.java b/media/java/android/mtp/MtpClient.java index d25dcb9..3859caf 100644 --- a/media/java/android/mtp/MtpClient.java +++ b/media/java/android/mtp/MtpClient.java @@ -23,6 +23,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.hardware.usb.UsbConstants; import android.hardware.usb.UsbDevice; +import android.hardware.usb.UsbDeviceConnection; import android.hardware.usb.UsbInterface; import android.hardware.usb.UsbManager; import android.os.ParcelFileDescriptor; @@ -168,10 +169,13 @@ public class MtpClient { if (!mUsbManager.hasPermission(usbDevice)) { mUsbManager.requestPermission(usbDevice, mPermissionIntent); } else { - MtpDevice mtpDevice = new MtpDevice(usbDevice); - if (mtpDevice.open(mUsbManager)) { - mDevices.put(usbDevice.getDeviceName(), mtpDevice); - return mtpDevice; + UsbDeviceConnection connection = mUsbManager.openDevice(usbDevice); + if (connection != null) { + MtpDevice mtpDevice = new MtpDevice(usbDevice); + if (mtpDevice.open(connection)) { + mDevices.put(usbDevice.getDeviceName(), mtpDevice); + return mtpDevice; + } } } } diff --git a/media/java/android/mtp/MtpDevice.java b/media/java/android/mtp/MtpDevice.java index 22961d7f..db2cebd 100644 --- a/media/java/android/mtp/MtpDevice.java +++ b/media/java/android/mtp/MtpDevice.java @@ -17,7 +17,7 @@ package android.mtp; import android.hardware.usb.UsbDevice; -import android.hardware.usb.UsbManager; +import android.hardware.usb.UsbDeviceConnection; import android.os.ParcelFileDescriptor; import android.util.Log; @@ -44,17 +44,20 @@ public final class MtpDevice { } /** - * Opens the MTP or PTP device and return an {@link android.mtp.MtpDevice} for it. + * Opens the MTP device. Once the device is open it takes ownership of the + * {@link android.hardware.usb.UsbDeviceConnection}. + * The connection will be closed when you call {@link #close()} + * The connection will also be closed if this method fails. * - * @param manager reference to {@link android.hardware.usb.UsbManager} + * @param connection an open {@link android.hardware.usb.UsbDeviceConnection} for the device * @return true if the device was successfully opened. */ - public boolean open(UsbManager manager) { - if (manager.openDevice(mDevice)) { - return native_open(mDevice.getDeviceName(), mDevice.getFileDescriptor()); - } else { - return false; + public boolean open(UsbDeviceConnection connection) { + boolean result = native_open(mDevice.getDeviceName(), connection.getFileDescriptor()); + if (!result) { + connection.close(); } + return result; } /** |