Runs one of a selection of commands, either using a selector and a key to command mapping, or a supplier that returns the command directly at runtime.
More...
|
template<class... Types, typename = std::enable_if_t<std::conjunction_v< std::is_base_of<Command, std::remove_reference_t<Types>>...>>> |
| SelectCommand (std::function< Key()> selector, std::pair< Key, Types >... commands) |
| Creates a new selectcommand. More...
|
|
| SelectCommand (std::function< Key()> selector, std::vector< std::pair< Key, std::unique_ptr< Command > > > &&commands) |
|
| SelectCommand (const SelectCommand &other)=delete |
|
| SelectCommand (SelectCommand &)=delete |
|
| SelectCommand (std::function< Command *()> toRun) |
| Creates a new selectcommand. More...
|
|
| SelectCommand (SelectCommand &&other)=default |
|
void | Initialize () override |
| The initial subroutine of a command. More...
|
|
void | Execute () override |
| The main body of a command. More...
|
|
void | End (bool interrupted) override |
| The action to take when the command ends. More...
|
|
bool | IsFinished () override |
| Whether the command has finished. More...
|
|
bool | RunsWhenDisabled () const override |
| Whether the given command should run when the robot is disabled. More...
|
|
Public Member Functions inherited from frc2::CommandHelper< CommandBase, SelectCommand< Key > > |
| CommandHelper ()=default |
|
Public Member Functions inherited from frc2::CommandBase |
void | AddRequirements (std::initializer_list< Subsystem * > requirements) |
| Adds the specified Subsystem requirements to the command. More...
|
|
void | AddRequirements (wpi::span< Subsystem *const > requirements) |
| Adds the specified Subsystem requirements to the command. More...
|
|
void | AddRequirements (wpi::SmallSet< Subsystem *, 4 > requirements) |
| Adds the specified Subsystem requirements to the command. More...
|
|
void | AddRequirements (Subsystem *requirement) |
| Adds the specified Subsystem requirement to the command. More...
|
|
wpi::SmallSet< Subsystem *, 4 > | GetRequirements () const override |
| Gets the Subsystem requirements of the command. More...
|
|
void | SetName (std::string_view name) |
| Sets the name of this Command. More...
|
|
std::string | GetName () const override |
| Gets the name of this Command. More...
|
|
std::string | GetSubsystem () const |
| Gets the subsystem name of this Command. More...
|
|
void | SetSubsystem (std::string_view subsystem) |
| Sets the subsystem name of this Command. More...
|
|
void | InitSendable (wpi::SendableBuilder &builder) override |
| Initializes this Sendable object. More...
|
|
Public Member Functions inherited from frc2::Command |
| Command ()=default |
|
virtual | ~Command () |
|
| Command (const Command &)=default |
|
Command & | operator= (const Command &rhs) |
|
| Command (Command &&)=default |
|
Command & | operator= (Command &&)=default |
|
virtual ParallelRaceGroup | WithTimeout (units::second_t duration) && |
| Decorates this command with a timeout. More...
|
|
virtual ParallelRaceGroup | Until (std::function< bool()> condition) && |
| Decorates this command with an interrupt condition. More...
|
|
virtual ParallelRaceGroup | WithInterrupt (std::function< bool()> condition) && |
| Decorates this command with an interrupt condition. More...
|
|
virtual SequentialCommandGroup | BeforeStarting (std::function< void()> toRun, std::initializer_list< Subsystem * > requirements) && |
| Decorates this command with a runnable to run before this command starts. More...
|
|
virtual SequentialCommandGroup | BeforeStarting (std::function< void()> toRun, wpi::span< Subsystem *const > requirements={}) && |
| Decorates this command with a runnable to run before this command starts. More...
|
|
virtual SequentialCommandGroup | AndThen (std::function< void()> toRun, std::initializer_list< Subsystem * > requirements) && |
| Decorates this command with a runnable to run after the command finishes. More...
|
|
virtual SequentialCommandGroup | AndThen (std::function< void()> toRun, wpi::span< Subsystem *const > requirements={}) && |
| Decorates this command with a runnable to run after the command finishes. More...
|
|
virtual PerpetualCommand | Perpetually () && |
| Decorates this command to run perpetually, ignoring its ordinary end conditions. More...
|
|
virtual ProxyScheduleCommand | AsProxy () |
| Decorates this command to run "by proxy" by wrapping it in a ProxyScheduleCommand. More...
|
|
void | Schedule (bool interruptible) |
| Schedules this command. More...
|
|
void | Schedule () |
| Schedules this command, defaulting to interruptible. More...
|
|
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 | ~Sendable ()=default |
|
| SendableHelper (const SendableHelper &rhs)=default |
|
| SendableHelper (SendableHelper &&rhs) |
|
SendableHelper & | operator= (const SendableHelper &rhs)=default |
|
SendableHelper & | operator= (SendableHelper &&rhs) |
|
std::string | GetName () const |
| Gets the name of this Sendable object. More...
|
|
void | SetName (std::string_view name) |
| Sets the name of this Sendable object. More...
|
|
void | SetName (std::string_view subsystem, std::string_view name) |
| Sets both the subsystem name and device name of this Sendable object. More...
|
|
std::string | GetSubsystem () const |
| Gets the subsystem name of this Sendable object. More...
|
|
void | SetSubsystem (std::string_view subsystem) |
| Sets the subsystem name of this Sendable object. More...
|
|
template<typename Key>
class frc2::SelectCommand< Key >
Runs one of a selection of commands, either using a selector and a key to command mapping, or a supplier that returns the command directly at runtime.
Does not actually schedule the selected command - rather, the command is run through this command; this ensures that the command will behave as expected if used as part of a CommandGroup. Requires the requirements of all included commands, again to ensure proper functioning when used in a CommandGroup. If this is undesired, consider using ScheduleCommand.
As this command contains multiple component commands within it, it is technically a command group; the command instances that are passed to it cannot be added to any other groups, or scheduled individually.
As a rule, CommandGroups require the union of the requirements of their component commands.
This class is provided by the NewCommands VendorDep