blob: 2a9e307d363a61e0c5872a764f3b982daad7e1fb [file] [log] [blame]
Brian Silverman17f503e2015-08-02 18:17:18 -07001#ifndef Y2014_ACTIONS_DRIVETRAIN_ACTION_H_
2#define Y2014_ACTIONS_DRIVETRAIN_ACTION_H_
3
4#include <memory>
5
Brian Silverman17f503e2015-08-02 18:17:18 -07006#include "aos/common/actions/actor.h"
7#include "aos/common/actions/actions.h"
Austin Schuhadf2cde2015-11-08 20:35:16 -08008#include "frc971/control_loops/state_feedback_loop.h"
Brian Silverman17f503e2015-08-02 18:17:18 -07009
Brian Silvermanac961072015-05-17 01:42:33 -040010#include "y2014/actors/drivetrain_action.q.h"
11
Brian Silvermanb601d892015-12-20 18:24:38 -050012namespace y2014 {
Brian Silverman17f503e2015-08-02 18:17:18 -070013namespace actors {
14
15class DrivetrainActor
Brian Silvermanac961072015-05-17 01:42:33 -040016 : public ::aos::common::actions::ActorBase<DrivetrainActionQueueGroup> {
Brian Silverman17f503e2015-08-02 18:17:18 -070017 public:
18 explicit DrivetrainActor(DrivetrainActionQueueGroup* s);
19
20 bool RunAction(const actors::DrivetrainActionParams &params) override;
Austin Schuhadf2cde2015-11-08 20:35:16 -080021
22 private:
23 StateFeedbackLoop<4, 2, 2> loop_;
Brian Silverman17f503e2015-08-02 18:17:18 -070024};
25
Brian Silvermanac961072015-05-17 01:42:33 -040026typedef ::aos::common::actions::TypedAction<DrivetrainActionQueueGroup>
Brian Silverman17f503e2015-08-02 18:17:18 -070027 DrivetrainAction;
28
29// Makes a new DrivetrainActor action.
30::std::unique_ptr<DrivetrainAction> MakeDrivetrainAction(
Brian Silvermanb601d892015-12-20 18:24:38 -050031 const ::y2014::actors::DrivetrainActionParams& params);
Brian Silverman17f503e2015-08-02 18:17:18 -070032
33} // namespace actors
Brian Silvermanb601d892015-12-20 18:24:38 -050034} // namespace y2014
Brian Silverman17f503e2015-08-02 18:17:18 -070035
36#endif