blob: 888b2c0b0b2fc8f5d8dfb4168069abfa5f646471 [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 Silverman17f503e2015-08-02 18:17:18 -070012namespace frc971 {
13namespace 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(
31 const ::frc971::actors::DrivetrainActionParams& params);
32
33} // namespace actors
34} // namespace frc971
35
36#endif