Now you can download a copy of these docs so you can use them offline! Download now

#include <CommandGroup.h>

Inheritance diagram for CommandGroup:
Collaboration diagram for CommandGroup:

Public Member Functions

 CommandGroup ()
 
 CommandGroup (const char *name)
 
void AddSequential (Command *command)
 
void AddSequential (Command *command, double timeout)
 
void AddParallel (Command *command)
 
void AddParallel (Command *command, double timeout)
 
bool IsInterruptible ()
 
int GetSize ()
 
- Public Member Functions inherited from Command
 Command ()
 
 Command (const char *name)
 
 Command (double timeout)
 
 Command (const char *name, double timeout)
 
double TimeSinceInitialized ()
 
void Requires (Subsystem *s)
 
bool IsCanceled ()
 
void Start ()
 
bool Run ()
 
void Cancel ()
 
bool IsRunning ()
 
bool IsInterruptible ()
 
void SetInterruptible (bool interruptible)
 
bool DoesRequire (Subsystem *subsystem)
 
SubsystemSet GetRequirements ()
 
CommandGroupGetGroup ()
 
void SetRunWhenDisabled (bool run)
 
bool WillRunWhenDisabled ()
 
int GetID ()
 
virtual std::string GetName ()
 
virtual void InitTable (ITable *table)
 
virtual ITableGetTable ()
 
virtual std::string GetSmartDashboardType ()
 
virtual void ValueChanged (ITable *source, const std::string &key, EntryValue value, bool isNew)
 
- Public Member Functions inherited from ErrorBase
virtual ErrorGetError ()
 Retrieve the current error. Get the current error information associated with this sensor.
 
virtual const ErrorGetError () const
 
virtual void SetErrnoError (const char *contextMessage, const char *filename, const char *function, uint32_t lineNumber) const
 Set error information associated with a C library call that set an error to the "errno" global variable. More...
 
virtual void SetImaqError (int success, const char *contextMessage, const char *filename, const char *function, uint32_t lineNumber) const
 Set the current error information associated from the nivision Imaq API. More...
 
virtual void SetError (Error::Code code, const char *contextMessage, const char *filename, const char *function, uint32_t lineNumber) const
 Set the current error information associated with this sensor. More...
 
virtual void SetWPIError (const char *errorMessage, const char *contextMessage, const char *filename, const char *function, uint32_t lineNumber) const
 Set the current error information associated with this sensor. More...
 
virtual void CloneError (ErrorBase *rhs) const
 
virtual void ClearError () const
 Clear the current error information associated with this sensor.
 
virtual bool StatusIsFatal () const
 Check if the current error code represents a fatal error. More...
 

Protected Member Functions

virtual void Initialize ()
 
virtual void Execute ()
 
virtual bool IsFinished ()
 
virtual void End ()
 
virtual void Interrupted ()
 
virtual void _Initialize ()
 
virtual void _Interrupted ()
 
virtual void _Execute ()
 
virtual void _End ()
 
- Protected Member Functions inherited from Command
void SetTimeout (double timeout)
 
bool IsTimedOut ()
 
bool AssertUnlocked (const char *message)
 
void SetParent (CommandGroup *parent)
 
virtual void _Cancel ()
 
- Protected Member Functions inherited from ErrorBase
 ErrorBase ()
 Initialize the instance status to 0 for now.
 

Additional Inherited Members

- Public Types inherited from Command
typedef std::set< Subsystem * > SubsystemSet
 
- Static Public Member Functions inherited from ErrorBase
static void SetGlobalError (Error::Code code, const char *contextMessage, const char *filename, const char *function, uint32_t lineNumber)
 
static void SetGlobalWPIError (const char *errorMessage, const char *contextMessage, const char *filename, const char *function, uint32_t lineNumber)
 
static ErrorGetGlobalError ()
 
- Protected Attributes inherited from Command
ITablem_table
 
- Protected Attributes inherited from ErrorBase
Error m_error
 
- Static Protected Attributes inherited from ErrorBase
static SEM_ID _globalErrorMutex = semMCreate(SEM_Q_PRIORITY | SEM_DELETE_SAFE | SEM_INVERSION_SAFE)
 
static Error _globalError
 

Detailed Description

A CommandGroup is a list of commands which are executed in sequence.

Commands in a CommandGroup are added using the AddSequential(...) method and are called sequentially. CommandGroups are themselves Commands and can be given to other CommandGroups.

CommandGroups will carry all of the requirements of their subcommands. Additional requirements can be specified by calling Requires(...) normally in the constructor.

