|
jAER project on SourceForge | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectnet.sf.jaer.hardwareinterface.usb.silabs.SiLabsC8051F320_USBIO_AeSequencer
public class SiLabsC8051F320_USBIO_AeSequencer
The USB simplemonitor board is used to sequence out events using this class and appropriate firmware on the board.
Servo motor controller using USBIO driver access to SiLabsC8051F320 device. To prevent blocking on the thread controlling the servo, this class starts a consumer thread that communicates with the USB interface. The producer (the user) communicates with the consumer thread using an ArrayBlockingQueue. Therefore servo commands never produce hardware exceptions; these are caught in the consumer thread by closing the device, which should be reopened on the next command.
This class goes with the USB simplemonitor board.
| Field Summary | |
|---|---|
protected de.thesycon.usbio.structs.USB_DEVICE_DESCRIPTOR |
deviceDescriptor
the USBIO device descriptor |
static int |
ENDPOINT_OUT_LENGTH
length of endpoint, ideally this value should be obtained from the pipe bound to the endpoint but we know what it is for this device. |
protected int |
gDevList
the devlist handle for USBIO |
static java.lang.String |
GUID
driver guid (Globally unique ID, for this USB driver instance |
protected de.thesycon.usbio.UsbIo |
gUsbIo
the UsbIo interface to the device. |
static int |
HOST_BUFFER_LENGTH
|
protected int |
interfaceNumber
the device number, out of all potential compatible devices that could be opened |
protected int |
numberOfStringDescriptors
|
static int |
PACKET_QUEUE_LENGTH
number of packets that can be queued up. |
static short |
PID
|
protected de.thesycon.usbio.structs.USB_STRING_DESCRIPTOR |
stringDescriptor1
the first USB string descriptor (Vendor name) (if available) |
protected de.thesycon.usbio.structs.USB_STRING_DESCRIPTOR |
stringDescriptor2
the second USB string descriptor (Product name) (if available) |
protected de.thesycon.usbio.structs.USB_STRING_DESCRIPTOR |
stringDescriptor3
the third USB string descriptor (Serial number) (if available) |
static short |
VID
The vendor ID |
| 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 | |
|---|---|
SiLabsC8051F320_USBIO_AeSequencer()
Creates a new instance of SiLabsC8051F320_USBIO_ServoController using device 0 - the first device in the list. |
|
SiLabsC8051F320_USBIO_AeSequencer(int devNumber)
Creates a new instance of USBAEMonitor. |
|
| Method Summary | |
|---|---|
protected void |
checkWtiterThread()
|
void |
close()
Closes the device. |
short |
getDID()
|
int |
getEstimatedOutEventRate()
Returns estimate of present out event rate on this interface |
int |
getMaxCapacity()
Returns max capacity of this interface in events/sec |
int |
getNumberOfStringDescriptors()
returns number of string descriptors |
int |
getNumEventsSent()
|
int |
getNumEventsToSend()
|
short |
getPID()
|
java.lang.String[] |
getStringDescriptors()
return the string USB descriptors for the device |
int |
getTimestampTickUs()
|
java.lang.String |
getTypeName()
get text name of interface, e.g. |
short |
getVID()
|
int[] |
getVIDPID()
return the USB VID/PID of the interface |
protected boolean |
hasStringIdentifier()
checks if device has a string identifier that is a non-empty string |
boolean |
isEventSequencingEnabled()
|
boolean |
isLoopedSequencingEnabled()
|
boolean |
isOpen()
reports if interface is open(). |
void |
offerPacketToSequencer(AEPacketRaw packet)
Offers a packet to be sequenced to the sequencer. |
void |
onAdd()
|
void |
onRemove()
|
void |
open()
This method does the hard work of opening the device, downloading the firmware, making sure everything is OK. |
void |
resetTimestamps()
resets the timestamps to start at zero |
void |
setLoopedSequencingEnabled(boolean set)
enables continuous sequencing, if enabled the AEWriter rewinds if it reaches the end of the packet and restarts sending from the beginning. |
void |
startSequencing(AEPacketRaw eventsToSend)
starts sequencing of events, starts AEWriter. |
void |
stopSequencing()
stops sequencing of events from the driver |
protected void |
submitPacket(AEPacketRaw packet)
Submits the packet to the writer thread queue that sends them to the device |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final java.lang.String GUID
public static final short VID
public static final short PID
public static final int ENDPOINT_OUT_LENGTH
public static final int HOST_BUFFER_LENGTH
public static final int PACKET_QUEUE_LENGTH
protected int interfaceNumber
protected de.thesycon.usbio.structs.USB_STRING_DESCRIPTOR stringDescriptor1
protected de.thesycon.usbio.structs.USB_STRING_DESCRIPTOR stringDescriptor2
protected de.thesycon.usbio.structs.USB_STRING_DESCRIPTOR stringDescriptor3
protected int numberOfStringDescriptors
protected de.thesycon.usbio.structs.USB_DEVICE_DESCRIPTOR deviceDescriptor
protected de.thesycon.usbio.UsbIo gUsbIo
protected int gDevList
| Constructor Detail |
|---|
public SiLabsC8051F320_USBIO_AeSequencer()
public SiLabsC8051F320_USBIO_AeSequencer(int devNumber)
devNumber - the desired device number, in range returned by CypressFX2Factory.getNumInterfacesAvailable| Method Detail |
|---|
public void onAdd()
onAdd in interface de.thesycon.usbio.PnPNotifyInterfacepublic void onRemove()
onRemove in interface de.thesycon.usbio.PnPNotifyInterfacepublic void close()
close in interface HardwareInterfacepublic int getNumberOfStringDescriptors()
protected boolean hasStringIdentifier()
public void open()
throws HardwareInterfaceException
open in interface HardwareInterfaceHardwareInterfaceException - if there is a problem. Diagnostics are printed to stderr.close()public java.lang.String[] getStringDescriptors()
getStringDescriptors in interface USBInterfacepublic int[] getVIDPID()
getVIDPID in interface USBInterfacepublic short getVID()
getVID in interface USBInterfacepublic short getPID()
getPID in interface USBInterfacepublic short getDID()
getDID in interface USBInterfacepublic boolean isOpen()
open().
isOpen in interface HardwareInterfacepublic java.lang.String getTypeName()
HardwareInterface
getTypeName in interface HardwareInterfaceprotected void submitPacket(AEPacketRaw packet)
packet - the packet, which consists of EventRaw's to be sent to the device with absolute timestampsprotected void checkWtiterThread()
public int getNumEventsSent()
getNumEventsSent in interface AESequencerInterfacepublic int getNumEventsToSend()
getNumEventsToSend in interface AESequencerInterfacepublic void resetTimestamps()
AESequencerInterface
resetTimestamps in interface AESequencerInterfacepublic boolean isEventSequencingEnabled()
isEventSequencingEnabled in interface AESequencerInterfacepublic int getMaxCapacity()
AESequencerInterface
getMaxCapacity in interface AESequencerInterfacepublic int getEstimatedOutEventRate()
AESequencerInterface
getEstimatedOutEventRate in interface AESequencerInterfacepublic int getTimestampTickUs()
getTimestampTickUs in interface AESequencerInterfacepublic void offerPacketToSequencer(AEPacketRaw packet)
AESequencerInterface
offerPacketToSequencer in interface AESequencerInterfacepacket - the packet to add to the tail of the queue.public void setLoopedSequencingEnabled(boolean set)
AESequencerInterface
setLoopedSequencingEnabled in interface AESequencerInterfaceset - true to loop packet, false to sequence a single packetpublic boolean isLoopedSequencingEnabled()
isLoopedSequencingEnabled in interface AESequencerInterface
public void startSequencing(AEPacketRaw eventsToSend)
throws HardwareInterfaceException
AESequencerInterface
startSequencing in interface AESequencerInterfaceeventsToSend - the events that should be sequenced, timestamps are realtive to last event,
inter spike interval must not be bigger than 2^16-1
HardwareInterfaceException
public void stopSequencing()
throws HardwareInterfaceException
AESequencerInterface
stopSequencing in interface AESequencerInterfaceHardwareInterfaceException
|
jAER project on SourceForge | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||