Example usage for android.hardware.usb UsbDevice getInterfaceCount

List of usage examples for android.hardware.usb UsbDevice getInterfaceCount

Introduction

In this page you can find the example usage for android.hardware.usb UsbDevice getInterfaceCount.

Prototype

public int getInterfaceCount() 

Source Link

Document

Returns the number of UsbInterface s this device contains.

Usage

From source file:org.chromium.latency.walt.Connection.java

public UsbDevice findUsbDevice() {

    mLogger.log(String.format("Looking for TeensyUSB VID=0x%x PID=0x%x", getVid(), getPid()));

    HashMap<String, UsbDevice> deviceHash = mUsbManager.getDeviceList();
    if (deviceHash.size() == 0) {
        mLogger.log("No connected USB devices found");
        return null;
    }/*ww  w .ja  v a 2  s  .co  m*/

    mLogger.log("Found " + deviceHash.size() + " connected USB devices:");

    UsbDevice usbDevice = null;

    for (String key : deviceHash.keySet()) {

        UsbDevice dev = deviceHash.get(key);

        String msg = String.format(Locale.US, "USB Device: %s, VID:PID - %x:%x, %d interfaces", key,
                dev.getVendorId(), dev.getProductId(), dev.getInterfaceCount());

        if (dev.getVendorId() == getVid() && dev.getProductId() == getPid()) {
            usbDevice = dev;
            msg += " <- using this one.";
        }

        mLogger.log(msg);
    }
    return usbDevice;
}

From source file:org.chromium.latency.walt.BaseUsbConnection.java

public UsbDevice findUsbDevice() {

    logger.log(String.format("Looking for TeensyUSB VID=0x%x PID=0x%x", getVid(), getPid()));

    HashMap<String, UsbDevice> deviceHash = usbManager.getDeviceList();
    if (deviceHash.size() == 0) {
        logger.log("No connected USB devices found");
        return null;
    }/*from   ww  w .  jav  a 2  s . c  o  m*/

    logger.log("Found " + deviceHash.size() + " connected USB devices:");

    UsbDevice usbDevice = null;

    for (String key : deviceHash.keySet()) {

        UsbDevice dev = deviceHash.get(key);

        String msg = String.format(Locale.US, "USB Device: %s, VID:PID - %x:%x, %d interfaces", key,
                dev.getVendorId(), dev.getProductId(), dev.getInterfaceCount());

        if (isCompatibleUsbDevice(dev)) {
            usbDevice = dev;
            msg = "Using " + msg;
        } else {
            msg = "Skipping " + msg;
        }

        logger.log(msg);
    }
    return usbDevice;
}

From source file:org.ros.android.android_acm_serial.AcmDevice.java

public AcmDevice(UsbDeviceConnection usbDeviceConnection, UsbDevice usbDevice) {
    Preconditions.checkNotNull(usbDeviceConnection);
    this.usbDeviceConnection = usbDeviceConnection;

    // Go through all declared interfaces and automatically select the one that looks
    // like an ACM interface
    UsbInterface usbInterface = null;/*from   w  w w . j  a v a  2s .c o m*/
    AcmUsbEndpoints acmUsbEndpoints = null;
    for (int i = 0; i < usbDevice.getInterfaceCount() && acmUsbEndpoints == null; i++) {
        usbInterface = usbDevice.getInterface(i);
        Preconditions.checkNotNull(usbInterface);
        Preconditions.checkState(usbDeviceConnection.claimInterface(usbInterface, true));
        acmUsbEndpoints = getAcmEndpoints(usbInterface);
    }
    if (acmUsbEndpoints == null) {
        throw new IllegalArgumentException(
                "Couldn't find an interface that looks like ACM on this USB device: " + usbDevice);
    }

    this.usbInterface = usbInterface;
    this.usbDevice = usbDevice;
    usbRequestPool = new UsbRequestPool(usbDeviceConnection);
    usbRequestPool.addEndpoint(acmUsbEndpoints.getOutgoing(), null);
    usbRequestPool.start();

    outputStream = new AcmOutputStream(usbRequestPool, acmUsbEndpoints.getOutgoing());
    inputStream = new AcmInputStream(usbDeviceConnection, acmUsbEndpoints.getIncoming());
}

