From 960bf975d990a8c028329b64cf4a8b8f2d11de2a Mon Sep 17 00:00:00 2001 From: Denny Date: Sat, 28 Jan 2017 17:33:59 -0500 Subject: [PATCH] Resolves #155 - LIBUSB_PIPE_ERROR when trying to start R820T tuner --- .../tuner/usb/USBTransferProcessor.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/source/tuner/usb/USBTransferProcessor.java b/src/source/tuner/usb/USBTransferProcessor.java index 92636056..21133796 100644 --- a/src/source/tuner/usb/USBTransferProcessor.java +++ b/src/source/tuner/usb/USBTransferProcessor.java @@ -33,6 +33,7 @@ import sample.complex.ComplexBuffer; import source.tuner.TunerManager; import util.ThreadPool; +import javax.usb.UsbException; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; @@ -140,6 +141,28 @@ public class USBTransferProcessor implements TransferCallback { mTransfersInProgress.add(transfer); } + else if(result == LibUsb.ERROR_PIPE) + { + int resetResult = LibUsb.clearHalt(mDeviceHandle, USB_BULK_TRANSFER_ENDPOINT); + + if(resetResult == LibUsb.SUCCESS) + { + int resubmitResult = LibUsb.submitTransfer(transfer); + + if(resubmitResult == LibUsb.SUCCESS) + { + mTransfersInProgress.add(transfer); + } + else + { + mLog.error(mDeviceName + " - error resubmitting transfer after endpoint clear halt"); + } + } + else + { + mLog.error(mDeviceName + " - unable to clear device endpoint halt"); + } + } else { //TODO: broadcast to each listener that this source has an error and is shutting down