jAER project on SourceForge

net.sf.jaer.hardwareinterface.usb.cypressfx2
Class CypressFX2DVS128HardwareInterface

java.lang.Object
  extended by net.sf.jaer.hardwareinterface.usb.cypressfx2.CypressFX2
      extended by net.sf.jaer.hardwareinterface.usb.cypressfx2.CypressFX2Biasgen
          extended by net.sf.jaer.hardwareinterface.usb.cypressfx2.CypressFX2DVS128HardwareInterface
All Implemented Interfaces:
de.thesycon.usbio.PnPNotifyInterface, de.thesycon.usbio.UsbIoErrorCodes, AEMonitorInterface, BiasgenHardwareInterface, HardwareInterface, HasUpdatableFirmware, HasResettablePixelArray, ReaderBufferControl, USBInterface

public class CypressFX2DVS128HardwareInterface
extends CypressFX2Biasgen
implements HasUpdatableFirmware, HasResettablePixelArray

The hardware interface for the DVS128 (second Tmpdiff128 board, with CPLD) retina boards.

Author:
tobi/rapha

Nested Class Summary
 class CypressFX2DVS128HardwareInterface.RetinaAEReader
          This reader understands the format of raw USB data and translates to the AEPacketRaw
 
Nested classes/interfaces inherited from class net.sf.jaer.hardwareinterface.usb.cypressfx2.CypressFX2
CypressFX2.AEPacketRawPool, CypressFX2.AEReader, CypressFX2.AsyncStatusThread
 
Field Summary
static java.lang.String FIRMWARE_FILENAME_DVS128_XSVF
           
 
Fields inherited from class net.sf.jaer.hardwareinterface.usb.cypressfx2.CypressFX2Biasgen
MAX_BYTES_PER_BIAS
 
Fields inherited from class net.sf.jaer.hardwareinterface.usb.cypressfx2.CypressFX2
AE_BUFFER_SIZE, aeBufferSize, aePacketRawPool, aeReader, arrayResetEnabled, asyncStatusThread, BufDesc, chip, deviceDescriptor, DID_STEREOBOARD, EEPROM_SIZE, eventCounter, FIRMWARE_FILENAME_COCHLEAAMS_BIX, FIRMWARE_FILENAME_DVS128_IIC, FIRMWARE_FILENAME_MAPPER_IIC, FIRMWARE_FILENAME_MONITOR_SEQUENCER, FIRMWARE_FILENAME_MONITOR_SEQUENCER_HEX, FIRMWARE_FILENAME_MONITOR_SEQUENCER_IIC, FIRMWARE_FILENAME_MONITOR_SEQUENCER_JTAG_IIC, FIRMWARE_FILENAME_STEREO_IIC, FIRMWARE_FILENAME_TCVS320_BIX, FIRMWARE_FILENAME_TCVS320_HEX, FIRMWARE_FILENAME_TMPDIFF128_BIX, FIRMWARE_FILENAME_TMPDIFF128_HEX, gDevList, GUID, gUsbIo, inEndpointEnabled, interfaceNumber, isOpened, lastEventsAcquired, log, MAX_CONTROL_XFER_SIZE, NEW_EVENTS_PROPERTY_CHANGE, NO_AE_REOPEN_TIMEOUT, numberOfStringDescriptors, PID_BLANK, PID_COCHLEAAMS, PID_DVS128_REV0, PID_TCVS320_RETINA, PID_TMPDIFF128_RETINA, PID_USB2AERmapper, PID_USBAERmini2, PID_USBAERmini2_without_firmware, prefs, stringDescriptor1, stringDescriptor2, stringDescriptor3, TICK_US, VENDOR_REQUEST_DO_ARRAY_RESET, VENDOR_REQUEST_EARLY_TRANFER, VENDOR_REQUEST_FIRMWARE, VENDOR_REQUEST_FLASH_BIASES, VENDOR_REQUEST_POWERDOWN, VENDOR_REQUEST_RESET_TIMESTAMPS, VENDOR_REQUEST_SEND_BIAS_BYTES, VENDOR_REQUEST_SET_ARRAY_RESET, VENDOR_REQUEST_SET_LED, VENDOR_REQUEST_START_TRANSFER, VENDOR_REQUEST_STOP_TRANSFER, VID, VID_BLANK, VR_DOWNLOAD_FIRMWARE, VR_EEPROM, VR_RAM, VR_SET_DEVICE_NAME
 
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 net.sf.jaer.hardwareinterface.usb.USBInterface
PID_THESYCON_END, PID_THESYCON_START, VID_THESYCON
 
Constructor Summary
protected CypressFX2DVS128HardwareInterface(int devNumber)
          Creates a new instance of CypressFX2Biasgen
 
