PassiveSwitchCommand

class PassiveSwitchCommand(value: () -> Any, outcomes: Pair<Any, () -> Command>, default: () -> Command? = null) : Command

This behaves like the command-form of a switch statement. You provide it with a value to reference, and a list of options of outcomes. It is non-blocking, meaning isDone is true immediately, regardless of how long the scheduled command(s) take to run.

Parameters

value

the value to reference

outcomes

all of the options for outcomes

default

the command to schedule if none of the outcomes are fulfilled

Constructors

Link copied to clipboard
constructor(value: () -> Any, vararg outcomes: Pair<Any, () -> Command>, default: () -> Command? = null)

Properties

Link copied to clipboard
open val interruptible: Boolean = true

Whether this command can be stopped due to a conflict of Subsystems.

Link copied to clipboard
open override val isDone: Boolean

Whether this command has completed running. Often implemented using a getter function, although it can be set directly for commands that stop instantly or never stop. Please note that in certain circumstances the command will be stopped before this evaluates to true, most notably during subsystem conflicts or when the OpMode has been stopped.

Link copied to clipboard

A set of all Subsystems this command implements.

Functions

Link copied to clipboard

Returns a SequentialGroup with a Delay and then this command

Link copied to clipboard
fun and(vararg commands: Command): ParallelGroup

Returns a ParallelGroup with this command and an arbitrary number of other commands

Link copied to clipboard

Returns a ParallelDeadlineGroup with this command as the deadline

Link copied to clipboard

Returns a ParallelRaceGroup with this command and a Delay of time

Link copied to clipboard
operator fun invoke()

Allows you to directly "call" a command

Link copied to clipboard

Returns a PerpetualCommand that wraps this command

Link copied to clipboard
fun raceWith(vararg commands: Command): ParallelRaceGroup

Returns a ParallelRaceGroup with this command and an arbitrary number of other commands

Link copied to clipboard
open override fun start()

Called once when the command is first started

Link copied to clipboard
open fun stop(interrupted: Boolean)

Called once when the command is stopped.

Link copied to clipboard
fun then(vararg commands: Command): SequentialGroup

Returns a SequentialGroup with this command and an arbitrary number of other commands

Link copied to clipboard

Returns a SequentialGroup with this command and then a Delay

Link copied to clipboard
open fun update()

Called repeatedly while the command is running.

Link copied to clipboard

Returns a ParallelDeadlineGroup with this command and the passed command as the deadline