blob: 3073012fff4e00fcbee6f82b46f4df5ba7cb964f [file] [log] [blame]
Parker Schuh18dbbb42017-10-18 21:45:33 -07001#ifndef FRC971_CODELAB_BASIC_H_
2#define FRC971_CODELAB_BASIC_H_
3
John Park33858a32018-09-28 23:05:48 -07004#include "aos/time/time.h"
James Kuszmaul78e29ac2020-07-28 21:07:03 -07005#include "frc971/codelab/basic_goal_generated.h"
Nikolai Sohmersc933f512024-06-08 13:57:05 -07006#include "frc971/codelab/basic_output_static.h"
James Kuszmaul78e29ac2020-07-28 21:07:03 -07007#include "frc971/codelab/basic_position_generated.h"
Nikolai Sohmersc933f512024-06-08 13:57:05 -07008#include "frc971/codelab/basic_status_static.h"
Philipp Schrader790cb542023-07-05 21:06:52 -07009#include "frc971/control_loops/control_loop.h"
Parker Schuh18dbbb42017-10-18 21:45:33 -070010
Stephan Pleinesd99b1ee2024-02-02 20:56:44 -080011namespace frc971::codelab {
Parker Schuh18dbbb42017-10-18 21:45:33 -070012
Alex Perrycb7da4b2019-08-28 19:35:56 -070013class Basic
Nikolai Sohmersc933f512024-06-08 13:57:05 -070014 : public ::frc971::controls::ControlLoop<Goal, Position, StatusStatic,
15 OutputStatic> {
Parker Schuh18dbbb42017-10-18 21:45:33 -070016 public:
Austin Schuh55a13dc2019-01-27 22:39:03 -080017 explicit Basic(::aos::EventLoop *event_loop,
Alex Perrycb7da4b2019-08-28 19:35:56 -070018 const ::std::string &name = "/codelab");
Parker Schuh18dbbb42017-10-18 21:45:33 -070019
20 protected:
Alex Perrycb7da4b2019-08-28 19:35:56 -070021 void RunIteration(const Goal *goal, const Position *position,
Nikolai Sohmersc933f512024-06-08 13:57:05 -070022 aos::Sender<OutputStatic>::StaticBuilder *output,
23 aos::Sender<StatusStatic>::StaticBuilder *status) override;
Parker Schuh18dbbb42017-10-18 21:45:33 -070024};
25
Stephan Pleinesd99b1ee2024-02-02 20:56:44 -080026} // namespace frc971::codelab
Parker Schuh18dbbb42017-10-18 21:45:33 -070027
28#endif // FRC971_CODELAB_BASIC_H_