Clean up edge detection logic in ButtonScheduler subclasses (#1340)

This also changes the behavior of whileActive to call start once on the starting edge
instead of every loop iteration.
This commit is contained in:
Tyler Veness
2018-09-26 22:55:34 -07:00
committed by Peter Johnson
parent 6171856020
commit a732854866
8 changed files with 70 additions and 88 deletions

View File

@@ -56,14 +56,13 @@ public abstract class Trigger extends SendableBase {
@Override
public void execute() {
if (grab()) {
if (!m_pressedLast) {
m_pressedLast = true;
command.start();
}
} else {
m_pressedLast = false;
boolean pressed = grab();
if (!m_pressedLast && pressed) {
command.start();
}
m_pressedLast = pressed;
}
}.start();
}
@@ -82,15 +81,15 @@ public abstract class Trigger extends SendableBase {
@Override
public void execute() {
if (grab()) {
m_pressedLast = true;
boolean pressed = grab();
if (!m_pressedLast && pressed) {
command.start();
} else {
if (m_pressedLast) {
m_pressedLast = false;
command.cancel();
}
} else if (m_pressedLast && !pressed) {
command.cancel();
}
m_pressedLast = pressed;
}
}.start();
}
@@ -106,14 +105,13 @@ public abstract class Trigger extends SendableBase {
@Override
public void execute() {
if (grab()) {
m_pressedLast = true;
} else {
if (m_pressedLast) {
m_pressedLast = false;
command.start();
}
boolean pressed = grab();
if (m_pressedLast && !pressed) {
command.start();
}
m_pressedLast = pressed;
}
}.start();
}
@@ -129,18 +127,17 @@ public abstract class Trigger extends SendableBase {
@Override
public void execute() {
if (grab()) {
if (!m_pressedLast) {
m_pressedLast = true;
if (command.isRunning()) {
command.cancel();
} else {
command.start();
}
boolean pressed = grab();
if (!m_pressedLast && pressed) {
if (command.isRunning()) {
command.cancel();
} else {
command.start();
}
} else {
m_pressedLast = false;
}
m_pressedLast = pressed;
}
}.start();
}
@@ -156,14 +153,13 @@ public abstract class Trigger extends SendableBase {
@Override
public void execute() {
if (grab()) {
if (!m_pressedLast) {
m_pressedLast = true;
command.cancel();
}
} else {
m_pressedLast = false;
boolean pressed = grab();
if (!m_pressedLast && pressed) {
command.cancel();
}
m_pressedLast = pressed;
}
}.start();
}