WPILibC++  2019.3.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
frc::CommandGroup Class Reference

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

#include <CommandGroup.h>

Inheritance diagram for frc::CommandGroup:
frc::Command frc::ErrorBase frc::SendableBase frc::Sendable

Public Member Functions

 CommandGroup (const wpi::Twine &name)
 Creates a new CommandGroup with the given name. More...
 
 CommandGroup (CommandGroup &&)=default
 
CommandGroupoperator= (CommandGroup &&)=default
 
void AddSequential (Command *command)
 Adds a new Command to the group. More...
 
void AddSequential (Command *command, double timeout)
 Adds a new Command to the group with a given timeout. More...
 
void AddParallel (Command *command)
 Adds a new child Command to the group. More...
 
void AddParallel (Command *command, double timeout)
 Adds a new child Command to the group with the given timeout. More...
 
bool IsInterruptible () const
 
int GetSize () const
 
- Public Member Functions inherited from frc::Command
 Command ()
 Creates a new command. More...
 
 Command (const wpi::Twine &name)
 Creates a new command with the given name and no timeout. More...
 
 Command (double timeout)
 Creates a new command with the given timeout and a default name. More...
 
 Command (Subsystem &subsystem)
 Creates a new command with the given timeout and a default name. More...
 
 Command (const wpi::Twine &name, double timeout)
 Creates a new command with the given name and timeout. More...
 
 Command (const wpi::Twine &name, Subsystem &subsystem)
 Creates a new command with the given name and timeout. More...
 
 Command (double timeout, Subsystem &subsystem)
 Creates a new command with the given name and timeout. More...
 
 Command (const wpi::Twine &name, double timeout, Subsystem &subsystem)
 Creates a new command with the given name and timeout. More...
 
 Command (Command &&)=default
 
Commandoperator= (Command &&)=default
 
double TimeSinceInitialized () const
 Returns the time since this command was initialized (in seconds). More...
 
void Requires (Subsystem *s)
 This method specifies that the given Subsystem is used by this command. More...
 
void Start ()
 Starts up the command. More...
 
bool Run ()
 The run method is used internally to actually run the commands. More...
 
void Cancel ()
 This will cancel the current command. More...
 
bool IsRunning () const
 Returns whether or not the command is running. More...
 
bool IsInitialized () const
 Returns whether or not the command has been initialized. More...
 
bool IsCompleted () const
 Returns whether or not the command has completed running. More...
 
bool IsCanceled () const
 Returns whether or not this has been canceled. More...
 
bool IsInterruptible () const
 Returns whether or not this command can be interrupted. More...
 
void SetInterruptible (bool interruptible)
 Sets whether or not this command can be interrupted. More...
 
bool DoesRequire (Subsystem *subsystem) const
 Checks if the command requires the given Subsystem. More...
 
const SubsystemSetGetRequirements () const
 Returns the requirements (as an std::set of Subsystem pointers) of this command. More...
 
CommandGroupGetGroup () const
 Returns the CommandGroup that this command is a part of. More...
 
void SetRunWhenDisabled (bool run)
 Sets whether or not this Command should run when the robot is disabled. More...
 
bool WillRunWhenDisabled () const
 Returns whether or not this Command will run when the robot is disabled, or if it will cancel itself. More...
 
int GetID () const
 Get the ID (sequence number) for this command. More...
 
void InitSendable (SendableBuilder &builder) override
 Initializes this Sendable object. More...
 
- Public Member Functions inherited from frc::ErrorBase
 ErrorBase (ErrorBase &&)=default
 
ErrorBaseoperator= (ErrorBase &&)=default
 
virtual ErrorGetError ()
 Retrieve the current error. More...
 
virtual const ErrorGetError () const
 Retrieve the current error. More...
 
virtual void ClearError () const
 Clear the current error information associated with this sensor.
 
virtual void SetErrnoError (const wpi::Twine &contextMessage, wpi::StringRef filename, wpi::StringRef function, int 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 wpi::Twine &contextMessage, wpi::StringRef filename, wpi::StringRef function, int lineNumber) const
 Set the current error information associated from the nivision Imaq API. More...
 
virtual void SetError (Error::Code code, const wpi::Twine &contextMessage, wpi::StringRef filename, wpi::StringRef function, int lineNumber) const
 Set the current error information associated with this sensor. More...
 
