[commands] C++: Add CommandPtr overload for SetDefaultCommand (#4488)

This commit is contained in:
Starlight220
2022-10-21 16:35:58 +03:00
committed by GitHub
parent 0ca274866b
commit 9c7e66a27d
4 changed files with 46 additions and 0 deletions

View File

@@ -191,6 +191,19 @@ class CommandScheduler final : public nt::NTSendable,
std::forward<T>(defaultCommand)));
}
/**
* Sets the default command for a subsystem. Registers that subsystem if it
* is not already registered. Default commands will run whenever there is no
* other command currently scheduled that requires the subsystem. Default
* commands should be written to never end (i.e. their IsFinished() method
* should return false), as they would simply be re-scheduled if they do.
* Default commands must also require their subsystem.
*
* @param subsystem the subsystem whose default command will be set
* @param defaultCommand the default command to associate with the subsystem
*/
void SetDefaultCommand(Subsystem* subsystem, CommandPtr&& defaultCommand);
/**
* Gets the default command associated with this subsystem. Null if this
* subsystem has no default command associated with it.

View File

@@ -11,6 +11,7 @@
namespace frc2 {
class Command;
class CommandPtr;
/**
* A robot subsystem. Subsystems are the basic unit of robot organization in
* the Command-based framework; they encapsulate low-level hardware objects
@@ -71,6 +72,17 @@ class Subsystem {
this, std::forward<T>(defaultCommand));
}
/**
* Sets the default Command of the subsystem. The default command will be
* automatically scheduled when no other commands are scheduled that require
* the subsystem. Default commands should generally not end on their own, i.e.
* their IsFinished() method should always return false. Will automatically
* register this subsystem with the CommandScheduler.
*
* @param defaultCommand the default command to associate with this subsystem
*/
void SetDefaultCommand(CommandPtr&& defaultCommand);
/**
* Gets the default command for this subsystem. Returns null if no default
* command is currently associated with the subsystem.