blob: ef63b8e1afd1f529d99c6f3fb231e65648659034 [file] [log] [blame]
Tyler Chatowf31da682017-01-22 01:39:40 +00001#ifndef Y2017_ACTORS_AUTONOMOUS_ACTOR_H_
2#define Y2017_ACTORS_AUTONOMOUS_ACTOR_H_
3
4#include <chrono>
5#include <memory>
6
7#include "aos/common/actions/actions.h"
8#include "aos/common/actions/actor.h"
9#include "frc971/control_loops/drivetrain/drivetrain.q.h"
10#include "frc971/control_loops/drivetrain/drivetrain_config.h"
11#include "y2017/actors/autonomous_action.q.h"
12
13namespace y2017 {
14namespace actors {
15using ::frc971::ProfileParameters;
16
17class AutonomousActor
18 : public ::aos::common::actions::ActorBase<AutonomousActionQueueGroup> {
19 public:
20 explicit AutonomousActor(AutonomousActionQueueGroup *s);
21
22 bool RunAction(const actors::AutonomousActionParams &params) override;
23 private:
24 void WaitUntilDoneOrCanceled(::std::unique_ptr<aos::common::actions::Action>
25 action);
26};
27
28typedef ::aos::common::actions::TypedAction<AutonomousActionQueueGroup>
29 AutonomousAction;
30
31// Makes a new AutonomousActor action.
32::std::unique_ptr<AutonomousAction> MakeAutonomousAction(
33 const ::y2017::actors::AutonomousActionParams &params);
34
35} // namespace actors
36} // namespace y2017
37
38#endif // Y2017_ACTORS_AUTONOMOUS_ACTOR_H_