Added DMA and DMA synchronizer.
Pulled the dma setters out of year specific.
Change-Id: I4e797df52aa07edb5515f941113e7b43747622c9
diff --git a/frc971/wpilib/BUILD b/frc971/wpilib/BUILD
index 910de08..00cd77d 100644
--- a/frc971/wpilib/BUILD
+++ b/frc971/wpilib/BUILD
@@ -287,9 +287,11 @@
],
restricted_to = ["//tools:roborio"],
deps = [
- "//aos:init",
- "//aos/time:time",
"//aos/stl_mutex",
+ "//aos/time:time",
+ "//aos:init",
"//third_party:wpilib",
+ ":dma",
+ ":dma_edge_counting",
],
)
diff --git a/frc971/wpilib/sensor_reader.cc b/frc971/wpilib/sensor_reader.cc
index f2123a1..38989a4 100644
--- a/frc971/wpilib/sensor_reader.cc
+++ b/frc971/wpilib/sensor_reader.cc
@@ -10,6 +10,11 @@
SensorReader::SensorReader() {}
+void SensorReader::set_dma(::std::unique_ptr<DMA> dma) {
+ dma_synchronizer_.reset(
+ new ::frc971::wpilib::DMASynchronizer(::std::move(dma)));
+}
+
void SensorReader::set_pwm_trigger(
::std::unique_ptr<frc::DigitalInput> pwm_trigger) {
medium_encoder_filter_.Add(pwm_trigger.get());
diff --git a/frc971/wpilib/sensor_reader.h b/frc971/wpilib/sensor_reader.h
index 23646f1..a5c90ac 100644
--- a/frc971/wpilib/sensor_reader.h
+++ b/frc971/wpilib/sensor_reader.h
@@ -8,6 +8,8 @@
#include "aos/time/time.h"
#include "frc971/wpilib/ahal/DigitalGlitchFilter.h"
#include "frc971/wpilib/ahal/DigitalInput.h"
+#include "frc971/wpilib/dma.h"
+#include "frc971/wpilib/dma_edge_counting.h"
using ::aos::monotonic_clock;
namespace chrono = ::std::chrono;
@@ -19,6 +21,10 @@
public:
SensorReader();
+ // All of the DMA-related set_* calls must be made before this, and it
+ // doesn't hurt to do all of them.
+ void set_dma(::std::unique_ptr<DMA> dma);
+
void set_pwm_trigger(::std::unique_ptr<frc::DigitalInput> pwm_trigger);
protected:
@@ -35,6 +41,8 @@
monotonic_clock::min_time;
chrono::nanoseconds last_period_ = chrono::microseconds(5050);
+ ::std::unique_ptr<::frc971::wpilib::DMASynchronizer> dma_synchronizer_;
+
::std::atomic<bool> run_{true};
};
diff --git a/y2019/wpilib_interface.cc b/y2019/wpilib_interface.cc
index 2483f40..b362487 100644
--- a/y2019/wpilib_interface.cc
+++ b/y2019/wpilib_interface.cc
@@ -32,7 +32,6 @@
#include "frc971/control_loops/drivetrain/drivetrain.q.h"
#include "frc971/wpilib/ADIS16448.h"
#include "frc971/wpilib/dma.h"
-#include "frc971/wpilib/dma_edge_counting.h"
#include "frc971/wpilib/encoder_and_potentiometer.h"
#include "frc971/wpilib/joystick_sender.h"
#include "frc971/wpilib/logging.q.h"
@@ -129,13 +128,6 @@
drivetrain_right_encoder_ = ::std::move(encoder);
}
- // All of the DMA-related set_* calls must be made before this, and it
- // doesn't hurt to do all of them.
- void set_dma(::std::unique_ptr<DMA> dma) {
- dma_synchronizer_.reset(
- new ::frc971::wpilib::DMASynchronizer(::std::move(dma)));
- }
-
void operator()() {
::aos::SetCurrentThreadName("SensorReader");
@@ -214,8 +206,6 @@
int32_t my_pid_;
- ::std::unique_ptr<::frc971::wpilib::DMASynchronizer> dma_synchronizer_;
-
::std::unique_ptr<frc::Encoder> drivetrain_left_encoder_,
drivetrain_right_encoder_;
};