Only construct fbb once in superstructure
Array backed builder doesn't support being made multiple times. Only do
it once.
Change-Id: Ie215e343953c89fe09e70bfbb5e17510cead228e
Signed-off-by: Austin Schuh <austin.linux@gmail.com>
diff --git a/y2022/control_loops/superstructure/superstructure.cc b/y2022/control_loops/superstructure/superstructure.cc
index 15201f7..1a40e92 100644
--- a/y2022/control_loops/superstructure/superstructure.cc
+++ b/y2022/control_loops/superstructure/superstructure.cc
@@ -48,9 +48,9 @@
OutputT output_struct;
aos::FlatbufferFixedAllocatorArray<
- frc971::control_loops::StaticZeroingSingleDOFProfiledSubsystemGoal, 64>
+ frc971::control_loops::StaticZeroingSingleDOFProfiledSubsystemGoal, 512>
turret_loading_goal_buffer;
- aos::FlatbufferFixedAllocatorArray<CatapultGoal, 64> catapult_goal_buffer;
+ aos::FlatbufferFixedAllocatorArray<CatapultGoal, 512> catapult_goal_buffer;
const aos::monotonic_clock::time_point timestamp =
event_loop()->context().monotonic_event_time;
@@ -96,16 +96,17 @@
const double distance_to_goal = aimer_.DistanceToGoal();
if (unsafe_goal->auto_aim() && values_->shot_interpolation_table.GetInRange(
distance_to_goal, &shot_params)) {
+ flatbuffers::FlatBufferBuilder *catapult_goal_fbb =
+ catapult_goal_buffer.fbb();
std::optional<flatbuffers::Offset<
frc971::control_loops::StaticZeroingSingleDOFProfiledSubsystemGoal>>
return_position_offset;
if (unsafe_goal != nullptr && unsafe_goal->has_catapult() &&
unsafe_goal->catapult()->has_return_position()) {
- return_position_offset = {
- aos::CopyFlatBuffer(unsafe_goal->catapult()->return_position(),
- catapult_goal_buffer.fbb())};
+ return_position_offset = {aos::CopyFlatBuffer(
+ unsafe_goal->catapult()->return_position(), catapult_goal_fbb)};
}
- CatapultGoal::Builder builder(*catapult_goal_buffer.fbb());
+ CatapultGoal::Builder builder(*catapult_goal_fbb);
builder.add_shot_position(shot_params.shot_angle);
builder.add_shot_velocity(shot_params.shot_velocity);
if (return_position_offset.has_value()) {