jAER project on SourceForge

net.sf.jaer.hardwareinterface.usb.cypressfx2
Class CypressFX2.AEReader

java.lang.Object
  extended by de.thesycon.usbio.UsbIo
      extended by de.thesycon.usbio.UsbIoPipe
          extended by de.thesycon.usbio.UsbIoThread
              extended by de.thesycon.usbio.UsbIoReader
                  extended by net.sf.jaer.hardwareinterface.usb.cypressfx2.CypressFX2.AEReader
All Implemented Interfaces:
de.thesycon.usbio.UsbIoErrorCodes, de.thesycon.usbio.UsbIoInterface, de.thesycon.usbio.UsbSpec, java.lang.Runnable, ReaderBufferControl
Direct Known Subclasses:
CypressFX2DVS128HardwareInterface.RetinaAEReader, CypressFX2MonitorSequencer.MonSeqAEReader, CypressFX2StereoBoard.RetinaAEReader, CypressFX2TmpdiffRetinaHardwareInterface.RetinaAEReader, DVS320HardwareInterface.RetinaAEReader
Enclosing class:
CypressFX2

public class CypressFX2.AEReader
extends de.thesycon.usbio.UsbIoReader
implements ReaderBufferControl

AE reader class. the thread continually reads events into buffers. when a buffer is read, ProcessData transfers and transforms the buffer data to AE address and timestamps information and puts it in the addresses and timestamps arrays. a call to acquireAvailableEventsFromDriver copies the events to enw user arrays that can be accessed by getEvents() (this packet is also returned by CypressFX2.acquireAvailableEventsFromDriver()). The relevant methods are synchronized so are thread safe.


Field Summary
static int CYPRESS_FIFO_SIZE
          size of CypressFX2 USB fifo's in bytes.
static int CYPRESS_NUM_BUFFERS
          the default number of USB read buffers used in the reader
protected  int lastWrapAdd
           
 int MAX_NONMONOTONIC_TIME_EXCEPTIONS_TO_PRINT
           
static int MONITOR_PRIORITY
          the priority for this monitor acquisition thread.
protected  int wrapAdd
          wrapAdd is the time to add to short timestamp to unwrap it
protected  boolean wrappedBig
          used to indicate a 32 bit timestamp wrap
 
Fields inherited from class de.thesycon.usbio.UsbIoThread
BufPool, MaxErrorCount, PendingList, T
 
Fields inherited from class de.thesycon.usbio.UsbIo
Handle
 
Fields inherited from interface de.thesycon.usbio.UsbIoErrorCodes
USBIO_ERR_ADDITIONAL_EVENT_SIGNALLED, USBIO_ERR_ALREADY_BOUND, USBIO_ERR_ALREADY_CONFIGURED, USBIO_ERR_BABBLE_DETECTED, USBIO_ERR_BAD_START_FRAME, USBIO_ERR_BTSTUFF, USBIO_ERR_BUFFER_OVERRUN, USBIO_ERR_BUFFER_UNDERRUN, USBIO_ERR_BULK_RESTRICTION, USBIO_ERR_CANCELED, USBIO_ERR_CONTROL_NOT_SUPPORTED, USBIO_ERR_CONTROL_RESTRICTION, USBIO_ERR_CRC, USBIO_ERR_DATA_BUFFER_ERROR, USBIO_ERR_DATA_OVERRUN, USBIO_ERR_DATA_TOGGLE_MISMATCH, USBIO_ERR_DATA_UNDERRUN, USBIO_ERR_DEMO_EXPIRED, USBIO_ERR_DEV_NOT_RESPONDING, USBIO_ERR_DEVICE_GONE, USBIO_ERR_DEVICE_NOT_FOUND, USBIO_ERR_DEVICE_NOT_OPEN, USBIO_ERR_DEVICE_NOT_PRESENT, USBIO_ERR_ENDPOINT_HALTED, USBIO_ERR_EP0_RESTRICTION, USBIO_ERR_ERROR_BUSY, USBIO_ERR_ERROR_SHORT_TRANSFER, USBIO_ERR_FAILED, USBIO_ERR_FIFO, USBIO_ERR_FRAME_CONTROL_NOT_OWNED, USBIO_ERR_FRAME_CONTROL_OWNED, USBIO_ERR_INSUFFICIENT_RESOURCES, USBIO_ERR_INTERFACE_NOT_FOUND, USBIO_ERR_INTERNAL_HC_ERROR, USBIO_ERR_INTERRUPT_RESTRICTION, USBIO_ERR_INVALID_CONFIGURATION_DESCRIPTOR, USBIO_ERR_INVALID_DEVICE_STATE, USBIO_ERR_INVALID_DIRECTION, USBIO_ERR_INVALID_FUNCTION_PARAM, USBIO_ERR_INVALID_INBUFFER, USBIO_ERR_INVALID_IOCTL, USBIO_ERR_INVALID_ISO_PACKET, USBIO_ERR_INVALID_OUTBUFFER, USBIO_ERR_INVALID_PARAM, USBIO_ERR_INVALID_PARAMETER, USBIO_ERR_INVALID_PIPE_FLAGS, USBIO_ERR_INVALID_PIPE_HANDLE, USBIO_ERR_INVALID_POWER_STATE, USBIO_ERR_INVALID_RECIPIENT, USBIO_ERR_INVALID_TYPE, USBIO_ERR_INVALID_URB_FUNCTION, USBIO_ERR_ISO_NA_LATE_USBPORT, USBIO_ERR_ISO_NOT_ACCESSED_BY_HW, USBIO_ERR_ISO_NOT_ACCESSED_LATE, USBIO_ERR_ISO_RESTRICTION, USBIO_ERR_ISO_TD_ERROR, USBIO_ERR_ISOCH_REQUEST_FAILED, USBIO_ERR_LOAD_SETUP_API_FAILED, USBIO_ERR_NO_BANDWIDTH, USBIO_ERR_NO_MEMORY, USBIO_ERR_NO_SUCH_DEVICE_INSTANCE, USBIO_ERR_NOT_ACCESSED, USBIO_ERR_NOT_BOUND, USBIO_ERR_NOT_CONFIGURED, USBIO_ERR_NOT_SUPPORTED, USBIO_ERR_OPEN_PIPES, USBIO_ERR_OUT_OF_ADDRESS_SPACE, USBIO_ERR_OUT_OF_MEMORY, USBIO_ERR_PENDING_REQUESTS, USBIO_ERR_PID_CHECK_FAILURE, USBIO_ERR_PIPE_NOT_FOUND, USBIO_ERR_PIPE_RESTRICTION, USBIO_ERR_PIPE_SIZE_RESTRICTION, USBIO_ERR_POOL_EMPTY, USBIO_ERR_POWER_DOWN, USBIO_ERR_REQUEST_FAILED, USBIO_ERR_RESERVED1, USBIO_ERR_RESERVED2, USBIO_ERR_SET_CONFIG_FAILED, USBIO_ERR_SET_CONFIGURATION_FAILED, USBIO_ERR_STALL_PID, USBIO_ERR_STATUS_NOT_MAPPED, USBIO_ERR_SUCCESS, USBIO_ERR_TIMEOUT, USBIO_ERR_TOO_MUCH_ISO_PACKETS, USBIO_ERR_UNEXPECTED_PID, USBIO_ERR_USBD_BUFFER_TOO_SMALL, USBIO_ERR_USBD_INTERFACE_NOT_FOUND, USBIO_ERR_USBD_TIMEOUT, USBIO_ERR_VERSION_MISMATCH, USBIO_ERR_VID_RESTRICTION, USBIO_ERR_XACT_ERROR
 
Fields inherited from interface de.thesycon.usbio.UsbIoInterface
DevicePowerStateD0, DevicePowerStateD1, DevicePowerStateD2, DevicePowerStateD3, INFINITE, PipeTypeBulk, PipeTypeControl, PipeTypeInterrupt, PipeTypeIsochronous, RecipientDevice, RecipientEndpoint, RecipientInterface, RecipientOther, RequestTypeClass, RequestTypeVendor, USBIO_DEVICE_INFOFLAG_HIGH_SPEED, USBIO_ENABLE_REMOTE_WAKEUP, USBIO_INFOFLAG_CHECKED_BUILD, USBIO_INFOFLAG_DEMO_VERSION, USBIO_INFOFLAG_LIGHT_VERSION, USBIO_INFOFLAG_VS_LIGHT_VERSION, USBIO_RESET_DEVICE_ON_CLOSE, USBIO_SHORT_TRANSFER_OK, USBIO_START_TRANSFER_ASAP, USBIO_UNCONFIGURE_ON_CLOSE
 
Fields inherited from interface de.thesycon.usbio.UsbSpec
AUDIO_CS_ENDPOINT_TYPE, AUDIO_CS_INTERFACE_TYPE, USB_CONFIGURATION_DESCRIPTOR_TYPE, USB_DEVICE_DESCRIPTOR_TYPE, USB_DEVICE_QUALIFIER_DESCRIPTOR_TYPE, USB_ENDPOINT_DESCRIPTOR_TYPE, USB_HID_DESCRIPTOR_TYPE, USB_INTERFACE_DESCRIPTOR_TYPE, USB_INTERFACE_POWER_DESCRIPTOR_TYPE, USB_OTHER_SPEED_CONFIGURATION_DESCRIPTOR_TYPE, USB_STRING_DESCRIPTOR_TYPE
 
Constructor Summary
CypressFX2.AEReader(CypressFX2 m)
           
 
Method Summary
 void bufErrorHandler(de.thesycon.usbio.UsbIoBuf Buf)
           
 int getFifoSize()
           
 int getNumBuffers()
           
 void onThreadExit()
           
 void processBuffer(de.thesycon.usbio.UsbIoBuf Buf)
           
 void processData(de.thesycon.usbio.UsbIoBuf Buf)
          Called on completion of read on a data buffer is received from USBIO driver.
 void resetTimestamps()
          Resets the timestamp unwrap value, resets the USBIO pipe, and resets the AEPacketRawPool.
 void setFifoSize(int fifoSize)
           
 void setNumBuffers(int numBuffers)
           
 void startThread(int MaxIoErrorCount)
           
 java.lang.String toString()
           
protected  void translateEvents(de.thesycon.usbio.UsbIoBuf buf)
          Subclsses must override this method to process the raw data to write to the raw event packet buffers
 
Methods inherited from class de.thesycon.usbio.UsbIoReader
run
 
Methods inherited from class de.thesycon.usbio.UsbIoThread
allocateBuffers, freeBuffers, shutdownThread
 
Methods inherited from class de.thesycon.usbio.UsbIoPipe
abortPipe, bind, getPipeParameters, pipeControlTransferIn, pipeControlTransferOut, queryPipeStatistics, read, readSync, readSync, resetPipe, resetPipeStatistics, setPipeParameters, setupPipeStatistics, unbind, waitForCompletion, waitForCompletion, write, writeSync, writeSync
 
Methods inherited from class de.thesycon.usbio.UsbIo
acquireDevice, classOrVendorInRequest, classOrVendorOutRequest, clearFeature, close, createDeviceList, cyclePort, destroyDeviceList, errorText, finalize, getBandwidthInfo, getConfiguration, getConfigurationDescriptor, getConfigurationInfo, getCurrentFrameNumber, getDescriptor, getDescriptor, getDeviceDescriptor, getDeviceInfo, getDeviceParameters, getDevicePowerState, getDriverInfo, getInterface, getStatus, getStringDescriptor, isCheckedBuild, isDemoVersion, isLightVersion, isOpen, isOperatingAtHighSpeed, open, releaseDevice, resetDevice, setConfiguration, setDescriptor, setDeviceParameters, setDevicePowerState, setFeature, setInterface, unconfigureDevice
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

MAX_NONMONOTONIC_TIME_EXCEPTIONS_TO_PRINT

public final int MAX_NONMONOTONIC_TIME_EXCEPTIONS_TO_PRINT
See Also:
Constant Field Values

MONITOR_PRIORITY

public static final int MONITOR_PRIORITY
the priority for this monitor acquisition thread. This should be set high (e.g. Thread.MAX_PRIORITY) so that the thread can start new buffer reads in a timely manner so that the sender does not get blocked

See Also:
Constant Field Values

CYPRESS_FIFO_SIZE

public static final int CYPRESS_FIFO_SIZE
size of CypressFX2 USB fifo's in bytes.

See Also:
Constant Field Values

CYPRESS_NUM_BUFFERS

public static final int CYPRESS_NUM_BUFFERS
the default number of USB read buffers used in the reader

See Also:
Constant Field Values

wrapAdd

protected int wrapAdd
wrapAdd is the time to add to short timestamp to unwrap it


lastWrapAdd

protected int lastWrapAdd

wrappedBig

protected boolean wrappedBig
used to indicate a 32 bit timestamp wrap

Constructor Detail

CypressFX2.AEReader

public CypressFX2.AEReader(CypressFX2 m)
                    throws HardwareInterfaceException
Throws:
HardwareInterfaceException
Method Detail

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

translateEvents

protected void translateEvents(de.thesycon.usbio.UsbIoBuf buf)
Subclsses must override this method to process the raw data to write to the raw event packet buffers

Parameters:
buf - the raw byte buffers

processBuffer

public void processBuffer(de.thesycon.usbio.UsbIoBuf Buf)
Specified by:
processBuffer in class de.thesycon.usbio.UsbIoThread

resetTimestamps

public void resetTimestamps()
Resets the timestamp unwrap value, resets the USBIO pipe, and resets the AEPacketRawPool.


processData

public void processData(de.thesycon.usbio.UsbIoBuf Buf)
Called on completion of read on a data buffer is received from USBIO driver.

Overrides:
processData in class de.thesycon.usbio.UsbIoThread
Parameters:
Buf - the data buffer with raw data

bufErrorHandler

public void bufErrorHandler(de.thesycon.usbio.UsbIoBuf Buf)
Specified by:
bufErrorHandler in class de.thesycon.usbio.UsbIoThread

onThreadExit

public void onThreadExit()
Specified by:
onThreadExit in class de.thesycon.usbio.UsbIoThread

startThread

public void startThread(int MaxIoErrorCount)
Overrides:
startThread in class de.thesycon.usbio.UsbIoThread

getFifoSize

public int getFifoSize()
Specified by:
getFifoSize in interface ReaderBufferControl

setFifoSize

public void setFifoSize(int fifoSize)
Specified by:
setFifoSize in interface ReaderBufferControl

getNumBuffers

public int getNumBuffers()
Specified by:
getNumBuffers in interface ReaderBufferControl

setNumBuffers

public void setNumBuffers(int numBuffers)
Specified by:
setNumBuffers in interface ReaderBufferControl

jAER project on SourceForge