Java Code Examples for android.hardware.usb.UsbConstants#USB_DIR_IN
The following examples show how to use
android.hardware.usb.UsbConstants#USB_DIR_IN .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: UsbHidDevice.java From UsbHid with MIT License | 6 votes |
private UsbHidDevice(UsbDevice usbDevice, UsbInterface usbInterface, UsbManager usbManager) { mUsbDevice = usbDevice; mUsbInterface = usbInterface; mUsbManager= usbManager; for (int i = 0; i < mUsbInterface.getEndpointCount(); i++) { UsbEndpoint endpoint = mUsbInterface.getEndpoint(i); int dir = endpoint.getDirection(); int type = endpoint.getType(); if (mInUsbEndpoint == null && dir == UsbConstants.USB_DIR_IN && type == UsbConstants.USB_ENDPOINT_XFER_INT) { mInUsbEndpoint = endpoint; } if (mOutUsbEndpoint == null && dir == UsbConstants.USB_DIR_OUT && type == UsbConstants.USB_ENDPOINT_XFER_INT) { mOutUsbEndpoint = endpoint; } } }
Example 2
Source File: CdcAcmSerialDriver.java From usb-serial-for-android with GNU Lesser General Public License v2.1 | 6 votes |
private void openSingleInterface() throws IOException { // the following code is inspired by the cdc-acm driver in the linux kernel mControlIndex = 0; mControlInterface = mDevice.getInterface(0); mDataInterface = mDevice.getInterface(0); if (!mConnection.claimInterface(mControlInterface, true)) { throw new IOException("Could not claim shared control/data interface"); } for (int i = 0; i < mControlInterface.getEndpointCount(); ++i) { UsbEndpoint ep = mControlInterface.getEndpoint(i); if ((ep.getDirection() == UsbConstants.USB_DIR_IN) && (ep.getType() == UsbConstants.USB_ENDPOINT_XFER_INT)) { mControlEndpoint = ep; } else if ((ep.getDirection() == UsbConstants.USB_DIR_IN) && (ep.getType() == UsbConstants.USB_ENDPOINT_XFER_BULK)) { mReadEndpoint = ep; } else if ((ep.getDirection() == UsbConstants.USB_DIR_OUT) && (ep.getType() == UsbConstants.USB_ENDPOINT_XFER_BULK)) { mWriteEndpoint = ep; } } if (mControlEndpoint == null) { throw new IOException("No control endpoint"); } }
Example 3
Source File: UsbSession.java From yubikit-android with Apache License 2.0 | 6 votes |
/** * Gets bulkin and bulkout endpoints of specified interface * @param usbInterface interface of usb device * @return the pair of endpoints: in and out */ private Pair<UsbEndpoint, UsbEndpoint> findEndpoints(UsbInterface usbInterface, int type) { UsbEndpoint endpointIn = null; UsbEndpoint endpointOut = null; for (int i = 0; i < usbInterface.getEndpointCount(); i++) { UsbEndpoint endpoint = usbInterface.getEndpoint(i); if (endpoint.getType() == type) { if (endpoint.getDirection() == UsbConstants.USB_DIR_IN) { endpointIn = endpoint; } else { endpointOut = endpoint; } } } return new Pair<>(endpointIn, endpointOut); }
Example 4
Source File: Cp21xxSerialDriver.java From usb-serial-for-android with GNU Lesser General Public License v2.1 | 6 votes |
@Override protected void openInt(UsbDeviceConnection connection) throws IOException { mIsRestrictedPort = mDevice.getInterfaceCount() == 2 && mPortNumber == 1; if(mPortNumber >= mDevice.getInterfaceCount()) { throw new IOException("Unknown port number"); } UsbInterface dataIface = mDevice.getInterface(mPortNumber); if (!mConnection.claimInterface(dataIface, true)) { throw new IOException("Could not claim interface " + mPortNumber); } for (int i = 0; i < dataIface.getEndpointCount(); i++) { UsbEndpoint ep = dataIface.getEndpoint(i); if (ep.getType() == UsbConstants.USB_ENDPOINT_XFER_BULK) { if (ep.getDirection() == UsbConstants.USB_DIR_IN) { mReadEndpoint = ep; } else { mWriteEndpoint = ep; } } } setConfigSingle(SILABSER_IFC_ENABLE_REQUEST_CODE, UART_ENABLE); setConfigSingle(SILABSER_SET_MHS_REQUEST_CODE, MCR_ALL | CONTROL_WRITE_DTR | CONTROL_WRITE_RTS); // setConfigSingle(SILABSER_SET_BAUDDIV_REQUEST_CODE, BAUD_RATE_GEN_FREQ / DEFAULT_BAUD_RATE); // setParameters(DEFAULT_BAUD_RATE, DEFAULT_DATA_BITS, DEFAULT_STOP_BITS, DEFAULT_PARITY); }
Example 5
Source File: XferUtils.java From USBIPServerForAndroid with GNU General Public License v3.0 | 5 votes |
public static int doBulkTransfer(UsbDeviceConnection devConn, UsbEndpoint endpoint, byte[] buff, int timeout) { int bytesTransferred = 0; while (bytesTransferred < buff.length) { byte[] remainingBuffer = new byte[buff.length - bytesTransferred]; if (endpoint.getDirection() == UsbConstants.USB_DIR_OUT) { // Copy input data into the new buffer System.arraycopy(buff, bytesTransferred, remainingBuffer, 0, remainingBuffer.length); } int res = devConn.bulkTransfer(endpoint, remainingBuffer, remainingBuffer.length, timeout); if (res < 0) { // Failed transfer terminates the bulk transfer res = -Errno.getErrno(); if (res != -110) { // Don't print for ETIMEDOUT System.err.println("Bulk Xfer failed: "+res); } return res; } if (endpoint.getDirection() == UsbConstants.USB_DIR_IN) { // Copy output data into the original buffer System.arraycopy(remainingBuffer, 0, buff, bytesTransferred, res); } bytesTransferred += res; if (res < endpoint.getMaxPacketSize()) { // A packet less than the maximum size for this endpoint // indicates the transfer has ended break; } } return bytesTransferred; }
Example 6
Source File: UsbSerialDevice.java From UsbSerial with MIT License | 5 votes |
@Override public void doRun() { UsbRequest request = connection.requestWait(); if(request != null && request.getEndpoint().getType() == UsbConstants.USB_ENDPOINT_XFER_BULK && request.getEndpoint().getDirection() == UsbConstants.USB_DIR_IN) { byte[] data = serialBuffer.getDataReceived(); // FTDI devices reserves two first bytes of an IN endpoint with info about // modem and Line. if(isFTDIDevice()) { ((FTDISerialDevice) usbSerialDevice).ftdiUtilities.checkModemStatus(data); //Check the Modem status serialBuffer.clearReadBuffer(); if(data.length > 2) { data = FTDISerialDevice.adaptArray(data); onReceivedData(data); } }else { // Clear buffer, execute the callback serialBuffer.clearReadBuffer(); onReceivedData(data); } // Queue a new request requestIN.queue(serialBuffer.getReadBuffer(), SerialBuffer.DEFAULT_READ_BUFFER_SIZE); } }
Example 7
Source File: CDCSerialDevice.java From UsbSerial with MIT License | 5 votes |
private boolean openCDC() { if(connection.claimInterface(mInterface, true)) { Log.i(CLASS_ID, "Interface succesfully claimed"); }else { Log.i(CLASS_ID, "Interface could not be claimed"); return false; } // Assign endpoints int numberEndpoints = mInterface.getEndpointCount(); for(int i=0;i<=numberEndpoints-1;i++) { UsbEndpoint endpoint = mInterface.getEndpoint(i); if(endpoint.getType() == UsbConstants.USB_ENDPOINT_XFER_BULK && endpoint.getDirection() == UsbConstants.USB_DIR_IN) { inEndpoint = endpoint; }else if(endpoint.getType() == UsbConstants.USB_ENDPOINT_XFER_BULK && endpoint.getDirection() == UsbConstants.USB_DIR_OUT) { outEndpoint = endpoint; } } if(outEndpoint == null || inEndpoint == null) { Log.i(CLASS_ID, "Interface does not have an IN or OUT interface"); return false; } // Default Setup setControlCommand(CDC_SET_LINE_CODING, 0, getInitialLineCoding()); setControlCommand(CDC_SET_CONTROL_LINE_STATE, CDC_CONTROL_LINE_ON, null); return true; }
Example 8
Source File: Ch34xSerialDriver.java From OkUSB with Apache License 2.0 | 4 votes |
@Override public void open(UsbDeviceConnection connection) throws IOException { if (mConnection != null) { throw new IOException("Already opened."); } mConnection = connection; boolean opened = false; try { for (int i = 0; i < mDevice.getInterfaceCount(); i++) { UsbInterface usbIface = mDevice.getInterface(i); if (mConnection.claimInterface(usbIface, true)) { Log.d(TAG, "claimInterface " + i + " SUCCESS"); } else { Log.d(TAG, "claimInterface " + i + " FAIL"); } } UsbInterface dataIface = mDevice.getInterface(mDevice.getInterfaceCount() - 1); for (int i = 0; i < dataIface.getEndpointCount(); i++) { UsbEndpoint ep = dataIface.getEndpoint(i); if (ep.getType() == UsbConstants.USB_ENDPOINT_XFER_BULK) { if (ep.getDirection() == UsbConstants.USB_DIR_IN) { mReadEndpoint = ep; } else { mWriteEndpoint = ep; } } } initialize(); setBaudRate(DEFAULT_BAUD_RATE); opened = true; } finally { if (!opened) { try { close(); } catch (IOException e) { // Ignore IOExceptions during close() } } } }
Example 9
Source File: Cp21xxSerialDriver.java From xDrip-Experimental with GNU General Public License v3.0 | 4 votes |
@Override public void open(UsbDeviceConnection connection) throws IOException { if (mConnection != null) { throw new IOException("Already opened."); } mConnection = connection; boolean opened = false; try { for (int i = 0; i < mDevice.getInterfaceCount(); i++) { UsbInterface usbIface = mDevice.getInterface(i); if (mConnection.claimInterface(usbIface, true)) { Log.d(TAG, "claimInterface " + i + " SUCCESS"); } else { Log.d(TAG, "claimInterface " + i + " FAIL"); } } UsbInterface dataIface = mDevice.getInterface(mDevice.getInterfaceCount() - 1); for (int i = 0; i < dataIface.getEndpointCount(); i++) { UsbEndpoint ep = dataIface.getEndpoint(i); if (ep.getType() == UsbConstants.USB_ENDPOINT_XFER_BULK) { if (ep.getDirection() == UsbConstants.USB_DIR_IN) { mReadEndpoint = ep; } else { mWriteEndpoint = ep; } } } setConfigSingle(SILABSER_IFC_ENABLE_REQUEST_CODE, UART_ENABLE); setConfigSingle(SILABSER_SET_MHS_REQUEST_CODE, MCR_ALL | CONTROL_WRITE_DTR | CONTROL_WRITE_RTS); setConfigSingle(SILABSER_SET_BAUDDIV_REQUEST_CODE, BAUD_RATE_GEN_FREQ / DEFAULT_BAUD_RATE); // setParameters(DEFAULT_BAUD_RATE, DEFAULT_DATA_BITS, DEFAULT_STOP_BITS, DEFAULT_PARITY); opened = true; } finally { if (!opened) { try { close(); } catch (IOException e) { // Ignore IOExceptions during close() } } } }
Example 10
Source File: Cp21xxSerialDriver.java From Arduino-Serial-Controller with GNU Lesser General Public License v2.1 | 4 votes |
@Override public void open(UsbDeviceConnection connection) throws IOException { if (mConnection != null) { throw new IOException("Already opened."); } mConnection = connection; boolean opened = false; try { for (int i = 0; i < mDevice.getInterfaceCount(); i++) { UsbInterface usbIface = mDevice.getInterface(i); if (mConnection.claimInterface(usbIface, true)) { Log.d(TAG, "claimInterface " + i + " SUCCESS"); } else { Log.d(TAG, "claimInterface " + i + " FAIL"); } } UsbInterface dataIface = mDevice.getInterface(mDevice.getInterfaceCount() - 1); for (int i = 0; i < dataIface.getEndpointCount(); i++) { UsbEndpoint ep = dataIface.getEndpoint(i); if (ep.getType() == UsbConstants.USB_ENDPOINT_XFER_BULK) { if (ep.getDirection() == UsbConstants.USB_DIR_IN) { mReadEndpoint = ep; } else { mWriteEndpoint = ep; } } } setConfigSingle(SILABSER_IFC_ENABLE_REQUEST_CODE, UART_ENABLE); setConfigSingle(SILABSER_SET_MHS_REQUEST_CODE, MCR_ALL | CONTROL_WRITE_DTR | CONTROL_WRITE_RTS); setConfigSingle(SILABSER_SET_BAUDDIV_REQUEST_CODE, BAUD_RATE_GEN_FREQ / DEFAULT_BAUD_RATE); // setParameters(DEFAULT_BAUD_RATE, DEFAULT_DATA_BITS, DEFAULT_STOP_BITS, DEFAULT_PARITY); opened = true; } finally { if (!opened) { try { close(); } catch (IOException e) { // Ignore IOExceptions during close() } } } }
Example 11
Source File: CH34xSerialDriver.java From Arduino-Serial-Controller with GNU Lesser General Public License v2.1 | 4 votes |
private int controlIn(int request, int value, int index, byte[] buffer) { final int REQTYPE_HOST_TO_DEVICE = UsbConstants.USB_TYPE_VENDOR | UsbConstants.USB_DIR_IN; return mConnection.controlTransfer(REQTYPE_HOST_TO_DEVICE, request, value, index, buffer, buffer.length, USB_TIMEOUT_MILLIS); }
Example 12
Source File: Ch34xSerialDriver.java From usb-with-serial-port with Apache License 2.0 | 4 votes |
private int controlIn(int request, int value, int index, byte[] buffer) { final int REQTYPE_HOST_TO_DEVICE = UsbConstants.USB_TYPE_VENDOR | UsbConstants.USB_DIR_IN; return mConnection.controlTransfer(REQTYPE_HOST_TO_DEVICE, request, value, index, buffer, buffer.length, USB_TIMEOUT_MILLIS); }
Example 13
Source File: FTDISerialDevice.java From UsbSerial with MIT License | 4 votes |
private boolean openFTDI() { if(connection.claimInterface(mInterface, true)) { Log.i(CLASS_ID, "Interface succesfully claimed"); }else { Log.i(CLASS_ID, "Interface could not be claimed"); return false; } // Assign endpoints int numberEndpoints = mInterface.getEndpointCount(); for(int i=0;i<=numberEndpoints-1;i++) { UsbEndpoint endpoint = mInterface.getEndpoint(i); if(endpoint.getType() == UsbConstants.USB_ENDPOINT_XFER_BULK && endpoint.getDirection() == UsbConstants.USB_DIR_IN) { inEndpoint = endpoint; }else { outEndpoint = endpoint; } } // Default Setup firstTime = true; if(setControlCommand(FTDI_SIO_RESET, 0x00, 0) < 0) return false; if(setControlCommand(FTDI_SIO_SET_DATA, FTDI_SET_DATA_DEFAULT, 0) < 0) return false; currentSioSetData = FTDI_SET_DATA_DEFAULT; if(setControlCommand(FTDI_SIO_MODEM_CTRL, FTDI_SET_MODEM_CTRL_DEFAULT1, 0) < 0) return false; if(setControlCommand(FTDI_SIO_MODEM_CTRL, FTDI_SET_MODEM_CTRL_DEFAULT2, 0) < 0) return false; if(setControlCommand(FTDI_SIO_SET_FLOW_CTRL, FTDI_SET_FLOW_CTRL_DEFAULT, 0) < 0) return false; if(setControlCommand(FTDI_SIO_SET_BAUD_RATE, FTDI_BAUDRATE_9600, 0) < 0) return false; // Flow control disabled by default rtsCtsEnabled = false; dtrDsrEnabled = false; return true; }
Example 14
Source File: Cp21xxSerialDriver.java From xDrip with GNU General Public License v3.0 | 4 votes |
@Override public void open(UsbDeviceConnection connection) throws IOException { if (mConnection != null) { throw new IOException("Already opened."); } mConnection = connection; boolean opened = false; try { for (int i = 0; i < mDevice.getInterfaceCount(); i++) { UsbInterface usbIface = mDevice.getInterface(i); if (mConnection.claimInterface(usbIface, true)) { Log.d(TAG, "claimInterface " + i + " SUCCESS"); } else { Log.d(TAG, "claimInterface " + i + " FAIL"); } } UsbInterface dataIface = mDevice.getInterface(mDevice.getInterfaceCount() - 1); for (int i = 0; i < dataIface.getEndpointCount(); i++) { UsbEndpoint ep = dataIface.getEndpoint(i); if (ep.getType() == UsbConstants.USB_ENDPOINT_XFER_BULK) { if (ep.getDirection() == UsbConstants.USB_DIR_IN) { mReadEndpoint = ep; } else { mWriteEndpoint = ep; } } } setConfigSingle(SILABSER_IFC_ENABLE_REQUEST_CODE, UART_ENABLE); setConfigSingle(SILABSER_SET_MHS_REQUEST_CODE, MCR_ALL | CONTROL_WRITE_DTR | CONTROL_WRITE_RTS); setConfigSingle(SILABSER_SET_BAUDDIV_REQUEST_CODE, BAUD_RATE_GEN_FREQ / DEFAULT_BAUD_RATE); // setParameters(DEFAULT_BAUD_RATE, DEFAULT_DATA_BITS, DEFAULT_STOP_BITS, DEFAULT_PARITY); opened = true; } finally { if (!opened) { try { close(); } catch (IOException e) { // Ignore IOExceptions during close() } } } }
Example 15
Source File: CH34xSerialDriver.java From Arduino-Serial-Controller with GNU Lesser General Public License v2.1 | 4 votes |
@Override public void open(UsbDeviceConnection connection) throws IOException { if (mConnection != null) { throw new IOException("Already opened."); } mConnection = connection; boolean opened = false; try { for (int i = 0; i < mDevice.getInterfaceCount(); i++) { UsbInterface usbIface = mDevice.getInterface(i); if (mConnection.claimInterface(usbIface, true)) { Log.d(TAG, "claimInterface " + i + " SUCCESS"); } else { Log.d(TAG, "claimInterface " + i + " FAIL"); } } UsbInterface dataIface = mDevice.getInterface(mDevice.getInterfaceCount() - 1); for (int i = 0; i < dataIface.getEndpointCount(); i++) { UsbEndpoint ep = dataIface.getEndpoint(i); if (ep.getType() == UsbConstants.USB_ENDPOINT_XFER_BULK) { if (ep.getDirection() == UsbConstants.USB_DIR_IN) { mReadEndpoint = ep; } else { mWriteEndpoint = ep; } } } initialize(); setBaudRate(DEFAULT_BAUD_RATE); opened = true; } finally { if (!opened) { try { close(); } catch (IOException e) { // Ignore IOExceptions during close() } } } }
Example 16
Source File: Cp21xxSerialDriver.java From Chorus-RF-Laptimer with MIT License | 4 votes |
@Override public void open(UsbDeviceConnection connection) throws IOException { if (mConnection != null) { throw new IOException("Already opened."); } mConnection = connection; boolean opened = false; try { for (int i = 0; i < mDevice.getInterfaceCount(); i++) { UsbInterface usbIface = mDevice.getInterface(i); if (mConnection.claimInterface(usbIface, true)) { Log.d(TAG, "claimInterface " + i + " SUCCESS"); } else { Log.d(TAG, "claimInterface " + i + " FAIL"); } } UsbInterface dataIface = mDevice.getInterface(mDevice.getInterfaceCount() - 1); for (int i = 0; i < dataIface.getEndpointCount(); i++) { UsbEndpoint ep = dataIface.getEndpoint(i); if (ep.getType() == UsbConstants.USB_ENDPOINT_XFER_BULK) { if (ep.getDirection() == UsbConstants.USB_DIR_IN) { mReadEndpoint = ep; } else { mWriteEndpoint = ep; } } } setConfigSingle(SILABSER_IFC_ENABLE_REQUEST_CODE, UART_ENABLE); setConfigSingle(SILABSER_SET_MHS_REQUEST_CODE, MCR_ALL | CONTROL_WRITE_DTR | CONTROL_WRITE_RTS); setConfigSingle(SILABSER_SET_BAUDDIV_REQUEST_CODE, BAUD_RATE_GEN_FREQ / DEFAULT_BAUD_RATE); // setParameters(DEFAULT_BAUD_RATE, DEFAULT_DATA_BITS, DEFAULT_STOP_BITS, DEFAULT_PARITY); opened = true; } finally { if (!opened) { try { close(); } catch (IOException e) { // Ignore IOExceptions during close() } } } }
Example 17
Source File: CdcAcmSerialDriver.java From Chorus-RF-Laptimer with MIT License | 4 votes |
private void openSingleInterface() throws IOException { // the following code is inspired by the cdc-acm driver // in the linux kernel mControlInterface = mDevice.getInterface(0); Log.d(TAG, "Control iface=" + mControlInterface); mDataInterface = mDevice.getInterface(0); Log.d(TAG, "data iface=" + mDataInterface); if (!mConnection.claimInterface(mControlInterface, true)) { throw new IOException("Could not claim shared control/data interface."); } int endCount = mControlInterface.getEndpointCount(); if (endCount < 3) { Log.d(TAG,"not enough endpoints - need 3. count=" + mControlInterface.getEndpointCount()); throw new IOException("Insufficient number of endpoints(" + mControlInterface.getEndpointCount() + ")"); } // Analyse endpoints for their properties mControlEndpoint = null; mReadEndpoint = null; mWriteEndpoint = null; for (int i = 0; i < endCount; ++i) { UsbEndpoint ep = mControlInterface.getEndpoint(i); if ((ep.getDirection() == UsbConstants.USB_DIR_IN) && (ep.getType() == UsbConstants.USB_ENDPOINT_XFER_INT)) { Log.d(TAG,"Found controlling endpoint"); mControlEndpoint = ep; } else if ((ep.getDirection() == UsbConstants.USB_DIR_IN) && (ep.getType() == UsbConstants.USB_ENDPOINT_XFER_BULK)) { Log.d(TAG,"Found reading endpoint"); mReadEndpoint = ep; } else if ((ep.getDirection() == UsbConstants.USB_DIR_OUT) && (ep.getType() == UsbConstants.USB_ENDPOINT_XFER_BULK)) { Log.d(TAG,"Found writing endpoint"); mWriteEndpoint = ep; } if ((mControlEndpoint != null) && (mReadEndpoint != null) && (mWriteEndpoint != null)) { Log.d(TAG,"Found all required endpoints"); break; } } if ((mControlEndpoint == null) || (mReadEndpoint == null) || (mWriteEndpoint == null)) { Log.d(TAG,"Could not establish all endpoints"); throw new IOException("Could not establish all endpoints"); } }
Example 18
Source File: Ch34xSerialDriver.java From Chorus-RF-Laptimer with MIT License | 4 votes |
private int controlIn(int request, int value, int index, byte[] buffer) { final int REQTYPE_HOST_TO_DEVICE = UsbConstants.USB_TYPE_VENDOR | UsbConstants.USB_DIR_IN; return mConnection.controlTransfer(REQTYPE_HOST_TO_DEVICE, request, value, index, buffer, buffer.length, USB_TIMEOUT_MILLIS); }
Example 19
Source File: Ch34xSerialDriver.java From Chorus-RF-Laptimer with MIT License | 4 votes |
@Override public void open(UsbDeviceConnection connection) throws IOException { if (mConnection != null) { throw new IOException("Already opened."); } mConnection = connection; boolean opened = false; try { for (int i = 0; i < mDevice.getInterfaceCount(); i++) { UsbInterface usbIface = mDevice.getInterface(i); if (mConnection.claimInterface(usbIface, true)) { Log.d(TAG, "claimInterface " + i + " SUCCESS"); } else { Log.d(TAG, "claimInterface " + i + " FAIL"); } } UsbInterface dataIface = mDevice.getInterface(mDevice.getInterfaceCount() - 1); for (int i = 0; i < dataIface.getEndpointCount(); i++) { UsbEndpoint ep = dataIface.getEndpoint(i); if (ep.getType() == UsbConstants.USB_ENDPOINT_XFER_BULK) { if (ep.getDirection() == UsbConstants.USB_DIR_IN) { mReadEndpoint = ep; } else { mWriteEndpoint = ep; } } } initialize(); setBaudRate(DEFAULT_BAUD_RATE); opened = true; } finally { if (!opened) { try { close(); } catch (IOException e) { // Ignore IOExceptions during close() } } } }
Example 20
Source File: Cp21xxSerialDriver.java From PodEmu with GNU General Public License v3.0 | 4 votes |
@Override public void open(UsbDeviceConnection connection) throws IOException { if (mConnection != null) { throw new IOException("Already opened."); } mConnection = connection; boolean opened = false; try { for (int i = 0; i < mDevice.getInterfaceCount(); i++) { UsbInterface usbIface = mDevice.getInterface(i); if (mConnection.claimInterface(usbIface, true)) { Log.d(TAG, "claimInterface " + i + " SUCCESS"); } else { Log.d(TAG, "claimInterface " + i + " FAIL"); } } UsbInterface dataIface = mDevice.getInterface(mDevice.getInterfaceCount() - 1); for (int i = 0; i < dataIface.getEndpointCount(); i++) { UsbEndpoint ep = dataIface.getEndpoint(i); if (ep.getType() == UsbConstants.USB_ENDPOINT_XFER_BULK) { if (ep.getDirection() == UsbConstants.USB_DIR_IN) { mReadEndpoint = ep; } else { mWriteEndpoint = ep; } } } setConfigSingle(SILABSER_IFC_ENABLE_REQUEST_CODE, UART_ENABLE); setConfigSingle(SILABSER_SET_MHS_REQUEST_CODE, MCR_ALL | CONTROL_WRITE_DTR | CONTROL_WRITE_RTS); setConfigSingle(SILABSER_SET_BAUDDIV_REQUEST_CODE, BAUD_RATE_GEN_FREQ / DEFAULT_BAUD_RATE); // setParameters(DEFAULT_BAUD_RATE, DEFAULT_DATA_BITS, DEFAULT_STOP_BITS, DEFAULT_PARITY); opened = true; } finally { if (!opened) { try { close(); } catch (IOException e) { // Ignore IOExceptions during close() } } } }