blob: 0ab3bf29c923244a56168afb3e45c4d4c202cbe5 [file] [log] [blame]
Comran Morshed6c6a0a92016-01-17 12:45:16 +00001#ifndef Y2016_ACTORS_DRIVETRAIN_ACTOR_H_
2#define Y2016_ACTORS_DRIVETRAIN_ACTOR_H_
Comran Morshed9a9948c2016-01-16 15:58:04 +00003
4#include <memory>
5
6#include "aos/common/actions/actor.h"
7#include "aos/common/actions/actions.h"
8#include "frc971/control_loops/state_feedback_loop.h"
9
Comran Morshed6c6a0a92016-01-17 12:45:16 +000010#include "y2016/actors/drivetrain_action.q.h"
Comran Morshed9a9948c2016-01-16 15:58:04 +000011
Comran Morshed6c6a0a92016-01-17 12:45:16 +000012namespace y2016 {
Comran Morshed9a9948c2016-01-16 15:58:04 +000013namespace actors {
14
15class DrivetrainActor
16 : public ::aos::common::actions::ActorBase<DrivetrainActionQueueGroup> {
17 public:
Comran Morshed6c6a0a92016-01-17 12:45:16 +000018 explicit DrivetrainActor(DrivetrainActionQueueGroup *s);
Comran Morshed9a9948c2016-01-16 15:58:04 +000019
20 bool RunAction(const actors::DrivetrainActionParams &params) override;
21
22 private:
23 StateFeedbackLoop<4, 2, 2> loop_;
24};
25
26typedef ::aos::common::actions::TypedAction<DrivetrainActionQueueGroup>
27 DrivetrainAction;
28
29// Makes a new DrivetrainActor action.
30::std::unique_ptr<DrivetrainAction> MakeDrivetrainAction(
Comran Morshed6c6a0a92016-01-17 12:45:16 +000031 const ::y2016::actors::DrivetrainActionParams &params);
Comran Morshed9a9948c2016-01-16 15:58:04 +000032
33} // namespace actors
Comran Morshed6c6a0a92016-01-17 12:45:16 +000034} // namespace y2016
Comran Morshed9a9948c2016-01-16 15:58:04 +000035
36#endif