Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0eb7b697 authored by Mike Lockwood's avatar Mike Lockwood Committed by Android (Google) Code Review
Browse files

Merge changes Ib63ab95a,I585b0610,Ia84da0b5 into honeycomb-mr1

* changes:
  UsbManager: Hide APIs not needed for USB host or accessory support.
  Remove MtpClient class from framework and public API
  UsbDevice: Move IO related methods to new UsbDeviceConnection class
parents 9856fbd4 a75075e1
Loading
Loading
Loading
Loading
+100 −507
Original line number Diff line number Diff line
@@ -94880,13 +94880,13 @@
 extends="java.lang.Object"
 abstract="false"
 static="false"
 final="true"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<implements name="android.os.Parcelable">
</implements>
<method name="bulkTransfer"
<method name="describeContents"
 return="int"
 abstract="false"
 native="false"
@@ -94896,17 +94896,9 @@
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="endpoint" type="android.hardware.usb.UsbEndpoint">
</parameter>
<parameter name="buffer" type="byte[]">
</parameter>
<parameter name="length" type="int">
</parameter>
<parameter name="timeout" type="int">
</parameter>
</method>
<method name="claimInterface"
 return="boolean"
<method name="getDeviceClass"
 return="int"
 abstract="false"
 native="false"
 synchronized="false"
@@ -94915,13 +94907,9 @@
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="intf" type="android.hardware.usb.UsbInterface">
</parameter>
<parameter name="force" type="boolean">
</parameter>
</method>
<method name="close"
 return="void"
<method name="getDeviceId"
 return="int"
 abstract="false"
 native="false"
 synchronized="false"
@@ -94931,33 +94919,21 @@
 visibility="public"
>
</method>
<method name="controlTransfer"
<method name="getDeviceId"
 return="int"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 static="true"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="requestType" type="int">
</parameter>
<parameter name="request" type="int">
</parameter>
<parameter name="value" type="int">
</parameter>
<parameter name="index" type="int">
</parameter>
<parameter name="buffer" type="byte[]">
</parameter>
<parameter name="length" type="int">
</parameter>
<parameter name="timeout" type="int">
<parameter name="name" type="java.lang.String">
</parameter>
</method>
<method name="describeContents"
 return="int"
<method name="getDeviceName"
 return="java.lang.String"
 abstract="false"
 native="false"
 synchronized="false"
@@ -94967,18 +94943,20 @@
 visibility="public"
>
</method>
<method name="getDeviceClass"
 return="int"
<method name="getDeviceName"
 return="java.lang.String"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 static="true"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="id" type="int">
</parameter>
</method>
<method name="getDeviceId"
<method name="getDeviceProtocol"
 return="int"
 abstract="false"
 native="false"
@@ -94989,21 +94967,19 @@
 visibility="public"
>
</method>
<method name="getDeviceId"
<method name="getDeviceSubclass"
 return="int"
 abstract="false"
 native="false"
 synchronized="false"
 static="true"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="name" type="java.lang.String">
</parameter>
</method>
<method name="getDeviceName"
 return="java.lang.String"
<method name="getInterface"
 return="android.hardware.usb.UsbInterface"
 abstract="false"
 native="false"
 synchronized="false"
@@ -95012,21 +94988,21 @@
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="index" type="int">
</parameter>
</method>
<method name="getDeviceName"
 return="java.lang.String"
<method name="getInterfaceCount"
 return="int"
 abstract="false"
 native="false"
 synchronized="false"
 static="true"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="id" type="int">
</parameter>
</method>
<method name="getDeviceProtocol"
<method name="getProductId"
 return="int"
 abstract="false"
 native="false"
@@ -95037,7 +95013,7 @@
 visibility="public"
>
</method>
<method name="getDeviceSubclass"
<method name="getVendorId"
 return="int"
 abstract="false"
 native="false"
@@ -95048,8 +95024,8 @@
 visibility="public"
>
</method>
<method name="getFileDescriptor"
 return="int"
<method name="writeToParcel"
 return="void"
 abstract="false"
 native="false"
 synchronized="false"
@@ -95058,21 +95034,31 @@
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="parcel" type="android.os.Parcel">
</parameter>
<parameter name="flags" type="int">
</parameter>
</method>
<method name="getInterface"
 return="android.hardware.usb.UsbInterface"
<field name="CREATOR"
 type="android.os.Parcelable.Creator"
 transient="false"
 volatile="false"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
</class>
<class name="UsbDeviceConnection"
 extends="java.lang.Object"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="index" type="int">
</parameter>
</method>
<method name="getInterfaceCount"
<method name="bulkTransfer"
 return="int"
 abstract="false"
 native="false"
@@ -95082,9 +95068,17 @@
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="endpoint" type="android.hardware.usb.UsbEndpoint">
</parameter>
<parameter name="buffer" type="byte[]">
</parameter>
<parameter name="length" type="int">
</parameter>
<parameter name="timeout" type="int">
</parameter>
</method>
<method name="getProductId"
 return="int"