Method Summary
 boolean isArrayReset()
           
 void resetTimestamps()
          reset the timestamps to zero.
 void setArrayReset(boolean value)
          set the pixel array reset
 void startAEReader()
          Starts reader buffer pool thread and enables in endpoints for AEs.
 void updateFirmware()
          Updates the firmware by downloading to the board's EEPROM.
 
Methods inherited from class net.sf.jaer.hardwareinterface.usb.cypressfx2.CypressFX2Biasgen
flashConfiguration, formatConfigurationBytes, sendBiasBytes, sendConfiguration, setPowerDown
 
Methods inherited from class net.sf.jaer.hardwareinterface.usb.cypressfx2.CypressFX2
acquireAvailableEventsFromDriver, acquireDevice, addAEListener, allocateAEBuffers, close, cyclePort, download8051RAM, downloadFirmwareBinary, downloadFirmwareHex, eraseEEPROM, getAEBufferSize, getAeReader, getChip, getDefaultFirmwareBixFileForBlankDevice, getDID, getEstimatedEventRate, getEvents, getFifoSize, getFirmwareFilenameBinaryFromVIDPID, getFirmwareFilenameHexFromVIDPID, getMaxCapacity, getNumberOfStringDescriptors, getNumBuffers, getNumEventsAcquired, getPID, getStringDescriptors, getSupport, getTimestampTickUs, getTypeName, getVID, getVIDPID, hasStringIdentifier, isEventAcquisitionEnabled, isInEndpointEnabled, isOpen, loadBinaryFirmwareFile, loadBinaryFirmwareFileSystemFile, onAdd, onRemove, open, openUsbIo_minimal, openUsbIo, overrunOccurred, readEEPROM, releaseDevice, removeAEListener, requestEarlyTransfer, resetPixelArray, resetUSB, sendVendorRequest, sendVendorRequest, sendVendorRequest, sendVendorRequest, set8051Reset, setAEBufferSize, setAeReader, setAEReaderFifoSize, setAEReaderNumBuffers, setChip, setDefaultFirmwareBixFileForBlankDevice, setEventAcquisitionEnabled, setFifoSize, setInEndpointEnabled, setLed, setNumBuffers, setSerialNumber, showFirmwareFilenameDialog, stopAEReader, toString, unconfigureDevice, writeC2Load, writeCPLDfirmware, writeEEPROM, writeHexFileToEEPROM, writeVIDPIDDID
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface net.sf.jaer.hardwareinterface.usb.cypressfx2.HasResettablePixelArray
resetPixelArray
 
Methods inherited from interface net.sf.jaer.hardwareinterface.HardwareInterface
close, getTypeName, isOpen, open
 

Field Detail

FIRMWARE_FILENAME_DVS128_XSVF

public static final java.lang.String FIRMWARE_FILENAME_DVS128_XSVF
See Also:
Constant Field Values
Constructor Detail

CypressFX2DVS128HardwareInterface

protected CypressFX2DVS128HardwareInterface(int devNumber)
Creates a new instance of CypressFX2Biasgen

Method Detail

startAEReader

public void startAEReader()
                   throws HardwareInterfaceException
Starts reader buffer pool thread and enables in endpoints for AEs. This method is overridden to construct our own reader with its translateEvents method

Overrides:
startAEReader in class CypressFX2
Throws:
HardwareInterfaceException

resetTimestamps

public void resetTimestamps()
Description copied from class: CypressFX2
reset the timestamps to zero. This has two effects. First it sends a vendor request down the control endpoint to tell the device to reset its own internal timestamp counters. Second, it tells the AEReader object to reset its timestamps, meaning to reset its unwrap counter.

Specified by:
resetTimestamps in interface AEMonitorInterface
Overrides:
resetTimestamps in class CypressFX2

setArrayReset

public void setArrayReset(boolean value)
set the pixel array reset

Specified by:
setArrayReset in interface HasResettablePixelArray
Parameters:
value - true to reset the pixels, false to let them run normally

isArrayReset

public boolean isArrayReset()

updateFirmware

public void updateFirmware()
                    throws HardwareInterfaceException
Updates the firmware by downloading to the board's EEPROM. The firmware filename is hardcoded. TODO fix this hardcoding. This method starts a background thread which pauses acquisition of data and pops up progress monitors.

Specified by:
updateFirmware in interface HasUpdatableFirmware
Throws:
doesn't - actually throw anything, so there's no way for the caller to know if the update succeeded.
HardwareInterfaceException - if there is any error, including lack of support or missing firmware file. The exception should detail the error as much as possible.

jAER project on SourceForge