CommandGroups can also execute commands in parallel, simply by adding them using AddParallel(...).

See Also
Command
Subsystem

Definition at line 33 of file CommandGroup.h.

Constructor & Destructor Documentation

CommandGroup::CommandGroup ( )

Creates a new CommandGroup.

Definition at line 13 of file CommandGroup.cpp.

CommandGroup::CommandGroup ( const char *  name)

Creates a new CommandGroup with the given name.

Parameters
namethe name for this command group

Definition at line 22 of file CommandGroup.cpp.

Member Function Documentation

void CommandGroup::AddParallel ( Command command)

Adds a new child Command to the group. The Command will be started after all the previously added Commands.

Instead of waiting for the child to finish, a CommandGroup will have it run at the same time as the subsequent Commands. The child will run until either it finishes, a new child with conflicting requirements is started, or the main sequence runs a Command with conflicting requirements. In the latter two cases, the child will be canceled even if it says it can't be interrupted.

Note that any requirements the given Command has will be added to the group. For this reason, a Command's requirements can not be changed after being added to a group.

It is recommended that this method be called in the constructor.

Parameters
commandThe command to be added

Definition at line 125 of file CommandGroup.cpp.

void CommandGroup::AddParallel ( Command command,
double  timeout 
)

Adds a new child Command to the group with the given timeout. The Command will be started after all the previously added Commands.

Once the Command is started, it will run until it finishes, is interrupted, or the time expires, whichever is sooner. Note that the given Command will have no knowledge that it is on a timer.

Instead of waiting for the child to finish, a CommandGroup will have it run at the same time as the subsequent Commands. The child will run until either it finishes, the timeout expires, a new child with conflicting requirements is started, or the main sequence runs a Command with conflicting requirements. In the latter two cases, the child will be canceled even if it says it can't be interrupted.

Note that any requirements the given Command has will be added to the group. For this reason, a Command's requirements can not be changed after being added to a group.

It is recommended that this method be called in the constructor.

Parameters
commandThe command to be added
timeoutThe timeout (in seconds)

Definition at line 169 of file CommandGroup.cpp.

void CommandGroup::AddSequential ( Command command)

Adds a new Command to the group. The Command will be started after all the previously added Commands.

Note that any requirements the given Command has will be added to the group. For this reason, a Command's requirements can not be changed after being added to a group.

It is recommended that this method be called in the constructor.

Parameters
commandThe Command to be added

Definition at line 44 of file CommandGroup.cpp.

void CommandGroup::AddSequential ( Command command,
double  timeout 
)

Adds a new Command to the group with a given timeout. The Command will be started after all the previously added commands.

Once the Command is started, it will be run until it finishes or the time expires, whichever is sooner. Note that the given Command will have no knowledge that it is on a timer.

Note that any requirements the given Command has will be added to the group. For this reason, a Command's requirements can not be changed after being added to a group.

It is recommended that this method be called in the constructor.

Parameters
commandThe Command to be added
timeoutThe timeout (in seconds)

Definition at line 81 of file CommandGroup.cpp.

void CommandGroup::End ( )
protectedvirtual

Called when the command ended peacefully. This is where you may want to wrap up loose ends, like shutting off a motor that was being used in the command.

Implements Command.

Definition at line 318 of file CommandGroup.cpp.

void CommandGroup::Execute ( )
protectedvirtual

The execute method is called repeatedly until this Command either finishes or is canceled.

Implements Command.

Definition at line 313 of file CommandGroup.cpp.

void CommandGroup::Initialize ( )
protectedvirtual

The initialize method is called the first time this Command is run after being started.

Implements Command.

Definition at line 308 of file CommandGroup.cpp.

void CommandGroup::Interrupted ( )
protectedvirtual

Called when the command ends because somebody called cancel() or another command shared the same requirements as this one, and booted it out.

This is where you may want to wrap up loose ends, like shutting off a motor that was being used in the command.

Generally, it is useful to simply call the end() method within this method

Implements Command.

Definition at line 323 of file CommandGroup.cpp.

bool CommandGroup::IsFinished ( )
protectedvirtual

Returns whether this command is finished. If it is, then the command will be removed and end() will be called.

It may be useful for a team to reference the isTimedOut() method for time-sensitive commands.

Returns
whether this command is finished.
See Also
Command::isTimedOut() isTimedOut()

Implements Command.

Definition at line 327 of file CommandGroup.cpp.


The documentation for this class was generated from the following files:

Generated on Sat Apr 26 2014 12:26:46 for WPILibC++ by doxygen 1.8.6