RobotCore 1.0
WPILib port to raspberry Pi
Loading...
Searching...
No Matches
CoroutineState.java
1// Copyright (c) FIRST and other WPILib contributors.
2// Open Source Software; you can modify and/or share it under the terms of
3// the WPILib BSD license file in the root directory of this project.
4
5package org.wpilib.command3;
6
7import java.util.function.BooleanSupplier;
8import org.wpilib.system.RobotController;
9
16sealed interface CoroutineState {
22
28
37
46 static ParkedUntil parkedUntil(long targetTimestampNanos) {
47 return new ParkedUntil(targetTimestampNanos);
48 }
49
57 static ParkedOnCondition parkedUntil(BooleanSupplier condition) {
58 return new ParkedOnCondition(condition);
59 }
60
68 static ParkedWhile parkedWhile(BooleanSupplier condition) {
69 return new ParkedWhile(condition);
70 }
71
83 return new ForkFailed(failure);
84 }
85
91 boolean shouldMount();
92
94 record Live() implements CoroutineState {
95 @Override
96 public boolean shouldMount() {
97 return true;
98 }
99
100 @Override
101 public String toString() {
102 return "LIVE";
103 }
104 }
105
109 record Frozen() implements CoroutineState {
110 @Override
111 public boolean shouldMount() {
112 return false;
113 }
114
115 @Override
116 public String toString() {
117 return "FROZEN";
118 }
119 }
120
127 record ParkedUntil(long targetTimestampNanos) implements CoroutineState {
128 boolean elapsed() {
129 return RobotController.getTime() >= targetTimestampNanos;
130 }
131
132 @Override
133 public boolean shouldMount() {
134 return elapsed();
135 }
136
137 @Override
138 public String toString() {
139 return "ParkedUntil[" + targetTimestampNanos + "ns]";
140 }
141 }
142
149 record ParkedOnCondition(BooleanSupplier condition) implements CoroutineState {
150 public boolean conditionMet() {
151 return condition.getAsBoolean();
152 }
153
154 @Override
155 public boolean shouldMount() {
156 return conditionMet();
157 }
158
159 @Override
160 public String toString() {
161 return "ParkedOnCondition[dynamic]";
162 }
163 }
164
171 record ParkedWhile(BooleanSupplier condition) implements CoroutineState {
172 public boolean conditionMet() {
173 return !condition.getAsBoolean();
174 }
175
176 @Override
177 public boolean shouldMount() {
178 return conditionMet();
179 }
180
181 @Override
182 public String toString() {
183 return "ParkedWhile[dynamic]";
184 }
185 }
186
190 record Canceled() implements CoroutineState {
191 @Override
192 public boolean shouldMount() {
193 return false;
194 }
195
196 @Override
197 public String toString() {
198 return "CANCELED";
199 }
200 }
201
207 record ForkFailed(Coroutine.ForkResult failure) implements CoroutineState {
208 @Override
209 public boolean shouldMount() {
210 return false;
211 }
212
213 @Override
214 public String toString() {
215 return "FORK_FAILED[" + failure + "]";
216 }
217 }
218}
record Live() implements CoroutineState
record ParkedUntil(long targetTimestampNanos) implements CoroutineState
static ForkFailed forkFailed(Coroutine.ForkResult failure)
static ParkedOnCondition parkedUntil(BooleanSupplier condition)
record ParkedOnCondition(BooleanSupplier condition) implements CoroutineState
static ParkedWhile parkedWhile(BooleanSupplier condition)
record ParkedWhile(BooleanSupplier condition) implements CoroutineState
record Canceled() implements CoroutineState
record Frozen() implements CoroutineState
record ForkFailed(Coroutine.ForkResult failure) implements CoroutineState
static ParkedUntil parkedUntil(long targetTimestampNanos)