WPILibC++
2018.4.1-20180928043320-1211-g175c6c1
|
A CommandGroup is a list of commands which are executed in sequence. More...
#include <CommandGroup.h>
Public Member Functions | |
CommandGroup (const wpi::Twine &name) | |
Creates a new CommandGroup with the given name. More... | |
CommandGroup (CommandGroup &&)=default | |
CommandGroup & | operator= (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 |
![]() | |
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 | |
Command & | operator= (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 SubsystemSet & | GetRequirements () const |
Returns the requirements (as an std::set of Subsystem pointers) of this command. More... | |
CommandGroup * | GetGroup () 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... | |
![]() | |
ErrorBase (ErrorBase &&)=default | |
ErrorBase & | operator= (ErrorBase &&)=default |
virtual Error & | GetError () |
Retrieve the current error. More... | |
virtual const Error & | GetError () 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... | |
![]() | |
SendableBase (bool addLiveWindow=true) | |
Creates an instance of the sensor base. More... | |
SendableBase (SendableBase &&rhs) | |
SendableBase & | operator= (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... | |
![]() | |
Sendable (Sendable &&)=default | |
Sendable & | operator= (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 () |
![]() | |
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... | |
![]() | |
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 | |
![]() | |
using | SubsystemSet = wpi::SmallPtrSetImpl< Subsystem * > |
![]() | |
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 Error & | GetGlobalError () |
Retrieve the current global error. | |
![]() | |
Error | m_error |
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().
|
explicit |
Creates a new CommandGroup with the given name.
name | The name for this command group |
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.
command | The 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.
command | The command to be added |
timeout | The 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.
command | The 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.
command | The Command to be added |
timeout | The timeout (in seconds) |