Fixed the reset for min max edge value. Not compiled as the build is broken.
diff --git a/aos/common/control_loop/ControlLoop-tmpl.h b/aos/common/control_loop/ControlLoop-tmpl.h
index 032d5fc..22712f0 100644
--- a/aos/common/control_loop/ControlLoop-tmpl.h
+++ b/aos/common/control_loop/ControlLoop-tmpl.h
@@ -72,7 +72,7 @@
if (control_loop_->position.FetchLatest()) {
position = control_loop_->position.get();
} else {
- if (control_loop_->position.get()) {
+ if (control_loop_->position.get() && !reset_) {
int msec_age = control_loop_->position.Age().ToMSec();
if (!control_loop_->position.IsNewerThanMS(kPositionTimeoutMs)) {
LOG_INTERVAL(very_stale_position_);
@@ -126,7 +126,7 @@
output.Send();
} else {
// The outputs are disabled, so pass NULL in for the output.
- RunIteration(goal, position, NULL, status.get());
+ RunIteration(goal, position, nullptr, status.get());
ZeroOutputs();
}
diff --git a/aos/common/control_loop/ControlLoop.h b/aos/common/control_loop/ControlLoop.h
index 9dde589..f1109e6 100644
--- a/aos/common/control_loop/ControlLoop.h
+++ b/aos/common/control_loop/ControlLoop.h
@@ -84,7 +84,9 @@
void ZeroOutputs();
// Returns true if the device reading the sensors reset and potentially lost
- // track of encoder counts. Calling this read method clears the flag.
+ // track of encoder counts. Calling this read method clears the flag. After
+ // a reset, RunIteration will not be called until there is a valid position
+ // message.
bool reset() {
bool ans = reset_;
reset_ = false;