<method name="claimInterface"
 return="boolean"
 abstract="false"
 native="false"
 synchronized="false"
@@ -95093,9 +95087,13 @@
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="intf" type="android.hardware.usb.UsbInterface">
</parameter>
<parameter name="force" type="boolean">
</parameter>
</method>
<method name="getSerial"
 return="java.lang.String"
<method name="close"
 return="void"
 abstract="false"
 native="false"
 synchronized="false"
@@ -95105,7 +95103,7 @@
 visibility="public"
>
</method>
<method name="getVendorId"
<method name="controlTransfer"
 return="int"
 abstract="false"
 native="false"
@@ -95115,9 +95113,23 @@
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="requestType" type="int">
</parameter>
<parameter name="request" type="int">
</parameter>
<parameter name="value" type="int">
</parameter>
<parameter name="index" type="int">
</parameter>
<parameter name="buffer" type="byte[]">
</parameter>
<parameter name="length" type="int">
</parameter>
<parameter name="timeout" type="int">
</parameter>
</method>
<method name="releaseInterface"
 return="boolean"
<method name="getFileDescriptor"
 return="int"
 abstract="false"
 native="false"
 synchronized="false"
@@ -95126,11 +95138,9 @@
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="intf" type="android.hardware.usb.UsbInterface">
</parameter>
</method>
<method name="requestWait"
 return="android.hardware.usb.UsbRequest"
<method name="getSerial"
 return="java.lang.String"
 abstract="false"
 native="false"
 synchronized="false"
@@ -95140,8 +95150,8 @@
 visibility="public"
>
</method>
<method name="writeToParcel"
 return="void"
<method name="releaseInterface"
 return="boolean"
 abstract="false"
 native="false"
 synchronized="false"
@@ -95150,27 +95160,26 @@
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="parcel" type="android.os.Parcel">
</parameter>
<parameter name="flags" type="int">
<parameter name="intf" type="android.hardware.usb.UsbInterface">
</parameter>
</method>
<field name="CREATOR"
 type="android.os.Parcelable.Creator"
 transient="false"
 volatile="false"
 static="true"
 final="true"
<method name="requestWait"
 return="android.hardware.usb.UsbRequest"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</field>
</method>
</class>
<class name="UsbEndpoint"
 extends="java.lang.Object"
 abstract="false"
 static="false"
 final="true"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
@@ -95209,17 +95218,6 @@
 visibility="public"
>
</method>
<method name="getDevice"
 return="android.hardware.usb.UsbDevice"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="getDirection"
 return="int"
 abstract="false"
@@ -95242,17 +95240,6 @@
 visibility="public"
>
</method>
<method name="getInterface"
 return="android.hardware.usb.UsbInterface"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="getInterval"
 return="int"
 abstract="false"
@@ -95333,17 +95320,6 @@
 visibility="public"
>
</method>
<method name="getDevice"
 return="android.hardware.usb.UsbDevice"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="getEndpoint"
 return="android.hardware.usb.UsbEndpoint"
 abstract="false"
@@ -95494,32 +95470,6 @@
<parameter name="accessory" type="android.hardware.usb.UsbAccessory">
</parameter>
</method>
<method name="isFunctionEnabled"
 return="boolean"
 abstract="false"
 native="false"
 synchronized="false"
 static="true"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="function" type="java.lang.String">
</parameter>
</method>
<method name="isFunctionSupported"
 return="boolean"
 abstract="false"
 native="false"
 synchronized="false"
 static="true"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="function" type="java.lang.String">
</parameter>
</method>
<method name="openAccessory"
 return="android.os.ParcelFileDescriptor"
 abstract="false"
@@ -95534,7 +95484,7 @@
</parameter>
</method>
<method name="openDevice"
 return="boolean"
 return="android.hardware.usb.UsbDeviceConnection"
 abstract="false"
 native="false"
 synchronized="false"
@@ -95620,17 +95570,6 @@
 visibility="public"
>
</field>
<field name="ACTION_USB_STATE"
 type="java.lang.String"
 transient="false"
 volatile="false"
 value="&quot;android.hardware.usb.action.USB_STATE&quot;"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="EXTRA_ACCESSORY"
 type="java.lang.String"
 transient="false"
@@ -95664,105 +95603,6 @@
 visibility="public"
