Pre-serialize balls while intaking

Change-Id: I90d1b515748bad727d8e8b2d659b8e59ca545e80
Signed-off-by: Ravago Jones <ravagojones@gmail.com>
diff --git a/y2020/wpilib_interface.cc b/y2020/wpilib_interface.cc
index fb46d71..4a7343f 100644
--- a/y2020/wpilib_interface.cc
+++ b/y2020/wpilib_interface.cc
@@ -211,6 +211,10 @@
     ball_beambreak_reader_.set_input_two(ball_beambreak_inputs_[1].get());
   }
 
+  void set_ball_intake_beambreak(::std::unique_ptr<frc::DigitalInput> sensor) {
+    ball_intake_beambreak_ = ::std::move(sensor);
+  }
+
   void Start() override {
     if (FLAGS_shooter_tuning) {
       AddToDMA(&ball_beambreak_reader_);
@@ -294,6 +298,8 @@
       position_builder.add_intake_joint(intake_joint_offset);
       position_builder.add_turret(turret_offset);
       position_builder.add_shooter(shooter_offset);
+      position_builder.add_intake_beambreak_triggered(
+          !ball_intake_beambreak_->Get());
 
       builder.Send(position_builder.Finish());
     }
@@ -354,6 +360,8 @@
 
   frc971::wpilib::ADIS16470 *imu_ = nullptr;
 
+  std::unique_ptr<frc::DigitalInput> ball_intake_beambreak_;
+
   // Used to interface with the two beam break sensors that the ball for tuning
   // shooter parameters has to pass through.
   // We will time how long it takes to pass between the two sensors to get its
@@ -582,6 +590,8 @@
     sensor_reader.set_left_accelerator_encoder(make_encoder(4));
     sensor_reader.set_right_accelerator_encoder(make_encoder(3));
 
+    sensor_reader.set_ball_intake_beambreak(make_unique<frc::DigitalInput>(4));
+
     if (FLAGS_shooter_tuning) {
       sensor_reader.set_ball_beambreak_inputs(
           make_unique<frc::DigitalInput>(6), make_unique<frc::DigitalInput>(7));