Moved y2018 Drivetrain Writer.
Just another refactoring step.
Change-Id: I70799c0db8722bbab632580b93aadb6f333417ae
diff --git a/y2018/BUILD b/y2018/BUILD
index 1fc9d1b..18a8ba0 100644
--- a/y2018/BUILD
+++ b/y2018/BUILD
@@ -87,6 +87,7 @@
"//frc971/wpilib:buffered_pcm",
"//frc971/wpilib:dma",
"//frc971/wpilib:dma_edge_counting",
+ "//frc971/wpilib:drivetrain_writer",
"//frc971/wpilib:encoder_and_potentiometer",
"//frc971/wpilib:joystick_sender",
"//frc971/wpilib:logging_queue",
diff --git a/y2018/wpilib_interface.cc b/y2018/wpilib_interface.cc
index 02aeeaa..1825f11 100644
--- a/y2018/wpilib_interface.cc
+++ b/y2018/wpilib_interface.cc
@@ -39,6 +39,7 @@
#include "frc971/wpilib/buffered_solenoid.h"
#include "frc971/wpilib/dma.h"
#include "frc971/wpilib/dma_edge_counting.h"
+#include "frc971/wpilib/drivetrain_writer.h"
#include "frc971/wpilib/encoder_and_potentiometer.h"
#include "frc971/wpilib/joystick_sender.h"
#include "frc971/wpilib/logging.q.h"
@@ -544,40 +545,6 @@
int light_flash_ = 0;
};
-class DrivetrainWriter : public ::frc971::wpilib::LoopOutputHandler {
- public:
- void set_drivetrain_left_victor(::std::unique_ptr<::frc::VictorSP> t) {
- drivetrain_left_victor_ = ::std::move(t);
- }
-
- void set_drivetrain_right_victor(::std::unique_ptr<::frc::VictorSP> t) {
- drivetrain_right_victor_ = ::std::move(t);
- }
-
- private:
- virtual void Read() override {
- ::frc971::control_loops::drivetrain_queue.output.FetchAnother();
- }
-
- virtual void Write() override {
- auto &queue = ::frc971::control_loops::drivetrain_queue.output;
- LOG_STRUCT(DEBUG, "will output", *queue);
- drivetrain_left_victor_->SetSpeed(
- ::aos::Clip(queue->left_voltage, -12.0, 12.0) / 12.0);
- drivetrain_right_victor_->SetSpeed(
- ::aos::Clip(-queue->right_voltage, -12.0, 12.0) / 12.0);
- }
-
- virtual void Stop() override {
- LOG(WARNING, "drivetrain output too old\n");
- drivetrain_left_victor_->SetDisabled();
- drivetrain_right_victor_->SetDisabled();
- }
-
- ::std::unique_ptr<::frc::VictorSP> drivetrain_left_victor_,
- drivetrain_right_victor_;
-};
-
class SuperstructureWriter : public ::frc971::wpilib::LoopOutputHandler {
public:
void set_proximal_victor(::std::unique_ptr<::frc::VictorSP> t) {
@@ -735,11 +702,11 @@
// they are identical, as far as DrivetrainWriter is concerned, to the SP
// variety so all the Victors are written as SPs.
- DrivetrainWriter drivetrain_writer;
- drivetrain_writer.set_drivetrain_left_victor(
- ::std::unique_ptr<::frc::VictorSP>(new ::frc::VictorSP(2)));
- drivetrain_writer.set_drivetrain_right_victor(
- ::std::unique_ptr<::frc::VictorSP>(new ::frc::VictorSP(3)));
+ ::frc971::wpilib::DrivetrainWriter drivetrain_writer;
+ drivetrain_writer.set_left_controller0(
+ ::std::unique_ptr<::frc::VictorSP>(new ::frc::VictorSP(2)), false);
+ drivetrain_writer.set_right_controller0(
+ ::std::unique_ptr<::frc::VictorSP>(new ::frc::VictorSP(3)), true);
::std::thread drivetrain_writer_thread(::std::ref(drivetrain_writer));
SuperstructureWriter superstructure_writer;