blob: 36e64c5322f5f97d4a61b6061d443d5679dbc41e [file] [log] [blame]
Parker Schuh18dbbb42017-10-18 21:45:33 -07001#include "frc971/codelab/basic.h"
2
3namespace frc971 {
4namespace codelab {
5
Austin Schuh55a13dc2019-01-27 22:39:03 -08006Basic::Basic(::aos::EventLoop *event_loop, const ::std::string &name)
Alex Perrycb7da4b2019-08-28 19:35:56 -07007 : aos::controls::ControlLoop<Goal, Position, Status, Output>(event_loop,
8 name) {}
Parker Schuh18dbbb42017-10-18 21:45:33 -07009
Alex Perrycb7da4b2019-08-28 19:35:56 -070010void Basic::RunIteration(const Goal *goal, const Position *position,
11 aos::Sender<Output>::Builder *output,
12 aos::Sender<Status>::Builder *status) {
Parker Schuh18dbbb42017-10-18 21:45:33 -070013 // TODO(you): Set the intake_voltage to 12 Volts when
14 // intake is requested (via intake in goal). Make sure not to set
15 // the motor to anything but 0 V when the limit_sensor is pressed.
16
17 // Ignore: These are to avoid clang warnings.
James Kuszmaul78e29ac2020-07-28 21:07:03 -070018 (void)goal, (void)position;
19
20 if (output) {
21 Output::Builder builder = output->MakeBuilder<Output>();
22 // TODO(you): Fill out the voltage with a real voltage based on the
23 // Goal/Position messages.
24 builder.add_intake_voltage(0.0);
25
26 output->Send(builder.Finish());
27 }
28
29 if (status) {
30 Status::Builder builder = status->MakeBuilder<Status>();
31 // TODO(you): Fill out the Status message! In order to populate fields, use
32 // the add_field_name() method on the builder, just like we do with the
33 // Output message above.
34
35 status->Send(builder.Finish());
36 }
Parker Schuh18dbbb42017-10-18 21:45:33 -070037}
38
39} // namespace codelab
40} // namespace frc971