Make SendDrivetrainPosition use the static fbs api
With the previous implementation the function couldn't take in a sender,
this also gets us one step closer to using static flatbuffers in more
places.
Signed-off-by: Maxwell Henderson <mxwhenderson@gmail.com>
Change-Id: I17a48ea3f048323d1292a42a557428314f212248
diff --git a/frc971/wpilib/sensor_reader.cc b/frc971/wpilib/sensor_reader.cc
index 70d5c35..1486042 100644
--- a/frc971/wpilib/sensor_reader.cc
+++ b/frc971/wpilib/sensor_reader.cc
@@ -85,29 +85,26 @@
}
void SensorReader::SendDrivetrainPosition(
- aos::Sender<control_loops::drivetrain::Position> drivetrain_position_sender,
+ aos::Sender<control_loops::drivetrain::PositionStatic>::StaticBuilder
+ builder,
std::function<double(double input)> velocity_translate,
std::function<double(double input)> encoder_to_meters, bool left_inverted,
bool right_inverted) {
- auto builder = drivetrain_position_sender.MakeBuilder();
- frc971::control_loops::drivetrain::Position::Builder drivetrain_builder =
- builder.MakeBuilder<frc971::control_loops::drivetrain::Position>();
-
- drivetrain_builder.add_left_encoder(
+ builder->set_left_encoder(
(left_inverted ? -1.0 : 1.0) *
encoder_to_meters(drivetrain_left_encoder_->GetRaw()));
- drivetrain_builder.add_left_speed(
+ builder->set_left_speed(
(left_inverted ? -1.0 : 1.0) *
velocity_translate(drivetrain_left_encoder_->GetPeriod()));
- drivetrain_builder.add_right_encoder(
+ builder->set_right_encoder(
(right_inverted ? -1.0 : 1.0) *
encoder_to_meters(drivetrain_right_encoder_->GetRaw()));
- drivetrain_builder.add_right_speed(
+ builder->set_right_speed(
(right_inverted ? -1.0 : 1.0) *
velocity_translate(drivetrain_right_encoder_->GetPeriod()));
- builder.CheckOk(builder.Send(drivetrain_builder.Finish()));
+ builder.CheckOk(builder.Send());
}
void SensorReader::DoStart() {
diff --git a/frc971/wpilib/sensor_reader.h b/frc971/wpilib/sensor_reader.h
index 72a557e..963cd6e 100644
--- a/frc971/wpilib/sensor_reader.h
+++ b/frc971/wpilib/sensor_reader.h
@@ -9,7 +9,7 @@
#include "aos/stl_mutex/stl_mutex.h"
#include "aos/time/time.h"
#include "frc971/control_loops/control_loops_generated.h"
-#include "frc971/control_loops/drivetrain/drivetrain_position_generated.h"
+#include "frc971/control_loops/drivetrain/drivetrain_position_static.h"
#include "frc971/input/robot_state_generated.h"
#include "frc971/wpilib/ahal/DigitalGlitchFilter.h"
#include "frc971/wpilib/ahal/DigitalInput.h"
@@ -217,8 +217,8 @@
}
void SendDrivetrainPosition(
- aos::Sender<control_loops::drivetrain::Position>
- drivetrain_position_sender,
+ aos::Sender<control_loops::drivetrain::PositionStatic>::StaticBuilder
+ builder,
std::function<double(double input)> velocity_translate,
std::function<double(double input)> encoder_to_meters, bool left_inverted,
bool right_inverted);