blob: 0c98fed24a4652a5f0bf565d1901daec7fc04ff5 [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
53} // namespace actors
54} // namespace y2022