Claw now zeros, though slowly. Not sure about high speeds yet and the constants seem wrong.
diff --git a/frc971/control_loops/hall_effect_tracker.h b/frc971/control_loops/hall_effect_tracker.h
index 79d14af..7e6617c 100644
--- a/frc971/control_loops/hall_effect_tracker.h
+++ b/frc971/control_loops/hall_effect_tracker.h
@@ -7,6 +7,7 @@
namespace frc971 {
+// TODO(brians): Have a Reset() for when the cape resets.
class HallEffectTracker {
public:
int32_t get_posedges() const { return posedges_.count(); }
@@ -26,23 +27,38 @@
negedges_.update(position.negedge_count);
}
+ void Reset() {
+ posedges_.Reset();
+ negedges_.Reset();
+ }
+
+ bool ready() { return posedges_.ready() && negedges_.ready(); }
+
private:
class {
public:
void update(int32_t count) {
+ if (first_) {
+ count_ = count;
+ LOG(DEBUG, "First time through the hall effect, resetting\n");
+ }
previous_count_ = count_;
count_ = count;
+ first_ = false;
}
- bool count_changed() const {
- return previous_count_ != count_;
- }
+ void Reset() { first_ = true; }
+
+ bool count_changed() const { return !first_ && previous_count_ != count_; }
int32_t count() const { return count_; }
+ bool ready() { return !first_; }
+
private:
int32_t count_ = 0;
int32_t previous_count_ = 0;
+ bool first_ = true;
} posedges_, negedges_;
bool value_ = false;
};