|
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.getNumInterfacesAvailableMethod Detail |
---|
public void onAdd()
onAdd
in interface de.thesycon.usbio.PnPNotifyInterface
public void onRemove()
onRemove
in interface de.thesycon.usbio.PnPNotifyInterface
public void close()
close
in interface HardwareInterface
public int getNumberOfStringDescriptors()
protected boolean hasStringIdentifier()
public void open() throws HardwareInterfaceException
open
in interface HardwareInterface
HardwareInterfaceException
- if there is a problem. Diagnostics are printed to stderr.close()
public java.lang.String[] getStringDescriptors()
getStringDescriptors
in interface USBInterface
public int[] getVIDPID()
getVIDPID
in interface USBInterface
public short getVID()
getVID
in interface USBInterface
public short getPID()
getPID
in interface USBInterface
public short getDID()
getDID
in interface USBInterface
public boolean isOpen()
open()
.
isOpen
in interface HardwareInterface
public java.lang.String getTypeName()
HardwareInterface
getTypeName
in interface HardwareInterface
protected 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 AESequencerInterface
public int getNumEventsToSend()
getNumEventsToSend
in interface AESequencerInterface
public void resetTimestamps()
AESequencerInterface
resetTimestamps
in interface AESequencerInterface
public boolean isEventSequencingEnabled()
isEventSequencingEnabled
in interface AESequencerInterface
public int getMaxCapacity()
AESequencerInterface
getMaxCapacity
in interface AESequencerInterface
public int getEstimatedOutEventRate()
AESequencerInterface
getEstimatedOutEventRate
in interface AESequencerInterface
public int getTimestampTickUs()
getTimestampTickUs
in interface AESequencerInterface
public void offerPacketToSequencer(AEPacketRaw packet)
AESequencerInterface
offerPacketToSequencer
in interface AESequencerInterface
packet
- the packet to add to the tail of the queue.public void setLoopedSequencingEnabled(boolean set)
AESequencerInterface
setLoopedSequencingEnabled
in interface AESequencerInterface
set
- 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 AESequencerInterface
eventsToSend
- 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 AESequencerInterface
HardwareInterfaceException
|
jAER project on SourceForge | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |