summaryrefslogtreecommitdiffstats
path: root/media/java
diff options
context:
space:
mode:
authorMike Lockwood <lockwood@android.com>2011-03-11 08:18:08 -0500
committerMike Lockwood <lockwood@android.com>2011-03-11 10:24:21 -0500
commitacc29cc91be634070c92a807df412ced97b9b375 (patch)
tree0d4f25642cd68ac9d15966129d04ea127665d00d /media/java
parent364903bac6b9bfde694f1c0c5c40b6a2af628408 (diff)
downloadframeworks_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.java12
-rw-r--r--media/java/android/mtp/MtpDevice.java19
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;
}
/**