From source file:com.nps.micro.MainActivity.java

private boolean isExpectedDevice(UsbDevice device) {
    if (device == null) {
        return false;
    }//  www .  j a  va  2s  .c o  m
    for (DeviceId devId : deviceIds) {
        if (devId.equals(device)) {
            for (int i = 0; i < device.getInterfaceCount(); i++) {
                if (device.getInterface(i).getInterfaceClass() == UsbConstants.USB_CLASS_CDC_DATA) {
                    return true;
                }
            }
        }
    }
    return false;
}

From source file:com.dslr.dashboard.PtpService.java

public void searchForUsbCamera() {
    boolean deviceFound = false;
    try {//from www.j  a  va  2  s .  c om
        if (mUsbDevice == null) {
            Log.d(TAG, "Ptp service usb device not initialized, search for one");

            if (mUsbManager != null) {
                HashMap<String, UsbDevice> devices = mUsbManager.getDeviceList();
                Log.d(TAG, "Found USB devices count: " + devices.size());
                Iterator<UsbDevice> iterator = devices.values().iterator();
                while (iterator.hasNext()) {
                    UsbDevice usbDevice = iterator.next();
                    Log.d(TAG,
                            "USB Device: " + usbDevice.getDeviceName() + " Product ID: "
                                    + usbDevice.getProductId() + " Vendor ID: " + usbDevice.getVendorId()
                                    + " Interface count: " + usbDevice.getInterfaceCount());
                    for (int i = 0; i < usbDevice.getInterfaceCount(); i++) {
                        UsbInterface intf = usbDevice.getInterface(i);
                        Log.d(TAG, "Interface class: " + intf.getInterfaceClass());
                        if (intf.getInterfaceClass() == android.hardware.usb.UsbConstants.USB_CLASS_STILL_IMAGE) {
                            //mUsbDevice = usbDevice;
                            Log.d(TAG, "Ptp Service imaging usb device found requesting permission");
                            mUsbManager.requestPermission(usbDevice, mPermissionIntent);
                            deviceFound = true;
                            break;
                        }
                    }
                    if (deviceFound)
                        break;
                }
            } else
                Log.d(TAG, "USB Manager is unavailable");

        } else {
            Log.d(TAG, "Ptp service usb imaging device already present");
            //_usbManager.requestPermission(_usbDevice, mPermissionIntent);
        }
    } catch (Exception e) {
        Log.d(TAG, "PtpService search for USB camrea exception: " + e.getMessage());
    }

}

From source file:fr.bmartel.android.fadecandy.service.FadecandyService.java

/**
 * Open USB device & choose USBEndpoint.
 *
 * @param device Usb device object./*from w  ww.  j av a 2 s  .c om*/
 * @return Ubs item composed of USBDevice , USBEndpoint & UsbConnection
 */
private UsbItem openDevice(UsbDevice device) {

    UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);

    try {
        UsbDeviceConnection connection = manager.openDevice(device);

        Log.v("USB", "Device name=" + device.getDeviceName());

        UsbInterface intf = null;

        for (int interfaceIndex = 0; interfaceIndex < device.getInterfaceCount(); interfaceIndex++) {

            UsbInterface usbInterface = device.getInterface(interfaceIndex);

            if (usbInterface.getInterfaceClass() == UsbConstants.USB_CLASS_VENDOR_SPEC) {
                intf = usbInterface;
            }
        }

        if (intf == null) {
            intf = device.getInterface(0);
        }

        UsbEndpoint endpoint = intf.getEndpoint(0);

        if (connection != null) {
            connection.claimInterface(intf, true);
        } else {
            Log.e(TAG, "USB connection error");
            return null;
        }

        return new UsbItem(device, connection, endpoint);

    } catch (IllegalArgumentException e) {
    }
    return null;
}

