/*----------------------------------------------------------------------------*/ /* Copyright (c) 2019 FIRST. All Rights Reserved. */ /* Open Source Software - may be modified and shared by FRC teams. The code */ /* must be accompanied by the FIRST BSD license file in the root directory of */ /* the project. */ /*----------------------------------------------------------------------------*/ #pragma once #include "CommandBase.h" #include "CommandHelper.h" namespace frc2 { /** * A command that runs a Runnable continuously. Has no end condition as-is; * either subclass it or use Command.WithTimeout() or * Command.WithInterrupt() to give it one. If you only wish * to execute a Runnable once, use InstantCommand. */ class RunCommand : public CommandHelper { public: /** * Creates a new RunCommand. The Runnable will be run continuously until the * command ends. Does not run when disabled. * * @param toRun the Runnable to run * @param requirements the subsystems to require */ RunCommand(std::function toRun, std::initializer_list requirements); RunCommand(RunCommand&& other) = default; RunCommand(const RunCommand& other) = default; void Execute(); protected: std::function m_toRun; }; } // namespace frc2