virtual void SetErrorRange (Error::Code code, int32_t minRange, int32_t maxRange, int32_t requestedValue, const wpi::Twine &contextMessage, wpi::StringRef filename, wpi::StringRef function, int lineNumber) const
 Set the current error information associated with this sensor. More...
 
virtual void SetWPIError (const wpi::Twine &errorMessage, Error::Code code, const wpi::Twine &contextMessage, wpi::StringRef filename, wpi::StringRef function, int lineNumber) const
 Set the current error information associated with this sensor. More...
 
virtual void CloneError (const ErrorBase &rhs) const
 
virtual bool StatusIsFatal () const
 Check if the current error code represents a fatal error. More...
 
- Public Member Functions inherited from frc::SendableBase
 SendableBase (bool addLiveWindow=true)
 Creates an instance of the sensor base. More...
 
 SendableBase (SendableBase &&rhs)
 
SendableBaseoperator= (SendableBase &&rhs)
 
std::string GetName () const final
 Gets the name of this Sendable object. More...
 
void SetName (const wpi::Twine &name) final
 Sets the name of this Sendable object. More...
 
std::string GetSubsystem () const final
 Gets the subsystem name of this Sendable object. More...
 
void SetSubsystem (const wpi::Twine &subsystem) final
 Sets the subsystem name of this Sendable object. More...
 
- Public Member Functions inherited from frc::Sendable
 Sendable (Sendable &&)=default
 
Sendableoperator= (Sendable &&)=default
 
void SetName (const wpi::Twine &subsystem, const wpi::Twine &name)
 Sets both the subsystem name and device name of this Sendable object. More...
 

Protected Member Functions

virtual void Initialize ()
 Can be overridden by teams.
 
virtual void Execute ()
 Can be overridden by teams.
 
virtual bool IsFinished ()
 Can be overridden by teams.
 
virtual void End ()
 Can be overridden by teams.
 
virtual void Interrupted ()
 Can be overridden by teams.
 
virtual void _Initialize ()
 
virtual void _Execute ()
 
virtual void _End ()
 
virtual void _Interrupted ()
 
- Protected Member Functions inherited from frc::Command
void SetTimeout (double timeout)
 Sets the timeout of this command. More...
 
bool IsTimedOut () const
 Returns whether or not the TimeSinceInitialized() method returns a number which is greater than or equal to the timeout for the command. More...
 
bool AssertUnlocked (const std::string &message)
 If changes are locked, then this will generate a CommandIllegalUse error. More...
 
void SetParent (CommandGroup *parent)
 Sets the parent of this command. More...
 
bool IsParented () const
 Returns whether the command has a parent. More...
 
void ClearRequirements ()
 Clears list of subsystem requirements. More...
 
virtual void _Cancel ()
 This works like Cancel(), except that it doesn't throw an exception if it is a part of a command group. More...
 
- Protected Member Functions inherited from frc::SendableBase
void AddChild (std::shared_ptr< Sendable > child)
 Add a child component. More...
 
void AddChild (void *child)
 Add a child component. More...
 
void SetName (const wpi::Twine &moduleType, int channel)
 Sets the name of the sensor with a channel number. More...
 
void SetName (const wpi::Twine &moduleType, int moduleNumber, int channel)
 Sets the name of the sensor with a module and channel number. More...
 

Additional Inherited Members

- Public Types inherited from frc::Command
using SubsystemSet = wpi::SmallPtrSetImpl< Subsystem * >
 
- Static Public Member Functions inherited from frc::ErrorBase
static void SetGlobalError (Error::Code code, const wpi::Twine &contextMessage, wpi::StringRef filename, wpi::StringRef function, int lineNumber)
 
static void SetGlobalWPIError (const wpi::Twine &errorMessage, const wpi::Twine &contextMessage, wpi::StringRef filename, wpi::StringRef function, int lineNumber)
 
static const ErrorGetGlobalError ()
 Retrieve the current global error.
 
- Protected Attributes inherited from frc::ErrorBase
Error m_error
 

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 Command 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

Constructor & Destructor Documentation

frc::CommandGroup::CommandGroup ( const wpi::Twine name)
explicit

Creates a new CommandGroup with the given name.

Parameters
nameThe name for this command group

Member Function Documentation

void frc::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
void frc::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)
void frc::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
void frc::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)

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