Picked up the first DMA edge
Change-Id: I155cfd88a42f3ee456042df67511a09fea2c5917
diff --git a/frc971/wpilib/dma_edge_counting.cc b/frc971/wpilib/dma_edge_counting.cc
index 7f87956..afb880f 100644
--- a/frc971/wpilib/dma_edge_counting.cc
+++ b/frc971/wpilib/dma_edge_counting.cc
@@ -11,7 +11,7 @@
void DMAEdgeCounter::UpdateFromSample(const DMASample &sample) {
const bool previous_value =
- have_prev_sample_ ? ExtractValue(prev_sample_) : polled_value_;
+ have_prev_sample_ ? ExtractValue(prev_sample_) : previous_polled_value_;
have_prev_sample_ = true;
prev_sample_ = sample;
diff --git a/frc971/wpilib/dma_edge_counting.h b/frc971/wpilib/dma_edge_counting.h
index d49b05d..64722ca 100644
--- a/frc971/wpilib/dma_edge_counting.h
+++ b/frc971/wpilib/dma_edge_counting.h
@@ -63,10 +63,12 @@
private:
void UpdateFromSample(const DMASample &sample) override;
void UpdatePolledValue() override {
+ previous_polled_value_ = polled_value_;
polled_value_ = input_->Get();
polled_encoder_ = encoder_->GetRaw();
}
void PollFromSample(const DMASample &sample) override {
+ previous_polled_value_ = polled_value_;
polled_value_ = ExtractValue(sample);
polled_encoder_ = sample.GetRaw(encoder_);
}
@@ -97,6 +99,7 @@
int neg_last_encoder_ = 0;
bool polled_value_ = false;
+ bool previous_polled_value_ = false;
int polled_encoder_ = 0;
DISALLOW_COPY_AND_ASSIGN(DMAEdgeCounter);