Send ADIS16448 values out as a batch

We switched the newer IMU over to using batches to reduce CPU usage,
time to switch the older IMU over too.

Change-Id: I11ba0d71947f112c4fbcc8b45749cf6fd988d2a4
Signed-off-by: Austin Schuh <austin.linux@gmail.com>
diff --git a/frc971/wpilib/ADIS16448.cc b/frc971/wpilib/ADIS16448.cc
index 2ce45e9..b104840 100644
--- a/frc971/wpilib/ADIS16448.cc
+++ b/frc971/wpilib/ADIS16448.cc
@@ -119,7 +119,7 @@
                      frc::DigitalInput *dio1)
     : event_loop_(event_loop),
       imu_values_sender_(
-          event_loop_->MakeSender<::frc971::IMUValues>("/drivetrain")),
+          event_loop_->MakeSender<::frc971::IMUValuesBatch>("/drivetrain")),
       spi_(new frc::SPI(port)),
       dio1_(dio1) {
   // 1MHz is the maximum supported for burst reads, but we
@@ -276,7 +276,15 @@
         ConvertValue(&to_receive[24], kTemperatureLsbDegree) +
         kTemperatureZero);
 
-    if (!builder.Send(imu_builder.Finish())) {
+    flatbuffers::Offset<IMUValues> imu_offset = imu_builder.Finish();
+
+    flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<IMUValues>>>
+        readings_offset = builder.fbb()->CreateVector(&imu_offset, 1);
+
+    IMUValuesBatch::Builder imu_values_batch_builder =
+        builder.MakeBuilder<IMUValuesBatch>();
+    imu_values_batch_builder.add_readings(readings_offset);
+    if (!builder.Send(imu_values_batch_builder.Finish())) {
       AOS_LOG(WARNING, "sending queue message failed\n");
     }