Convert y2014 AutoMode queue to an EventLoop
Change-Id: Ic9d6e80da8c955eb8c61e6b2b2fba220da1b62ec
diff --git a/y2014/wpilib_interface.cc b/y2014/wpilib_interface.cc
index 3bc5e39..c9d15dd 100644
--- a/y2014/wpilib_interface.cc
+++ b/y2014/wpilib_interface.cc
@@ -119,7 +119,9 @@
class SensorReader : public ::frc971::wpilib::SensorReader {
public:
SensorReader(::aos::EventLoop *event_loop)
- : ::frc971::wpilib::SensorReader(event_loop) {
+ : ::frc971::wpilib::SensorReader(event_loop),
+ auto_mode_sender_(event_loop->MakeSender<::y2014::sensors::AutoMode>(
+ ".y2014.sensors.auto_mode")) {
// Set it to filter out anything shorter than 1/4 of the minimum pulse width
// we should ever see.
UpdateMediumEncoderFilterHz(kMaximumEncoderPulsesPerSecond);
@@ -265,9 +267,11 @@
drivetrain_message.Send();
}
- ::y2014::sensors::auto_mode.MakeWithBuilder()
- .voltage(auto_selector_analog_->GetVoltage())
- .Send();
+ {
+ auto auto_mode_message = auto_mode_sender_.MakeMessage();
+ auto_mode_message->voltage = auto_selector_analog_->GetVoltage();
+ auto_mode_message.Send();
+ }
}
void RunDmaIteration() {
@@ -390,6 +394,8 @@
shooter_translate(counter->last_negative_encoder_value());
}
+ ::aos::Sender<::y2014::sensors::AutoMode> auto_mode_sender_;
+
::std::unique_ptr<AnalogInput> auto_selector_analog_;
::std::unique_ptr<AnalogInput> low_left_drive_hall_;