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 Details

    • 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 Details

    • 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
    • addCommands

      public final void addCommands​(Command... commands)
      Description copied from class: CommandGroupBase
      Adds the given commands to the command group.
      Specified by:
      addCommands in class CommandGroupBase
      Parameters:
      commands - The commands to add.
    • 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