mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-14 09:37:36 -05:00
Adds debug logging to USB tuner controller.
This commit is contained in:
@@ -18,11 +18,10 @@
|
|||||||
*/
|
*/
|
||||||
package io.github.dsheirer.source;
|
package io.github.dsheirer.source;
|
||||||
|
|
||||||
|
import java.util.EnumSet;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.util.EnumSet;
|
|
||||||
|
|
||||||
public class SourceEvent
|
public class SourceEvent
|
||||||
{
|
{
|
||||||
private final static Logger mLog = LoggerFactory.getLogger(SourceEvent.class);
|
private final static Logger mLog = LoggerFactory.getLogger(SourceEvent.class);
|
||||||
@@ -195,15 +194,6 @@ public class SourceEvent
|
|||||||
return new SourceEvent(Event.NOTIFICATION_ERROR_STATE, source, errorDescription);
|
return new SourceEvent(Event.NOTIFICATION_ERROR_STATE, source, errorDescription);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Notification that a tuner is shutting down and the source is therefore shutting down.
|
|
||||||
* @param source that is shutting down
|
|
||||||
*/
|
|
||||||
public static SourceEvent tunerShutdown(Source source)
|
|
||||||
{
|
|
||||||
return new SourceEvent(Event.NOTIFICATION_TUNER_SHUTDOWN, source);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new locked state change event
|
* Creates a new locked state change event
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -26,6 +26,12 @@ import io.github.dsheirer.source.tuner.ITunerErrorListener;
|
|||||||
import io.github.dsheirer.source.tuner.TunerController;
|
import io.github.dsheirer.source.tuner.TunerController;
|
||||||
import io.github.dsheirer.source.tuner.TunerType;
|
import io.github.dsheirer.source.tuner.TunerType;
|
||||||
import io.github.dsheirer.source.tuner.manager.TunerManager;
|
import io.github.dsheirer.source.tuner.manager.TunerManager;
|
||||||
|
import java.nio.ByteBuffer;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.concurrent.LinkedTransferQueue;
|
||||||
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.usb4java.Context;
|
import org.usb4java.Context;
|
||||||
@@ -37,13 +43,6 @@ import org.usb4java.LibUsb;
|
|||||||
import org.usb4java.Transfer;
|
import org.usb4java.Transfer;
|
||||||
import org.usb4java.TransferCallback;
|
import org.usb4java.TransferCallback;
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.concurrent.LinkedTransferQueue;
|
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
|
||||||
import java.util.concurrent.locks.ReentrantLock;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tuner controller implementation for USB tuners. Manages general USB operations and incorporates threaded USB
|
* Tuner controller implementation for USB tuners. Manages general USB operations and incorporates threaded USB
|
||||||
* Transfer processing.
|
* Transfer processing.
|
||||||
@@ -544,7 +543,7 @@ public abstract class USBTunerController extends TunerController
|
|||||||
{
|
{
|
||||||
for(Transfer transfer: transfers)
|
for(Transfer transfer: transfers)
|
||||||
{
|
{
|
||||||
submitTransfer(transfer);
|
submitTransfer(transfer, LibUsb.SUCCESS, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -552,7 +551,7 @@ public abstract class USBTunerController extends TunerController
|
|||||||
* (Re)Submits the transfer for stream processing
|
* (Re)Submits the transfer for stream processing
|
||||||
* @param transfer to (re)submit
|
* @param transfer to (re)submit
|
||||||
*/
|
*/
|
||||||
private void submitTransfer(Transfer transfer)
|
private void submitTransfer(Transfer transfer, int previousStatus, int previousBytesTransferred)
|
||||||
{
|
{
|
||||||
int status = LibUsb.submitTransfer(transfer);
|
int status = LibUsb.submitTransfer(transfer);
|
||||||
|
|
||||||
@@ -562,7 +561,8 @@ public abstract class USBTunerController extends TunerController
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mLog.error("Error submitting USB transfer - " + LibUsb.errorName(status));
|
mLog.error("Error submitting USB transfer - status [" + status + "] " + LibUsb.errorName(status) +
|
||||||
|
" - previous status [" + previousStatus + "] and transferred [" + previousBytesTransferred + "]");
|
||||||
setErrorMessage("Usb I/O Error - Can't submit buffers to tuner - stopping tuner");
|
setErrorMessage("Usb I/O Error - Can't submit buffers to tuner - stopping tuner");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -593,7 +593,9 @@ public abstract class USBTunerController extends TunerController
|
|||||||
case LibUsb.TRANSFER_STALL:
|
case LibUsb.TRANSFER_STALL:
|
||||||
case LibUsb.TRANSFER_TIMED_OUT:
|
case LibUsb.TRANSFER_TIMED_OUT:
|
||||||
case LibUsb.TRANSFER_ERROR:
|
case LibUsb.TRANSFER_ERROR:
|
||||||
if(transfer.actualLength() > 0)
|
int transferLength = transfer.actualLength();
|
||||||
|
|
||||||
|
if(transferLength > 0)
|
||||||
{
|
{
|
||||||
dispatchTransfer(transfer);
|
dispatchTransfer(transfer);
|
||||||
}
|
}
|
||||||
@@ -602,35 +604,22 @@ public abstract class USBTunerController extends TunerController
|
|||||||
|
|
||||||
if(mAutoResubmitTransfers)
|
if(mAutoResubmitTransfers)
|
||||||
{
|
{
|
||||||
submitTransfer(transfer);
|
submitTransfer(transfer, transfer.status(), transferLength);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case LibUsb.TRANSFER_CANCELLED:
|
case LibUsb.TRANSFER_CANCELLED:
|
||||||
//Reset the transfer but don't do anything else
|
//Reset the transfer but don't do anything else since we're shutting down
|
||||||
transfer.buffer().rewind();
|
transfer.buffer().rewind();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
//Unexpected transfer error - need to reset the bulk transfer interface
|
//Unexpected transfer error - need to reset the bulk transfer interface
|
||||||
transfer.buffer().rewind();
|
transfer.buffer().rewind();
|
||||||
//TODO: usually the device is in a bad state at this point ... need to raise the error flag
|
setErrorMessage("LibUsb Transfer Error - stopping device - status [" + transfer.status() + "] - " +
|
||||||
|
LibUsb.errorName(transfer.status()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Disposes of the transfer and dereferences the native byte buffer so that it can be garbage collected.
|
|
||||||
*/
|
|
||||||
private void disposeTransfers()
|
|
||||||
{
|
|
||||||
for(Transfer transfer: mAvailableTransfers)
|
|
||||||
{
|
|
||||||
transfer.setBuffer(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
mAvailableTransfers.clear();
|
|
||||||
mAvailableTransfers = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Makes a copy of the transfer's native memory byte array payload so that the transfer can be reused.
|
* Makes a copy of the transfer's native memory byte array payload so that the transfer can be reused.
|
||||||
* Dispatches the native buffer to registered listeners.
|
* Dispatches the native buffer to registered listeners.
|
||||||
|
|||||||
Reference in New Issue
Block a user