Add ability to end startCompetition() main loop (#2032)

This is useful for both cleanly exiting from simulation and for unit testing
at a framework level.

This change required removing move constructor/assignment from IterativeRobot.
This commit is contained in:
Peter Johnson
2019-11-05 21:33:09 -08:00
committed by GitHub
parent f5b4be16db
commit 7508aada93
14 changed files with 185 additions and 35 deletions

View File

@@ -33,6 +33,8 @@ public class Robot extends RobotBase {
public void test() {
}
private volatile boolean m_exit;
@SuppressWarnings("PMD.CyclomaticComplexity")
@Override
public void startCompetition() {
@@ -41,7 +43,7 @@ public class Robot extends RobotBase {
// Tell the DS that the robot is ready to be enabled
HAL.observeUserProgramStarting();
while (!Thread.currentThread().isInterrupted()) {
while (!Thread.currentThread().isInterrupted() && !m_exit) {
if (isDisabled()) {
m_ds.InDisabled(true);
disabled();
@@ -77,4 +79,9 @@ public class Robot extends RobotBase {
}
}
}
@Override
public void endCompetition() {
m_exit = true;
}
}