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.