blob: f1b06bfdba74d8b7df1a24c02b991ee180eb6b3d [file] [log] [blame]
Austin Schuhbfb04122019-05-22 21:16:51 -07001#ifndef Y2014_ACTORS_AUTONOMOUS_ACTOR_H_
2#define Y2014_ACTORS_AUTONOMOUS_ACTOR_H_
3
4#include <chrono>
5#include <memory>
6
7#include "aos/actions/actions.h"
8#include "aos/actions/actor.h"
9#include "frc971/autonomous/base_autonomous_actor.h"
Austin Schuhbfb04122019-05-22 21:16:51 -070010#include "frc971/control_loops/drivetrain/drivetrain_config.h"
Austin Schuh1bf8a212019-05-26 22:13:14 -070011#include "y2014/actors/shoot_actor.h"
Alex Perrycb7da4b2019-08-28 19:35:56 -070012#include "y2014/control_loops/shooter/shooter_goal_generated.h"
13#include "y2014/queues/auto_mode_generated.h"
14#include "y2014/queues/hot_goal_generated.h"
Austin Schuhbfb04122019-05-22 21:16:51 -070015
16namespace y2014 {
17namespace actors {
18
19class AutonomousActor : public ::frc971::autonomous::BaseAutonomousActor {
20 public:
Austin Schuh1bf8a212019-05-26 22:13:14 -070021 explicit AutonomousActor(::aos::EventLoop *event_loop);
Austin Schuhbfb04122019-05-22 21:16:51 -070022
23 bool RunAction(
Alex Perrycb7da4b2019-08-28 19:35:56 -070024 const ::frc971::autonomous::AutonomousActionParams *params) override;
Austin Schuhbfb04122019-05-22 21:16:51 -070025
26 private:
27 void Reset() {
28 InitializeEncoders();
29 ResetDrivetrain();
30 }
31
32 void PositionClawVertically(double intake_power, double centering_power);
33 void PositionClawBackIntake();
34 void PositionClawUpClosed();
35 void PositionClawForShot();
36 void SetShotPower(double power);
37 void Shoot();
38
39 bool WaitUntilClawDone();
Austin Schuha3e576b2019-05-22 21:22:23 -070040
Austin Schuh7eed2de2019-05-25 14:34:40 -070041 ::aos::Fetcher<::y2014::sensors::AutoMode> auto_mode_fetcher_;
Austin Schuha3e576b2019-05-22 21:22:23 -070042 ::aos::Fetcher<::y2014::HotGoal> hot_goal_fetcher_;
Alex Perrycb7da4b2019-08-28 19:35:56 -070043 ::aos::Sender<::y2014::control_loops::claw::Goal> claw_goal_sender_;
44 ::aos::Fetcher<::y2014::control_loops::claw::Goal> claw_goal_fetcher_;
45 ::aos::Fetcher<::y2014::control_loops::claw::Status> claw_status_fetcher_;
46 ::aos::Sender<::y2014::control_loops::shooter::Goal> shooter_goal_sender_;
Austin Schuh1bf8a212019-05-26 22:13:14 -070047
48 actors::ShootActor::Factory shoot_action_factory_;
Austin Schuhbfb04122019-05-22 21:16:51 -070049};
50
51} // namespace actors
52} // namespace y2014
53
54#endif // Y2014_ACTORS_AUTONOMOUS_ACTOR_H_