|
jAER project on SourceForge | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectch.unizh.ini.jaer.projects.rccar.SiLabsC8051F320_USBIO_CarServoController
public class SiLabsC8051F320_USBIO_CarServoController
Servo motor controller using USBIO driver access to SiLabsC8051F320 device for controlling car servos. It can control two servos (e.g. steering and speed) while the device monitors two other servos (e.g. steering and speed outputs from a radio receiver). When the device detects non-zero radio outputs, it blocks out the computer values and sends a status message to the host.
Field Summary | |
---|---|
protected de.thesycon.usbio.structs.USB_DEVICE_DESCRIPTOR |
deviceDescriptor
the USBIO device descriptor |
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. |
protected int |
interfaceNumber
the device number, out of all potential compatible devices that could be opened |
protected int |
numberOfStringDescriptors
|
static short |
PID
|
static int |
RADIO_SPEED
|
static int |
RADIO_STEER
|
static int |
SPEED_SERVO
|
static int |
STEERING_SERVO
|
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
|
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 |
Constructor Summary | |
---|---|
SiLabsC8051F320_USBIO_CarServoController()
Creates a new instance of SiLabsC8051F320_USBIO_ServoController for interface number 0 |
|
SiLabsC8051F320_USBIO_CarServoController(int n)
Creates a new instance of SiLabsC8051F320_USBIO_ServoController |
Method Summary | |
---|---|
void |
close()
Closes the device. |
protected byte[] |
deadzoneValue(float value)
Computes the 2-byte deadzone value to be sent to the ucontroller for a particular dead zone. |
void |
disableAllServos()
disables all servos |
void |
disableServo(int servo)
sends a servo value to disable the servo |
float |
getDeadzoneForSpeed()
|
float |
getDeadzoneForSteering()
|
short |
getDID()
|
float |
getLastServoValue(int servo)
Returns last servo value sent (0 before sending a value) |
float[] |
getLastServoValues()
Returns last servo values sent. |
int |
getNumberOfStringDescriptors()
returns number of string descriptors |
int |
getNumServos()
|
short |
getPID()
|
float |
getRadioSpeed()
Returns the last steering value received from radio receiver |
float |
getRadioSteer()
Returns the last steering value received from radio receiver |
int |
getRadioTimeoutMs()
|
java.lang.String[] |
getStringDescriptors()
return the string USB descriptors for the device |
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 |
isOpen()
reports if interface is open() . |
static void |
main(java.lang.String[] args)
|
void |
onAdd()
|
void |
onRemove()
|
void |
open()
constrcuts a new USB connection, opens it. |
protected void |
openUsbIo()
This method does the hard work of opening the device, downloading the firmware, making sure everything is OK. |
void |
setAllServoValues(float[] values)
sets all servos to values in one transfer |
void |
setDeadzoneForSpeed(float f)
Sets the radio "dead zone". |
void |
setDeadzoneForSteering(float f)
Sets the radio "dead zone". |
void |
setPort2(int portValue)
sends a command to set the port 2 output (on the side of the original board) to portValue. |
void |
setRadioTimeoutMs(int radioTimeoutMs)
Sets the timeout for radio control override of computer control. |
void |
setServoValue(int servo,
float value)
sets servo position. |
void |
setServoValuePWM(int servo,
int pwmValue)
directly sends a particular short value to the servo, bypassing conversion from float. |
void |
setSpeed(float f)
Sets the speed controller value. |
void |
setSteering(float f)
Sets the steering angle |
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 STEERING_SERVO
public static final int SPEED_SERVO
public static final int RADIO_STEER
public static final int RADIO_SPEED
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_CarServoController(int n)
n
- the interface numberpublic SiLabsC8051F320_USBIO_CarServoController()
Method 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 printeds.protected void openUsbIo() throws HardwareInterfaceException
HardwareInterfaceException
- if there is a problem. Diagnostics are printed to stderr.close()
public java.lang.String[] getStringDescriptors()
public int[] getVIDPID()
public short getVID()
public short getPID()
public short getDID()
public boolean isOpen()
open()
.
isOpen
in interface HardwareInterface
public int getNumServos()
getNumServos
in interface ServoInterface
public java.lang.String getTypeName()
HardwareInterface
getTypeName
in interface HardwareInterface
protected byte[] deadzoneValue(float value)
value
- the deadzone as a float value 0-1. 0 means no deadzone, the computer almost never controls the car,
1 means complete deadzone, meaning the computer always controls the car and the remote control is disabled
public void setServoValuePWM(int servo, int pwmValue) throws HardwareInterfaceException
servo
- the servo numberpwmValue
- the value written to servo controller is 64k minus this value
HardwareInterfaceException
public void setServoValue(int servo, float value)
setServoValue
in interface ServoInterface
servo
- the servo motor, 0 basedvalue
- the value from 0 to 1. Values out of these bounds are clipped. Special value -1f turns off the servos.ServoInterface.setAllServoValues(float[])
public void disableAllServos() throws HardwareInterfaceException
ServoInterface
disableAllServos
in interface ServoInterface
HardwareInterfaceException
public void disableServo(int servo) throws HardwareInterfaceException
disableServo
in interface ServoInterface
servo
- the servo number, 0 based
HardwareInterfaceException
public void setAllServoValues(float[] values) throws HardwareInterfaceException
setAllServoValues
in interface ServoInterface
values
- array of value, must have length of number of servos
HardwareInterfaceException
ServoInterface.getNumServos()
public static final void main(java.lang.String[] args)
public void setSteering(float f)
f
- 0-1 value, 0.5f sets straight ahead, 0 is full left, 1 is full rightpublic void setSpeed(float f)
f
- 0-1 value, 0.5 is stopped, -.5f is full reverse, 1 is full aheadpublic void setDeadzoneForSpeed(float f)
f
- range a value such that (0.5-range) to (0.5+range) radio inputs are ignored by the car. The larger
this value, the more the user must press throttle or turn steering wheel to control car. The smaller this
value, the finer the control is possible, but the more likely that noisy radio signals will result in
spurious control.public void setDeadzoneForSteering(float f)
f
- range a value such that (0.5-range) to (0.5+range) radio inputs are ignored by the car. The larger
this value, the more the user must press throttle or turn steering wheel to control car. The smaller this
value, the finer the control is possible, but the more likely that noisy radio signals will result in
spurious control.public float getDeadzoneForSpeed()
public float getDeadzoneForSteering()
public float getRadioSteer()
public float getRadioSpeed()
public int getRadioTimeoutMs()
public void setRadioTimeoutMs(int radioTimeoutMs)
radioTimeoutMs
- the lockout time in mspublic float[] getLastServoValues()
ServoInterface
getLastServoValues
in interface ServoInterface
public float getLastServoValue(int servo)
ServoInterface
getLastServoValue
in interface ServoInterface
public void setPort2(int portValue)
ServoInterface
setPort2
in interface ServoInterface
portValue
- the bits to set
|
jAER project on SourceForge | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |