edu.wpi.first.wpilibj
Class RobotBase

java.lang.Object
  extended by javax.microedition.midlet.MIDlet
      extended by edu.wpi.first.wpilibj.RobotBase
Direct Known Subclasses:
FRCBotRobotBase, IterativeRobot, SimpleRobot

public abstract class RobotBase
extends MIDlet

Implement a Robot Program framework. The RobotBase class is intended to be subclassed by a user creating a robot program. Overridden autonomous() and operatorControl() methods are called at the appropriate time as the match proceeds. In the current implementation, the Autonomous code will run to completion before the OperatorControl code could start. In the future the Autonomous code might be spawned as a task, then killed at the end of the Autonomous period.


Field Summary
static java.lang.String ERRORS_TO_DRIVERSTATION_PROP
          Boolean System property.
protected  DriverStation m_ds
           
static int ROBOT_TASK_PRIORITY
          The VxWorks priority that robot code should work at (so Java code should run at)
 
Constructor Summary
protected RobotBase()
          Constructor for a generic robot program.
 
Method Summary
protected  void destroyApp(boolean unconditional)
          Called if the MIDlet is terminated by the system.
 void free()
          Free the resources for a RobotBase class.
static boolean getBooleanProperty(java.lang.String name, boolean defaultValue)
           
 Watchdog getWatchdog()
          Return the instance of the Watchdog timer.
 boolean isAutonomous()
          Determine if the robot is currently in Autnomous mode.
 boolean isDisabled()
          Determine if the Robot is currently disabled.
 boolean isEnabled()
          Determine if the Robot is currently enabled.
 boolean isNewDataAvailable()
          Indicates if new data is available from the driver station.
 boolean isOperatorControl()
          Determine if the robot is currently in Operator Control mode.
 boolean isSystemActive()
          Check on the overall status of the system.
protected  void pauseApp()
          Pauses the application
protected  void startApp()
          Starting point for the applications.
abstract  void startCompetition()
          Provide an alternate "main loop" via startCompetition().
 
Methods inherited from class javax.microedition.midlet.MIDlet
runMIDlet
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ROBOT_TASK_PRIORITY

public static final int ROBOT_TASK_PRIORITY
The VxWorks priority that robot code should work at (so Java code should run at)

See Also:
Constant Field Values

ERRORS_TO_DRIVERSTATION_PROP

public static final java.lang.String ERRORS_TO_DRIVERSTATION_PROP
Boolean System property. If true (default), send System.err messages to the driver station.

See Also:
Constant Field Values

m_ds

protected final DriverStation m_ds
Constructor Detail

RobotBase

protected RobotBase()
Constructor for a generic robot program. User code should be placed in the constructor that runs before the Autonomous or Operator Control period starts. The constructor will run to completion before Autonomous is entered. This must be used to ensure that the communications code starts. In the future it would be nice to put this code into it's own task that loads on boot so ensure that it runs.

Method Detail

free

public void free()
Free the resources for a RobotBase class.


isSystemActive

public boolean isSystemActive()
Check on the overall status of the system.

Returns:
Is the system active (i.e. PWM motor outputs, etc. enabled)?

getWatchdog

public Watchdog getWatchdog()
Return the instance of the Watchdog timer. Get the watchdog timer so the user program can either disable it or feed it when necessary.

Returns:
The Watchdog timer.

isDisabled

public boolean isDisabled()
Determine if the Robot is currently disabled.

Returns:
True if the Robot is currently disabled by the field controls.

isEnabled

public boolean isEnabled()
Determine if the Robot is currently enabled.

Returns:
True if the Robot is currently enabled by the field controls.

isAutonomous

public boolean isAutonomous()
Determine if the robot is currently in Autnomous mode.

Returns:
True if the robot is currently operating Autonomously as determined by the field controls.

isOperatorControl

public boolean isOperatorControl()
Determine if the robot is currently in Operator Control mode.

Returns:
True if the robot is currently operating in Tele-Op mode as determined by the field controls.

isNewDataAvailable

public boolean isNewDataAvailable()
Indicates if new data is available from the driver station.

Returns:
Has new data arrived over the network since the last time this function was called?

startCompetition

public abstract void startCompetition()
Provide an alternate "main loop" via startCompetition().


getBooleanProperty

public static boolean getBooleanProperty(java.lang.String name,
                                         boolean defaultValue)

startApp

protected final void startApp()
                       throws MIDletStateChangeException
Starting point for the applications. Starts the OtaServer and then runs the robot.

Specified by:
startApp in class MIDlet
Throws:
MIDletStateChangeException

pauseApp

protected final void pauseApp()
Pauses the application


destroyApp

protected final void destroyApp(boolean unconditional)
                         throws MIDletStateChangeException
Called if the MIDlet is terminated by the system. I.e. if startApp throws any exception other than MIDletStateChangeException, if the isolate running the MIDlet is killed with Isolate.exit(), or if VM.stopVM() is called. It is not called if MIDlet.notifyDestroyed() was called.

Parameters:
unconditional - If true when this method is called, the MIDlet must cleanup and release all resources. If false the MIDlet may throw MIDletStateChangeException to indicate it does not want to be destroyed at this time.
Throws:
MIDletStateChangeException - if there is an exception in terminating the midlet