jAER project on SourceForge

net.sf.jaer.hardwareinterface.usb.cypressfx2
Class CypressFX2MonitorSequencer.MonSeqAEReader

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
                      extended by net.sf.jaer.hardwareinterface.usb.cypressfx2.CypressFX2MonitorSequencer.MonSeqAEReader
All Implemented Interfaces:
de.thesycon.usbio.UsbIoErrorCodes, de.thesycon.usbio.UsbIoInterface, de.thesycon.usbio.UsbSpec, java.lang.Runnable, ReaderBufferControl
Direct Known Subclasses:
CochleaAMS1bHardwareInterface.AEReader
Enclosing class:
CypressFX2MonitorSequencer

public class CypressFX2MonitorSequencer.MonSeqAEReader
extends CypressFX2.AEReader

This reader understands the format of raw USB data and translates to the AEPacketRaw


Field Summary
 
Fields inherited from class net.sf.jaer.hardwareinterface.usb.cypressfx2.CypressFX2.AEReader
CYPRESS_FIFO_SIZE, CYPRESS_NUM_BUFFERS, lastWrapAdd, MAX_NONMONOTONIC_TIME_EXCEPTIONS_TO_PRINT, MONITOR_PRIORITY, wrapAdd, wrappedBig
 
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
CypressFX2MonitorSequencer.MonSeqAEReader(CypressFX2 cypress)
           
 
Method Summary
protected  void translateEvents(de.thesycon.usbio.UsbIoBuf b)
          Subclsses must override this method to process the raw data to write to the raw event packet buffers
protected  void translateEventsFromOriginalUSB2AERmini2WithOriginalFirmware(de.thesycon.usbio.UsbIoBuf b)
          Method that translates the UsbIoBuffer when a board that has a CPLD with old firmware to timetamp events and that uses the CypressFX2 in slave FIFO mode, such as the USBAERmini2 board, is used.
protected  void translateEventsWithCPLDEventCode(de.thesycon.usbio.UsbIoBuf b)
          Method that translates the UsbIoBuffer when a board that has a CPLD to timetamp events and that uses the CypressFX2 in slave FIFO mode, such as the USBAERmini2 board or StereoRetinaBoard, is used.
 
Methods inherited from class net.sf.jaer.hardwareinterface.usb.cypressfx2.CypressFX2.AEReader
bufErrorHandler, getFifoSize, getNumBuffers, onThreadExit, processBuffer, processData, resetTimestamps, setFifoSize, setNumBuffers, startThread, toString
 
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
 

Constructor Detail

CypressFX2MonitorSequencer.MonSeqAEReader

public CypressFX2MonitorSequencer.MonSeqAEReader(CypressFX2 cypress)
                                          throws HardwareInterfaceException
Throws:
HardwareInterfaceException
Method Detail

translateEvents

protected void translateEvents(de.thesycon.usbio.UsbIoBuf b)
Description copied from class: CypressFX2.AEReader
Subclsses must override this method to process the raw data to write to the raw event packet buffers

Overrides:
translateEvents in class CypressFX2.AEReader
Parameters:
b - the raw byte buffers

translateEventsWithCPLDEventCode

protected void translateEventsWithCPLDEventCode(de.thesycon.usbio.UsbIoBuf b)
Method that translates the UsbIoBuffer when a board that has a CPLD to timetamp events and that uses the CypressFX2 in slave FIFO mode, such as the USBAERmini2 board or StereoRetinaBoard, is used.

On these boards, the msb of the timestamp is used to signal a wrap (the actual timestamp is only 14 bits). The timestamp is also used to signal a timestamp reset The wrapAdd is incremented when an emtpy event is received which has the timestamp bit 15 set to one. The timestamp is reset when an event is received which has the timestamp bit 14 set.

Therefore for a valid event only 14 bits of the 16 transmitted timestamp bits are valid, bits 14 and 15 are the status bits. overflow happens every 16 ms. This way, no roll overs go by undetected, and the problem of invalid wraps doesn't arise.

Parameters:
b - the data buffer
See Also:
translateEvents(de.thesycon.usbio.UsbIoBuf)

translateEventsFromOriginalUSB2AERmini2WithOriginalFirmware

protected void translateEventsFromOriginalUSB2AERmini2WithOriginalFirmware(de.thesycon.usbio.UsbIoBuf b)
Method that translates the UsbIoBuffer when a board that has a CPLD with old firmware to timetamp events and that uses the CypressFX2 in slave FIFO mode, such as the USBAERmini2 board, is used.

On these boards, the msb of the timestamp is used to signal a wrap (the actual timestamp is only 15 bits). The wrapAdd is incremented when an emtpy event is received which has the timestamp bit 15 set to one.

Therefore for a valid event only 15 bits of the 16 transmitted timestamp bits are valid, bit 15 is the status bit. overflow happens every 32 ms. This way, no roll overs go by undetected, and the problem of invalid wraps doesn't arise.

Parameters:
b - the data buffer
See Also:
translateEvents(de.thesycon.usbio.UsbIoBuf)

jAER project on SourceForge