|
WPILibC++
2020.3.2
|
A state machine representing a complete action to be performed by the robot. More...
#include <Command.h>
Public Member Functions | |
| Command (const Command &) | |
| Command & | operator= (const Command &) |
| Command (Command &&)=default | |
| Command & | operator= (Command &&)=default |
| virtual void | Initialize () |
| The initial subroutine of a command. More... | |
| virtual void | Execute () |
| The main body of a command. More... | |
| virtual void | End (bool interrupted) |
| The action to take when the command ends. More... | |
| virtual bool | IsFinished () |
| Whether the command has finished. More... | |
| virtual wpi::SmallSet< Subsystem *, 4 > | GetRequirements () const =0 |
| Specifies the set of subsystems used by this command. More... | |
| ParallelRaceGroup | WithTimeout (units::second_t duration) && |
| Decorates this command with a timeout. More... | |
| ParallelRaceGroup | WithInterrupt (std::function< bool()> condition) && |
| Decorates this command with an interrupt condition. More... | |
| SequentialCommandGroup | BeforeStarting (std::function< void()> toRun, std::initializer_list< Subsystem * > requirements) && |
| Decorates this command with a runnable to run before this command starts. More... | |
| SequentialCommandGroup | BeforeStarting (std::function< void()> toRun, wpi::ArrayRef< Subsystem * > requirements={}) && |
| Decorates this command with a runnable to run before this command starts. More... | |
| SequentialCommandGroup | AndThen (std::function< void()> toRun, std::initializer_list< Subsystem * > requirements) && |
| Decorates this command with a runnable to run after the command finishes. More... | |
| SequentialCommandGroup | AndThen (std::function< void()> toRun, wpi::ArrayRef< Subsystem * > requirements={}) && |
| Decorates this command with a runnable to run after the command finishes. More... | |
| PerpetualCommand | Perpetually () && |
| Decorates this command to run perpetually, ignoring its ordinary end conditions. More... | |
| ProxyScheduleCommand | AsProxy () |
| Decorates this command to run "by proxy" by wrapping it in a {}. More... | |
| void | Schedule (bool interruptible) |
| Schedules this command. More... | |
| void | Schedule () |
| Schedules this command, defaulting to interruptible. | |
| void | Cancel () |
| Cancels this command. More... | |
| bool | IsScheduled () const |
| Whether or not the command is currently scheduled. More... | |
| bool | HasRequirement (Subsystem *requirement) const |
| Whether the command requires a given subsystem. More... | |
| bool | IsGrouped () const |
| Whether the command is currently grouped in a command group. More... | |
| void | SetGrouped (bool grouped) |
| Sets whether the command is currently grouped in a command group. More... | |
| virtual bool | RunsWhenDisabled () const |
| Whether the given command should run when the robot is disabled. More... | |
| virtual std::string | GetName () const |
Public Member Functions inherited from frc::ErrorBase | |
| ErrorBase (const ErrorBase &)=default | |
| ErrorBase & | operator= (const ErrorBase &)=default |
| 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... | |
| void | ClearGlobalErrors () |
| Clear global errors. | |
Protected Member Functions | |
| virtual std::unique_ptr< Command > | TransferOwnership () &&=0 |
| Transfers ownership of this command to a unique pointer. More... | |
Protected Attributes | |
| bool | m_isGrouped = false |
Protected Attributes inherited from frc::ErrorBase | |
| Error | m_error |
Additional Inherited Members | |
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 Error | GetGlobalError () |
| Retrieve the last global error. | |
| static std::vector< Error > | GetGlobalErrors () |
| Retrieve all global errors. | |
A state machine representing a complete action to be performed by the robot.
Commands are run by the CommandScheduler, and can be composed into CommandGroups to allow users to build complicated multi-step actions without the need to roll the state machine logic themselves.
Commands are run synchronously from the main robot loop; no multithreading is used, unless specified explicitly from the command implementation.
Note: ALWAYS create a subclass by extending CommandHelper<Base, Subclass>, or decorators will not function!
| SequentialCommandGroup frc2::Command::AndThen | ( | std::function< void()> | toRun, |
| std::initializer_list< Subsystem * > | requirements | ||
| ) | && |
Decorates this command with a runnable to run after the command finishes.
| toRun | the Runnable to run |
| requirements | the required subsystems |
| SequentialCommandGroup frc2::Command::AndThen | ( | std::function< void()> | toRun, |
| wpi::ArrayRef< Subsystem * > | requirements = {} |
||
| ) | && |
Decorates this command with a runnable to run after the command finishes.
| toRun | the Runnable to run |
| requirements | the required subsystems |
| ProxyScheduleCommand frc2::Command::AsProxy | ( | ) |
Decorates this command to run "by proxy" by wrapping it in a {}.
This is useful for "forking off" from command groups when the user does not wish to extend the command's requirements to the entire command group.
| SequentialCommandGroup frc2::Command::BeforeStarting | ( | std::function< void()> | toRun, |
| std::initializer_list< Subsystem * > | requirements | ||
| ) | && |
Decorates this command with a runnable to run before this command starts.
| toRun | the Runnable to run |
| requirements | the required subsystems |
| SequentialCommandGroup frc2::Command::BeforeStarting | ( | std::function< void()> | toRun, |
| wpi::ArrayRef< Subsystem * > | requirements = {} |
||
| ) | && |
Decorates this command with a runnable to run before this command starts.
| toRun | the Runnable to run |
| requirements | the required subsystems |
| void frc2::Command::Cancel | ( | ) |
Cancels this command.
Will call the command's interrupted() method. Commands will be canceled even if they are not marked as interruptible.
|
virtual |
The action to take when the command ends.
Called when either the command finishes normally, or when it interrupted/canceled.
| interrupted | whether the command was interrupted/canceled |
Reimplemented in frc2::MecanumControllerCommand, frc2::ProfiledPIDCommand< Distance >, frc2::RamseteCommand, frc2::SwerveControllerCommand< NumModules >, frc2::SelectCommand< Key >, frc2::PIDCommand, frc2::ParallelDeadlineGroup, frc2::SequentialCommandGroup, frc2::ParallelCommandGroup, frc2::ConditionalCommand, frc2::TrapezoidProfileCommand< Distance >, frc2::ParallelRaceGroup, frc2::PerpetualCommand, frc2::FunctionalCommand, frc2::NotifierCommand, frc2::StartEndCommand, frc2::ProxyScheduleCommand, and frc2::WaitCommand.
|
virtual |
The main body of a command.
Called repeatedly while the command is scheduled.
Reimplemented in frc2::MecanumControllerCommand, frc2::ProfiledPIDCommand< Distance >, frc2::RamseteCommand, frc2::SwerveControllerCommand< NumModules >, frc2::SelectCommand< Key >, frc2::PIDCommand, frc2::ParallelDeadlineGroup, frc2::SequentialCommandGroup, frc2::ParallelCommandGroup, frc2::ConditionalCommand, frc2::TrapezoidProfileCommand< Distance >, frc2::ParallelRaceGroup, frc2::PerpetualCommand, frc2::FunctionalCommand, frc2::ProxyScheduleCommand, and frc2::RunCommand.
|
pure virtual |
Specifies the set of subsystems used by this command.
Two commands cannot use the same subsystem at the same time. If the command is scheduled as interruptible and another command is scheduled that shares a requirement, the command will be interrupted. Else, the command will not be scheduled. If no subsystems are required, return an empty set.
Note: it is recommended that user implementations contain the requirements as a field, and return that field here, rather than allocating a new set every time this is called.
Implemented in frc2::CommandBase.
| bool frc2::Command::HasRequirement | ( | Subsystem * | requirement | ) | const |
Whether the command requires a given subsystem.
Named "hasRequirement" rather than "requires" to avoid confusion with {}this may be able to be changed in a few years. requirement the subsystem to inquire about whether the subsystem is required
|
virtual |
The initial subroutine of a command.
Called once when the command is initially scheduled.
Reimplemented in frc2::MecanumControllerCommand, frc2::ProfiledPIDCommand< Distance >, frc2::RamseteCommand, frc2::SwerveControllerCommand< NumModules >, frc2::SelectCommand< Key >, frc2::PIDCommand, frc2::ParallelDeadlineGroup, frc2::SequentialCommandGroup, frc2::ParallelCommandGroup, frc2::ConditionalCommand, frc2::ParallelRaceGroup, frc2::TrapezoidProfileCommand< Distance >, frc2::PerpetualCommand, frc2::FunctionalCommand, frc2::NotifierCommand, frc2::InstantCommand, frc2::StartEndCommand, frc2::ProxyScheduleCommand, frc2::ScheduleCommand, and frc2::WaitCommand.
|
inlinevirtual |
Whether the command has finished.
Once a command finishes, the scheduler will call its end() method and un-schedule it.
Reimplemented in frc2::MecanumControllerCommand, frc2::RamseteCommand, frc2::SwerveControllerCommand< NumModules >, frc2::SelectCommand< Key >, frc2::ParallelDeadlineGroup, frc2::SequentialCommandGroup, frc2::ParallelCommandGroup, frc2::ConditionalCommand, frc2::TrapezoidProfileCommand< Distance >, frc2::ParallelRaceGroup, frc2::FunctionalCommand, frc2::WaitUntilCommand, frc2::ProxyScheduleCommand, frc2::ScheduleCommand, frc2::WaitCommand, and frc2::InstantCommand.
| bool frc2::Command::IsGrouped | ( | ) | const |
Whether the command is currently grouped in a command group.
Used as extra insurance to prevent accidental independent use of grouped commands.
| bool frc2::Command::IsScheduled | ( | ) | const |
Whether or not the command is currently scheduled.
Note that this does not detect whether the command is being run by a CommandGroup, only whether it is directly being run by the scheduler.
| PerpetualCommand frc2::Command::Perpetually | ( | ) | && |
Decorates this command to run perpetually, ignoring its ordinary end conditions.
The decorated command can still be interrupted or canceled.
|
inlinevirtual |
Whether the given command should run when the robot is disabled.
Override to return true if the command should run when disabled.
Reimplemented in frc2::SelectCommand< Key >, frc2::ParallelDeadlineGroup, frc2::SequentialCommandGroup, frc2::ParallelCommandGroup, frc2::ConditionalCommand, frc2::ParallelRaceGroup, frc2::WaitUntilCommand, frc2::ScheduleCommand, frc2::WaitCommand, and frc2::PrintCommand.
| void frc2::Command::Schedule | ( | bool | interruptible | ) |
Schedules this command.
| interruptible | whether this command can be interrupted by another command that shares one of its requirements |
| void frc2::Command::SetGrouped | ( | bool | grouped | ) |
Sets whether the command is currently grouped in a command group.
Can be used to "reclaim" a command if a group is no longer going to use it. NOT ADVISED!
|
protectedpure virtual |
Transfers ownership of this command to a unique pointer.
Used for decorator methods.
Implemented in frc2::SelectCommand< Key >.
| ParallelRaceGroup frc2::Command::WithInterrupt | ( | std::function< bool()> | condition | ) | && |
Decorates this command with an interrupt condition.
If the specified condition becomes true before the command finishes normally, the command will be interrupted and un-scheduled. Note that this only applies to the command returned by this method; the calling command is not itself changed.
| condition | the interrupt condition |
| ParallelRaceGroup frc2::Command::WithTimeout | ( | units::second_t | duration | ) | && |
Decorates this command with a timeout.
If the specified timeout is exceeded before the command finishes normally, the command will be interrupted and un-scheduled. Note that the timeout only applies to the command returned by this method; the calling command is not itself changed.
| duration | the timeout duration |