@Override public void run() { byte[] dataReceived = null; while (working.get()) { int numberBytes = connection.bulkTransfer( inEndpoint, serialBuffer.getBufferCompatible(), SerialBuffer.DEFAULT_READ_BUFFER_SIZE, 0); if (numberBytes > 0) { dataReceived = serialBuffer.getDataReceivedCompatible(numberBytes); // FTDI devices reserves two first bytes of an IN endpoint with info about // modem and Line. if (isFTDIDevice()) { if (dataReceived.length > 2) { dataReceived = FTDISerialDevice.FTDIUtilities.adaptArray(dataReceived); callback.onReceivedData(dataReceived); } } else { callback.onReceivedData(dataReceived); } } } }
@Override public void run() { while (working.get()) { 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()) { if (data.length > 2) { data = FTDISerialDevice.FTDIUtilities.adaptArray(data); // Clear buffer, execute the callback serialBuffer.clearReadBuffer(); 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); } } }