blob: 43d49a71bb7b799a10c48dac710f483664a4911b [file] [log] [blame]
milind-u086d7262022-01-19 20:44:18 -08001#include "y2022/actors/auto_splines.h"
2
3#include "frc971/control_loops/control_loops_generated.h"
4
5namespace y2022 {
6namespace actors {
7
8void MaybeFlipSpline(
9 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder,
10 flatbuffers::Offset<flatbuffers::Vector<float>> spline_y_offset,
11 bool is_left) {
12 flatbuffers::Vector<float> *spline_y =
13 GetMutableTemporaryPointer(*builder->fbb(), spline_y_offset);
14
15 if (!is_left) {
16 for (size_t i = 0; i < spline_y->size(); i++) {
17 spline_y->Mutate(i, -spline_y->Get(i));
18 }
19 }
20}
21
Ravago Jones81e50632022-03-11 16:23:51 -080022flatbuffers::Offset<frc971::MultiSpline> FixSpline(
23 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
24 *builder,
25 flatbuffers::Offset<frc971::MultiSpline> spline_offset,
26 aos::Alliance alliance) {
27 frc971::MultiSpline *spline =
28 GetMutableTemporaryPointer(*builder->fbb(), spline_offset);
29 flatbuffers::Vector<float> *spline_x = spline->mutable_spline_x();
30 flatbuffers::Vector<float> *spline_y = spline->mutable_spline_y();
milind-u086d7262022-01-19 20:44:18 -080031
Ravago Jones81e50632022-03-11 16:23:51 -080032 if (alliance == aos::Alliance::kBlue) {
33 for (size_t ii = 0; ii < spline_x->size(); ++ii) {
34 spline_x->Mutate(ii, -spline_x->Get(ii));
35 }
36 for (size_t ii = 0; ii < spline_y->size(); ++ii) {
37 spline_y->Mutate(ii, -spline_y->Get(ii));
38 }
milind-u086d7262022-01-19 20:44:18 -080039 }
Ravago Jones81e50632022-03-11 16:23:51 -080040 return spline_offset;
milind-u086d7262022-01-19 20:44:18 -080041}
42
Ravago Jones81e50632022-03-11 16:23:51 -080043flatbuffers::Offset<frc971::MultiSpline> AutonomousSplines::TestSpline(
44 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
45 *builder,
46 aos::Alliance alliance) {
47 return FixSpline(
48 builder,
49 aos::CopyFlatBuffer<frc971::MultiSpline>(test_spline_, builder->fbb()),
50 alliance);
milind-u086d7262022-01-19 20:44:18 -080051}
52
Ravago Jonese20f7f92022-03-11 19:54:38 -080053flatbuffers::Offset<frc971::MultiSpline> AutonomousSplines::Spline1(
54 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
55 *builder,
56 aos::Alliance alliance) {
57 return FixSpline(
58 builder,
59 aos::CopyFlatBuffer<frc971::MultiSpline>(spline_1_, builder->fbb()),
60 alliance);
61}
62
63flatbuffers::Offset<frc971::MultiSpline> AutonomousSplines::Spline2(
64 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
65 *builder,
66 aos::Alliance alliance) {
67 return FixSpline(
68 builder,
69 aos::CopyFlatBuffer<frc971::MultiSpline>(spline_2_, builder->fbb()),
70 alliance);
71}
72
73flatbuffers::Offset<frc971::MultiSpline> AutonomousSplines::Spline3(
74 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
75 *builder,
76 aos::Alliance alliance) {
77 return FixSpline(
78 builder,
79 aos::CopyFlatBuffer<frc971::MultiSpline>(spline_3_, builder->fbb()),
80 alliance);
81}
82
Henry Speiser5eed1de2022-04-07 21:52:10 -070083flatbuffers::Offset<frc971::MultiSpline> AutonomousSplines::SplineTwoBall(
84 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
85 *builder,
86 aos::Alliance alliance) {
87 return FixSpline(
88 builder,
89 aos::CopyFlatBuffer<frc971::MultiSpline>(spline_two_, builder->fbb()),
90 alliance);
91}
92
milind-u086d7262022-01-19 20:44:18 -080093} // namespace actors
94} // namespace y2022