>
</field>
<field name="USB_CONFIGURATION"
 type="java.lang.String"
 transient="false"
 volatile="false"
 value="&quot;configuration&quot;"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="USB_CONNECTED"
 type="java.lang.String"
 transient="false"
 volatile="false"
 value="&quot;connected&quot;"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="USB_FUNCTION_ACCESSORY"
 type="java.lang.String"
 transient="false"
 volatile="false"
 value="&quot;accessory&quot;"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="USB_FUNCTION_ADB"
 type="java.lang.String"
 transient="false"
 volatile="false"
 value="&quot;adb&quot;"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="USB_FUNCTION_DISABLED"
 type="java.lang.String"
 transient="false"
 volatile="false"
 value="&quot;disabled&quot;"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="USB_FUNCTION_ENABLED"
 type="java.lang.String"
 transient="false"
 volatile="false"
 value="&quot;enabled&quot;"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="USB_FUNCTION_MASS_STORAGE"
 type="java.lang.String"
 transient="false"
 volatile="false"
 value="&quot;mass_storage&quot;"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="USB_FUNCTION_MTP"
 type="java.lang.String"
 transient="false"
 volatile="false"
 value="&quot;mtp&quot;"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="USB_FUNCTION_RNDIS"
 type="java.lang.String"
 transient="false"
 volatile="false"
 value="&quot;rndis&quot;"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
</class>
<class name="UsbRequest"
 extends="java.lang.Object"
@@ -95834,6 +95674,8 @@
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="connection" type="android.hardware.usb.UsbDeviceConnection">
</parameter>
<parameter name="endpoint" type="android.hardware.usb.UsbEndpoint">
</parameter>
</method>
@@ -112607,255 +112449,6 @@
</package>
<package name="android.mtp"
>
<class name="MtpClient"
 extends="java.lang.Object"
 abstract="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<constructor name="MtpClient"
 type="android.mtp.MtpClient"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="context" type="android.content.Context">
</parameter>
</constructor>
<method name="addListener"
 return="void"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="listener" type="android.mtp.MtpClient.Listener">
</parameter>
</method>
<method name="close"
 return="void"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="deleteObject"
 return="boolean"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="deviceName" type="java.lang.String">
</parameter>
<parameter name="objectHandle" type="int">
</parameter>
</method>
<method name="getDevice"
 return="android.mtp.MtpDevice"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="deviceName" type="java.lang.String">
</parameter>
</method>
<method name="getDevice"
 return="android.mtp.MtpDevice"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="id" type="int">
</parameter>
</method>
<method name="getDeviceList"
 return="java.util.List&lt;android.mtp.MtpDevice&gt;"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="getObject"
 return="byte[]"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="deviceName" type="java.lang.String">
</parameter>
<parameter name="objectHandle" type="int">
</parameter>
<parameter name="objectSize" type="int">
</parameter>
</method>
<method name="getObjectInfo"
 return="android.mtp.MtpObjectInfo"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="deviceName" type="java.lang.String">
</parameter>
<parameter name="objectHandle" type="int">
</parameter>
</method>
<method name="getObjectList"
 return="java.util.List&lt;android.mtp.MtpObjectInfo&gt;"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="deviceName" type="java.lang.String">
</parameter>
<parameter name="storageId" type="int">
</parameter>
<parameter name="objectHandle" type="int">
</parameter>
</method>
<method name="getStorageList"
 return="java.util.List&lt;android.mtp.MtpStorageInfo&gt;"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="deviceName" type="java.lang.String">
</parameter>
</method>
<method name="getThumbnail"
 return="byte[]"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="deviceName" type="java.lang.String">
</parameter>
<parameter name="objectHandle" type="int">
</parameter>
</method>
<method name="importFile"
 return="boolean"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="deviceName" type="java.lang.String">
</parameter>
<parameter name="objectHandle" type="int">
</parameter>
<parameter name="destPath" type="java.lang.String">
</parameter>
</method>
<method name="isCamera"
 return="boolean"
 abstract="false"
 native="false"
 synchronized="false"
 static="true"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="device" type="android.hardware.usb.UsbDevice">
</parameter>
</method>
<method name="removeListener"
 return="void"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="listener" type="android.mtp.MtpClient.Listener">
</parameter>
</method>
</class>
<interface name="MtpClient.Listener"
 abstract="true"
 static="true"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<method name="deviceAdded"
 return="void"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="device" type="android.mtp.MtpDevice">
</parameter>
</method>
<method name="deviceRemoved"
 return="void"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="device" type="android.mtp.MtpDevice">
</parameter>
</method>
</interface>
<class name="MtpConstants"
 extends="java.lang.Object"
 abstract="false"
@@ -113765,7 +113358,7 @@
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="manager" type="android.hardware.usb.UsbManager">
<parameter name="connection" type="android.hardware.usb.UsbDeviceConnection">
</parameter>
</method>
</class>
@@ -267438,7 +267031,7 @@
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="arg0" type="T">
<parameter name="t" type="T">
</parameter>
</method>
</interface>
+9 −141
Original line number Diff line number Diff line
@@ -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);
}
+163 −0

File added.

Preview size limit exceeded, changes collapsed.

+5 −32

File changed.

Preview size limit exceeded, changes collapsed.

+6 −28

File changed.

Preview size limit exceeded, changes collapsed.

Loading