Change CopyPosition to use static flatbuffers
This also changes previous years code to use static flatbuffers when
sending position while using CopyPosition.
Signed-off-by: Maxwell Henderson <mxwhenderson@gmail.com>
Change-Id: I07c523a882dfd6fa7f6fb0cbc6eb807f3f04fa88
diff --git a/y2017/wpilib_interface.cc b/y2017/wpilib_interface.cc
index d299c1d..822c3f4 100644
--- a/y2017/wpilib_interface.cc
+++ b/y2017/wpilib_interface.cc
@@ -54,7 +54,7 @@
#include "frc971/wpilib/wpilib_robot_base.h"
#include "y2017/constants.h"
#include "y2017/control_loops/superstructure/superstructure_output_generated.h"
-#include "y2017/control_loops/superstructure/superstructure_position_generated.h"
+#include "y2017/control_loops/superstructure/superstructure_position_static.h"
#ifndef M_PI
#define M_PI 3.14159265358979323846
@@ -132,7 +132,7 @@
event_loop->MakeSender<::frc971::autonomous::AutonomousMode>(
"/aos")),
superstructure_position_sender_(
- event_loop->MakeSender<superstructure::Position>(
+ event_loop->MakeSender<superstructure::PositionStatic>(
"/superstructure")),
drivetrain_position_sender_(
event_loop
@@ -230,55 +230,31 @@
const auto values = constants::GetValues();
{
- auto builder = superstructure_position_sender_.MakeBuilder();
- frc971::PotAndAbsolutePositionT intake;
- CopyPosition(intake_encoder_, &intake,
+ aos::Sender<superstructure::PositionStatic>::StaticBuilder builder =
+ superstructure_position_sender_.MakeStaticBuilder();
+
+ CopyPosition(intake_encoder_, builder->add_intake(),
Values::kIntakeEncoderCountsPerRevolution,
Values::kIntakeEncoderRatio, intake_pot_translate, true,
values.intake.pot_offset);
- flatbuffers::Offset<frc971::PotAndAbsolutePosition> intake_offset =
- frc971::PotAndAbsolutePosition::Pack(*builder.fbb(), &intake);
-
- frc971::HallEffectAndPositionT indexer;
- CopyPosition(indexer_counter_, &indexer,
- Values::kIndexerEncoderCountsPerRevolution,
- Values::kIndexerEncoderRatio, true);
- flatbuffers::Offset<frc971::HallEffectAndPosition> indexer_offset =
- frc971::HallEffectAndPosition::Pack(*builder.fbb(), &indexer);
-
- frc971::IndexPositionT hood;
- CopyPosition(hood_encoder_, &hood,
+ CopyPosition(hood_encoder_, builder->add_hood(),
Values::kHoodEncoderCountsPerRevolution,
Values::kHoodEncoderRatio, true);
- flatbuffers::Offset<frc971::IndexPosition> hood_offset =
- frc971::IndexPosition::Pack(*builder.fbb(), &hood);
- frc971::HallEffectAndPositionT turret;
- CopyPosition(turret_counter_, &turret,
+ superstructure::ColumnPositionStatic *column = builder->add_column();
+ CopyPosition(turret_counter_, column->add_turret(),
Values::kTurretEncoderCountsPerRevolution,
Values::kTurretEncoderRatio, false);
- flatbuffers::Offset<frc971::HallEffectAndPosition> turret_offset =
- frc971::HallEffectAndPosition::Pack(*builder.fbb(), &turret);
+ CopyPosition(indexer_counter_, column->add_indexer(),
+ Values::kIndexerEncoderCountsPerRevolution,
+ Values::kIndexerEncoderRatio, true);
- superstructure::ColumnPosition::Builder column_builder =
- builder.MakeBuilder<superstructure::ColumnPosition>();
- column_builder.add_indexer(indexer_offset);
- column_builder.add_turret(turret_offset);
- flatbuffers::Offset<superstructure::ColumnPosition> column_offset =
- column_builder.Finish();
-
- superstructure::Position::Builder position_builder =
- builder.MakeBuilder<superstructure::Position>();
-
- position_builder.add_column(column_offset);
- position_builder.add_hood(hood_offset);
- position_builder.add_intake(intake_offset);
- position_builder.add_theta_shooter(
+ builder->set_theta_shooter(
encoder_translate(shooter_encoder_->GetRaw(),
Values::kShooterEncoderCountsPerRevolution,
Values::kShooterEncoderRatio));
- builder.CheckOk(builder.Send(position_builder.Finish()));
+ builder.CheckOk(builder.Send());
}
{
@@ -299,7 +275,7 @@
private:
::aos::Sender<::frc971::autonomous::AutonomousMode> auto_mode_sender_;
- ::aos::Sender<superstructure::Position> superstructure_position_sender_;
+ ::aos::Sender<superstructure::PositionStatic> superstructure_position_sender_;
::aos::Sender<::frc971::control_loops::drivetrain::Position>
drivetrain_position_sender_;