blob: ced429a6fee3d970802b9eb054e514002c35b628 [file] [log] [blame]
Henry Speiser354d2782022-07-22 13:56:48 -07001#include "y2022_bot3/actors/auto_splines.h"
2
3#include "frc971/control_loops/control_loops_generated.h"
4
Stephan Pleinesf63bde82024-01-13 15:59:33 -08005namespace y2022_bot3::actors {
Henry Speiser354d2782022-07-22 13:56:48 -07006
7void MaybeFlipSpline(
8 aos::Sender<frc971::control_loops::drivetrain::Goal>::Builder *builder,
9 flatbuffers::Offset<flatbuffers::Vector<float>> spline_y_offset,
10 bool is_left) {
11 flatbuffers::Vector<float> *spline_y =
12 GetMutableTemporaryPointer(*builder->fbb(), spline_y_offset);
13
14 if (!is_left) {
15 for (size_t i = 0; i < spline_y->size(); i++) {
16 spline_y->Mutate(i, -spline_y->Get(i));
17 }
18 }
19}
20
21flatbuffers::Offset<frc971::MultiSpline> FixSpline(
22 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
23 *builder,
24 flatbuffers::Offset<frc971::MultiSpline> spline_offset,
25 aos::Alliance alliance) {
26 frc971::MultiSpline *spline =
27 GetMutableTemporaryPointer(*builder->fbb(), spline_offset);
28 flatbuffers::Vector<float> *spline_x = spline->mutable_spline_x();
29 flatbuffers::Vector<float> *spline_y = spline->mutable_spline_y();
30
31 if (alliance == aos::Alliance::kBlue) {
32 for (size_t ii = 0; ii < spline_x->size(); ++ii) {
33 spline_x->Mutate(ii, -spline_x->Get(ii));
34 }
35 for (size_t ii = 0; ii < spline_y->size(); ++ii) {
36 spline_y->Mutate(ii, -spline_y->Get(ii));
37 }
38 }
39 return spline_offset;
40}
41
42flatbuffers::Offset<frc971::MultiSpline> AutonomousSplines::TestSpline(
43 aos::Sender<frc971::control_loops::drivetrain::SplineGoal>::Builder
44 *builder,
45 aos::Alliance alliance) {
46 return FixSpline(
47 builder,
48 aos::CopyFlatBuffer<frc971::MultiSpline>(test_spline_, builder->fbb()),
49 alliance);
50}
51
Stephan Pleinesf63bde82024-01-13 15:59:33 -080052} // namespace y2022_bot3::actors