summaryrefslogtreecommitdiffstats
path: root/core/java/android/hardware/usb/UsbDevice.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android/hardware/usb/UsbDevice.java')
-rw-r--r--core/java/android/hardware/usb/UsbDevice.java150
1 files changed, 9 insertions, 141 deletions
diff --git a/core/java/android/hardware/usb/UsbDevice.java b/core/java/android/hardware/usb/UsbDevice.java
index 39254b38..9e536a7 100644
--- a/core/java/android/hardware/usb/UsbDevice.java
+++ b/core/java/android/hardware/usb/UsbDevice.java
@@ -19,33 +19,24 @@ package android.hardware.usb;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
-import android.os.ParcelFileDescriptor;
import android.util.Log;
import java.io.FileDescriptor;
-
/**
* A class representing a USB device.
*/
-public final class UsbDevice implements Parcelable {
+public class UsbDevice implements Parcelable {
private static final String TAG = "UsbDevice";
- private String mName;
- private int mVendorId;
- private int mProductId;
- private int mClass;
- private int mSubclass;
- private int mProtocol;
- private Parcelable[] mInterfaces;
-
- // used by the JNI code
- private int mNativeContext;
-
- private UsbDevice() {
- }
-
+ private final String mName;
+ private final int mVendorId;
+ private final int mProductId;
+ private final int mClass;
+ private final int mSubclass;
+ private final int mProtocol;
+ private final Parcelable[] mInterfaces;
/**
* UsbDevice should only be instantiated by UsbService implementation
@@ -150,114 +141,6 @@ public final class UsbDevice implements Parcelable {
return (UsbInterface)mInterfaces[index];
}
- /* package */ boolean open(ParcelFileDescriptor pfd) {
- return native_open(mName, pfd.getFileDescriptor());
- }
-
- /**
- * Releases all system resources related to the device.
- */
- public void close() {
- native_close();
- }
-
- /**
- * Returns an integer file descriptor for the device, or
- * -1 if the device is not opened.
- * This is intended for passing to native code to access the device
- */
- public int getFileDescriptor() {
- return native_get_fd();
- }
-
- /**
- * Claims exclusive access to a {@link android.hardware.usb.UsbInterface}.
- * This must be done before sending or receiving data on any
- * {@link android.hardware.usb.UsbEndpoint}s belonging to the interface
- * @param intf the interface to claim
- * @param force true to disconnect kernel driver if necessary
- * @return true if the interface was successfully claimed
- */
- public boolean claimInterface(UsbInterface intf, boolean force) {
- return native_claim_interface(intf.getId(), force);
- }
-
- /**
- * Releases exclusive access to a {@link android.hardware.usb.UsbInterface}.
- *
- * @return true if the interface was successfully released
- */
- public boolean releaseInterface(UsbInterface intf) {
- return native_release_interface(intf.getId());
- }
-
- /**
- * Performs a control transaction on endpoint zero for this device.
- * The direction of the transfer is determined by the request type.
- * If requestType & {@link UsbConstants#USB_ENDPOINT_DIR_MASK} is
- * {@link UsbConstants#USB_DIR_OUT}, then the transfer is a write,
- * and if it is {@link UsbConstants#USB_DIR_IN}, then the transfer
- * is a read.
- *
- * @param requestType request type for this transaction
- * @param request request ID for this transaction
- * @param value value field for this transaction
- * @param index index field for this transaction
- * @param buffer buffer for data portion of transaction,
- * or null if no data needs to be sent or received
- * @param length the length of the data to send or receive
- * @param timeout in milliseconds
- * @return length of data transferred (or zero) for success,
- * or negative value for failure
- */
- public int controlTransfer(int requestType, int request, int value,
- int index, byte[] buffer, int length, int timeout) {
- return native_control_request(requestType, request, value, index, buffer, length, timeout);
- }
-
- /**
- * Performs a bulk transaction on the given endpoint.
- * The direction of the transfer is determined by the direction of the endpoint
- *
- * @param endpoint the endpoint for this transaction
- * @param buffer buffer for data to send or receive,
- * @param length the length of the data to send or receive
- * @param timeout in milliseconds
- * @return length of data transferred (or zero) for success,
- * or negative value for failure
- */
- public int bulkTransfer(UsbEndpoint endpoint, byte[] buffer, int length, int timeout) {
- return native_bulk_request(endpoint.getAddress(), buffer, length, timeout);
- }
-
- /**
- * Waits for the result of a {@link android.hardware.usb.UsbRequest#queue} operation
- * Note that this may return requests queued on multiple
- * {@link android.hardware.usb.UsbEndpoint}s.
- * When multiple endpoints are in use, {@link android.hardware.usb.UsbRequest#getEndpoint} and
- * {@link android.hardware.usb.UsbRequest#getClientData} can be useful in determining
- * how to process the result of this function.
- *
- * @return a completed USB request, or null if an error occurred
- */
- public UsbRequest requestWait() {
- UsbRequest request = native_request_wait();
- if (request != null) {
- request.dequeue();
- }
- return request;
- }
-
- /**
- * Returns the serial number for the device.
- * This will return null if the device has not been opened.
- *
- * @return the device serial number
- */
- public String getSerial() {
- return native_get_serial();
- }
-
@Override
public boolean equals(Object o) {
if (o instanceof UsbDevice) {
@@ -292,11 +175,7 @@ public final class UsbDevice implements Parcelable {
int subClass = in.readInt();
int protocol = in.readInt();
Parcelable[] interfaces = in.readParcelableArray(UsbInterface.class.getClassLoader());
- UsbDevice result = new UsbDevice(name, vendorId, productId, clasz, subClass, protocol, interfaces);
- for (int i = 0; i < interfaces.length; i++) {
- ((UsbInterface)interfaces[i]).setDevice(result);
- }
- return result;
+ return new UsbDevice(name, vendorId, productId, clasz, subClass, protocol, interfaces);
}
public UsbDevice[] newArray(int size) {
@@ -326,17 +205,6 @@ public final class UsbDevice implements Parcelable {
return native_get_device_name(id);
}
- private native boolean native_open(String deviceName, FileDescriptor pfd);
- private native void native_close();
- private native int native_get_fd();
- private native boolean native_claim_interface(int interfaceID, boolean force);
- private native boolean native_release_interface(int interfaceID);
- private native int native_control_request(int requestType, int request, int value,
- int index, byte[] buffer, int length, int timeout);
- private native int native_bulk_request(int endpoint, byte[] buffer, int length, int timeout);
- private native UsbRequest native_request_wait();
- private native String native_get_serial();
-
private static native int native_get_device_id(String name);
private static native String native_get_device_name(int id);
}