From source file:com.googlecode.android_scripting.facade.USBHostSerialFacade.java

/**
 * openDevice: open the USB device {{{1/*from w w w  .j a va2s .  com*/
 */
private void openDevice(UsbDevice device) {
    switch (device.getDeviceClass()) {
    case UsbConstants.USB_CLASS_PER_INTERFACE:
        // / 78K Trg-USB Serial
        Log.d("USB openDevice, device => USB_CLASS_PER_INTERFACE");
        break;
    case UsbConstants.USB_CLASS_COMM:
        // / PIC24 USB CDC
        Log.d("USB openDevice, device => USB_CLASS_COMM");
        break;
    default:
        Log.d("USB openDevice, device is not serial...");
        return;
    }

    UsbSerialConnection conn;
    try {
        conn = getConnection(device);
    } catch (IOException e) {
        Log.d("USB openDevice, can't get from connections 1");
        return;
    }
    if (conn == null) {
        Log.d("USB openDevice, can't get from connections 2");
        return;
    }

    Log.d("USB openDevice, try to open...");

    UsbDeviceConnection connection = mUsbManager.openDevice(device);
    if (connection == null) {
        Log.d("connection failed at openDevice...");
        // conn.close();
        return;
    }

    int i, j;

    Log.d("USB open SUCCESS");
    if (conn.mConnection != null) {
        Log.i("already connected? => stop thread");
        conn.stop();
    }
    conn.mConnection = connection;

    if (options.contains("trg78k")) {
        Log.d("USB Host Serial: reset the device (trg78k)");
        // conn.mConnection.controlTransfer(0x21, 0x22, 0x00, 0, null, 0, 0);
        byte[] data = { (byte) 0x03, (byte) 0x01 };
        conn.mConnection.controlTransfer(0x40, 0x00, 0x00, 0, null, 0, 0);
        conn.mConnection.controlTransfer(0x40, 0x0b, 0x00, 0, data, 2, 300);
    }

    for (i = 0; i < device.getInterfaceCount(); i++) {
        UsbInterface ui = device.getInterface(i);
        for (j = 0; j < ui.getEndpointCount(); j++) {
            Log.d(String.format("EndPoint loop...(%d, %d)", i, j));
            UsbEndpoint endPoint = ui.getEndpoint(j);
            switch (endPoint.getType()) {
            case UsbConstants.USB_ENDPOINT_XFER_BULK:
                if (endPoint.getDirection() == UsbConstants.USB_DIR_IN) {
                    conn.mInterfaceIn = ui;
                    conn.mEndpointIn = endPoint;
                    Log.d("USB mEndpointIn initialized!");
                } else {
                    conn.mInterfaceOut = ui;
                    conn.mEndpointOut = endPoint;
                    Log.d("USB mEndpointOut initialized!");
                }
                break;
            case UsbConstants.USB_ENDPOINT_XFER_CONTROL:
                break;
            case UsbConstants.USB_ENDPOINT_XFER_INT:
                conn.mEndpointIntr = endPoint;
                Log.d("USB mEndpointIntr initialized!");
                break;
            case UsbConstants.USB_ENDPOINT_XFER_ISOC:
                break;
            }
        }
    }

    if (options.contains("pl2303")) {
        Log.d("USB Host Serial: setup device (pl2303)");
        int ret;
        byte[] data = new byte[10];
        final byte rdReq = 0x01;
        final byte rdReqType = (byte) 0xC0;
        final byte wrReq = 0x01;
        final byte wrReqType = 0x40;
        final byte glReq = 0x21;
        final byte glReqType = (byte) 0xA1;
        final byte slReq = 0x20;
        final byte slReqType = (byte) 0x21;
        final byte bkReq = 0x23;
        final byte bkReqType = 0x21;
        int pl2303type = 1;

        UsbInterface ui = device.getInterface(0);
        connection.claimInterface(ui, true);
        /*
         * try { /// this cause device close by native_claiminterface. Thread.sleep(1000); } catch
         * (InterruptedException e) { Log.d("USB Host Serial: failed to sleep(1000)"); }
         */
        // / after API Level 13: if (connection.getRawDescriptors()[7] == 64) {
        // pl2303type = 1;
        // }

        connection.controlTransfer(rdReqType, rdReq, 0x8484, 0, data, 1, 100);
        connection.controlTransfer(wrReqType, wrReq, 0x0404, 0, null, 0, 100);
        connection.controlTransfer(rdReqType, rdReq, 0x8484, 0, data, 1, 100);
        connection.controlTransfer(rdReqType, rdReq, 0x8383, 0, data, 1, 100);
        connection.controlTransfer(rdReqType, rdReq, 0x8484, 0, data, 1, 100);
        connection.controlTransfer(wrReqType, wrReq, 0x0404, 1, null, 0, 100);
        connection.controlTransfer(rdReqType, rdReq, 0x8484, 0, data, 1, 100);
        connection.controlTransfer(rdReqType, rdReq, 0x8383, 0, data, 1, 100);
        connection.controlTransfer(wrReqType, wrReq, 0x0000, 1, null, 0, 100);
        connection.controlTransfer(wrReqType, wrReq, 0x0001, 0, null, 0, 100);

        // **type HX**
        // device class != 2
        // packet size == 64
        if (pl2303type == 1) {
            connection.controlTransfer(wrReqType, wrReq, 0x0002, 0x44, null, 0, 100);
        } else {
            connection.controlTransfer(wrReqType, wrReq, 0x0002, 0x24, null, 0, 100);
        }

        /*
         * // reset the device (HX) if (type != 2) { // TODO: halt } else {
         * connection.controlTransfer(wrReqType, wrReq, 0x0008, 0, null, 0, 100);
         * connection.controlTransfer(wrReqType, wrReq, 0x0009, 0, null, 0, 100); }
         */
        // initilize serial
        ret = connection.controlTransfer(glReqType, glReq, 0x0000, 0x00, data, 7, 100);
        Log.d(String.format("pl2303: GetLineRequest: %x => %x-%x-%x-%x-%x-%x-%x", ret, data[0], data[1],
                data[2], data[3], data[4], data[5], data[6]));

        // ret = connection.controlTransfer(wrReqType, wrReq, 0x0000, 0x01, null, 0, 100);
        // Log.d(String.format("pl2303: WriteRequest: %x", ret));

        int baud = 9600;
        data[0] = (byte) (baud & 0xFF);
        data[1] = (byte) ((baud >> 8) & 0xFF);
        data[2] = (byte) ((baud >> 16) & 0xFF);
        data[3] = (byte) ((baud >> 24) & 0xFF);
        data[4] = 0; // stopbit: 1bit, 1: 1.5bits, 2: 2bits
        data[5] = 0; // parity: None, 1:odd, 2:even, 3:mark, 4:space
        data[6] = 8; // data size: 8, 5, 6, 7
        data[7] = 0x00;
        ret = connection.controlTransfer(slReqType, slReq, 0x0000, 0x00, data, 7, 100);
        Log.d(String.format("pl2303: SetLineRequest: %x", ret));

        // set break off
        ret = connection.controlTransfer(bkReqType, bkReq, 0x0000, 0x00, null, 0, 100);

        if (pl2303type == 1) {
            // for RTSCTS and HX device
            ret = connection.controlTransfer(wrReqType, wrReq, 0x0000, 0x61, null, 0, 100);
        } else {
            // for not RTSCTS
            ret = connection.controlTransfer(wrReqType, wrReq, 0x0000, 0x00, null, 0, 100);
        }

        // connection.releaseInterface(ui);
    }

    if (!conn.isConnected()) {
        connectionFailed();
        return;
    }
    conn.start();
}