From 7e4acc568c908e7ba909accb1b5aedcdc7939205 Mon Sep 17 00:00:00 2001 From: Denny Date: Sat, 28 Jan 2017 19:33:52 -0500 Subject: [PATCH] Resolves #155 - adds usb endpoint clear halt when attempting to resubmit a transferred buffer that causes a usb pipe error. --- .../tuner/usb/USBTransferProcessor.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/source/tuner/usb/USBTransferProcessor.java b/src/source/tuner/usb/USBTransferProcessor.java index 21133796..69c43582 100644 --- a/src/source/tuner/usb/USBTransferProcessor.java +++ b/src/source/tuner/usb/USBTransferProcessor.java @@ -331,6 +331,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 { mAvailableTransfers.add(transfer);