Skip to content

Command Groups

Command groups are an essential part of NextFTC. They allow you to group multiple commands together into more complex commands. NextFTC has four types of command groups.

SequentialGroup

A SequentialGroup takes an arbitrary number of commands and runs them, one after another, until the last one is done.

kotlin
SequentialGroup(
    command1,
    command2,
    // vararg Command
)

A SequentialGroup can also be created with the .then helper function:

kotlin
command1.then(
    command2,
    // vararg Command
)

ParallelGroup

A ParallelGroup takes an arbitrary number of commands and runs them all at the same time, until they have all finished.

kotlin
ParallelGroup(
    command1,
    command2,
    // vararg Command
)

A ParallelGroup can also be created with the .and helper function:

kotlin
command1.and(
    command2,
    // vararg Command
)

ParallelRaceGroup

A ParallelRaceGroup is very similar to a ParallelGroup in that they both run an arbitrary number of commands in parallel. However unlike a ParallelGroup, a ParallelRaceGroup only requires one of its children to finish before it finishes.

kotlin
ParallelRaceGroup(
    command1,
    command2,
    // vararg Command
)

A ParallelRaceGroup can also be created with the .raceWith helper function:

kotlin
command1.raceWith(
    command2,
    // vararg Command
)

ParallelDeadlineGroup

A ParallelDeadlineGroup is very similar to a ParallelGroup and a ParallelRaceGroup. However unlike a ParallelRaceGroup, it has a special command (the deadline) and it finishes whenever the deadline finishes, no matter the status of the other commands.

kotlin
ParallelDeadlineGroup(
    deadlineCommand,
    command2,
    // vararg Command
)

A ParallelDeadlineGroup can also be created with the .asDeadline helper function, where the function it is called on is the deadline:

kotlin
deadlineCommand.asDeadline(
    command2,
    // vararg Command
)

Additionally, it can be created with the .withDeadline helper method, which takes a parameter as a deadline.

kotlin
command2.withDeadline(deadlineCommand)

NOTE

See the command groups reference for more information.