Class ParallelDeadlineGroup

  • All Implemented Interfaces:
    Sendable, Command

    public class ParallelDeadlineGroup
    extends CommandGroupBase
    A CommandGroup that runs a set of commands in parallel, ending only when a specific command (the "deadline") ends, interrupting all other commands that are still running at that point.

    As a rule, CommandGroups require the union of the requirements of their component commands.

    • Constructor Detail

      • ParallelDeadlineGroup

        public ParallelDeadlineGroup​(Command deadline,
                                     Command... commands)
        Creates a new ParallelDeadlineGroup. The given commands (including the deadline) will be executed simultaneously. The CommandGroup will finish when the deadline finishes, interrupting all other still-running commands. If the CommandGroup is interrupted, only the commands still running will be interrupted.
        Parameters:
        deadline - the command that determines when the group ends
        commands - the commands to be executed
    • Method Detail

      • setDeadline

        public void setDeadline​(Command deadline)
        Sets the deadline to the given command. The deadline is added to the group if it is not already contained.
        Parameters:
        deadline - the command that determines when the group ends
      • initialize

        public void initialize()
        Description copied from interface: Command
        The initial subroutine of a command. Called once when the command is initially scheduled.
      • execute

        public void execute()
        Description copied from interface: Command
        The main body of a command. Called repeatedly while the command is scheduled.
      • end

        public void end​(boolean interrupted)
        Description copied from interface: Command
        The action to take when the command ends. Called when either the command finishes normally, or when it interrupted/canceled.

        Do not schedule commands here that share requirements with this command. Use Command.andThen(Command...) instead.

        Parameters:
        interrupted - whether the command was interrupted/canceled
      • isFinished

        public boolean isFinished()
        Description copied from interface: Command
        Whether the command has finished. Once a command finishes, the scheduler will call its end() method and un-schedule it.
        Returns:
        whether the command has finished.
      • runsWhenDisabled

        public boolean runsWhenDisabled()
        Description copied from interface: Command
        Whether the given command should run when the robot is disabled. Override to return true if the command should run when disabled.
        Returns:
        whether the command should run when the robot is disabled
      • deadlineWith

        public ParallelDeadlineGroup deadlineWith​(Command... parallel)
        Description copied from interface: Command
        Decorates this command with a set of commands to run parallel to it, ending when the calling command ends and interrupting all the others. Often more convenient/less-verbose than constructing a new ParallelDeadlineGroup explicitly.

        Note: This decorator works by composing this command within a CommandGroup. The command cannot be used independently after being decorated, or be re-decorated with a different decorator, unless it is manually cleared from the list of grouped commands with CommandGroupBase.clearGroupedCommand(Command). The decorated command can, however, be further decorated without issue.

        Parameters:
        parallel - the commands to run in parallel
        Returns:
        the decorated command