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");
}