List of usage examples for android.hardware.usb UsbInterface getEndpoint
public UsbEndpoint getEndpoint(int index)
From source file:org.ros.android.android_acm_serial.AcmDevice.java
/** * Goes through the given UsbInterface's endpoints and finds the incoming * and outgoing bulk transfer endpoints. * @return Array with incoming (first) and outgoing (second) USB endpoints * @return <code>null</code> in case either of the endpoints is not found */// ww w. j a v a 2 s. co m private AcmUsbEndpoints getAcmEndpoints(UsbInterface usbInterface) { UsbEndpoint outgoingEndpoint = null; UsbEndpoint incomingEndpoint = null; for (int i = 0; i < usbInterface.getEndpointCount(); i++) { UsbEndpoint endpoint = usbInterface.getEndpoint(i); log.info("Interface: " + i + "/" + "Class: " + usbInterface.getInterfaceClass()); if (usbInterface.getInterfaceClass() == UsbConstants.USB_CLASS_CDC_DATA) { if (endpoint.getDirection() == UsbConstants.USB_DIR_OUT) { log.info("Endpoint " + i + "/" + usbInterface.getEndpointCount() + ": " + endpoint + ". Type = " + endpoint.getType()); outgoingEndpoint = endpoint; } else if (endpoint.getDirection() == UsbConstants.USB_DIR_IN) { log.info("Endpoint " + i + "/" + usbInterface.getEndpointCount() + ": " + endpoint + ". Type = " + endpoint.getType()); incomingEndpoint = endpoint; } } } if (outgoingEndpoint == null || incomingEndpoint == null) { return null; } else { return new AcmUsbEndpoints(incomingEndpoint, outgoingEndpoint); } }
From source file:aws.apps.usbDeviceEnumerator.ui.usbinfo.AndroidUsbInfoFragment.java
private void populateDataTable(LayoutInflater inflater) { final String vid = CommonLogic.padLeft(Integer.toHexString(device.getVendorId()), "0", 4); final String pid = CommonLogic.padLeft(Integer.toHexString(device.getProductId()), "0", 4); final String deviceClass = UsbConstants.resolveUsbClass(device.getDeviceClass()); viewHolder.getLogo().setImageResource(R.drawable.no_image); viewHolder.getVid().setText(vid);/*from w w w . j a v a 2 s . c o m*/ viewHolder.getPid().setText(pid); viewHolder.getDevicePath().setText(usbKey); viewHolder.getDeviceClass().setText(deviceClass); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { viewHolder.getReportedVendor().setText(device.getManufacturerName()); viewHolder.getReportedProduct().setText(device.getProductName()); } else { viewHolder.getReportedVendor().setText("not provided"); viewHolder.getReportedProduct().setText("not provided"); } UsbInterface iFace; for (int i = 0; i < device.getInterfaceCount(); i++) { iFace = device.getInterface(i); if (iFace != null) { final TableLayout bottomTable = viewHolder.getBottomTable(); final String usbClass = UsbConstants.resolveUsbClass((iFace.getInterfaceClass())); CommonLogic.addDataRow(inflater, bottomTable, getString(R.string.interface_) + i, ""); CommonLogic.addDataRow(inflater, bottomTable, getString(R.string.class_), usbClass); if (iFace.getEndpointCount() > 0) { String endpointText; for (int j = 0; j < iFace.getEndpointCount(); j++) { endpointText = getEndpointText(iFace.getEndpoint(j), j); CommonLogic.addDataRow(inflater, bottomTable, getString(R.string.endpoint_), endpointText); } } else { CommonLogic.addDataRow(inflater, bottomTable, "\tEndpoints:", "none"); } } } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { loadAsyncData(vid, pid, device.getManufacturerName()); } else { loadAsyncData(vid, pid, null); } }
From source file:fr.bmartel.android.fadecandy.service.FadecandyService.java
/** * Open USB device & choose USBEndpoint. * * @param device Usb device object./*from w w w. ja va 2 s.c o m*/ * @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/* w w w . j av a 2 s .c om*/ */ 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(); }