Convert actions to event loops
The logic gets significantly simpler due to Watchers. But we also get
to port all the users over as well.
Change-Id: Ib4e75951e65f7431acc6c1548b7f1d20da3da295
diff --git a/y2017/actors/autonomous_actor.cc b/y2017/actors/autonomous_actor.cc
index ee17f49..841b18c 100644
--- a/y2017/actors/autonomous_actor.cc
+++ b/y2017/actors/autonomous_actor.cc
@@ -35,11 +35,9 @@
} // namespace
-AutonomousActor::AutonomousActor(
- ::aos::EventLoop *event_loop,
- ::frc971::autonomous::AutonomousActionQueueGroup *s)
+AutonomousActor::AutonomousActor(::aos::EventLoop *event_loop)
: frc971::autonomous::BaseAutonomousActor(
- event_loop, s, control_loops::drivetrain::GetDrivetrainConfig()) {}
+ event_loop, control_loops::drivetrain::GetDrivetrainConfig()) {}
bool AutonomousActor::RunAction(
const ::frc971::autonomous::AutonomousActionParams ¶ms) {
diff --git a/y2017/actors/autonomous_actor.h b/y2017/actors/autonomous_actor.h
index 4b87c51..7332344 100644
--- a/y2017/actors/autonomous_actor.h
+++ b/y2017/actors/autonomous_actor.h
@@ -19,8 +19,7 @@
class AutonomousActor : public ::frc971::autonomous::BaseAutonomousActor {
public:
- explicit AutonomousActor(::aos::EventLoop *event_loop,
- ::frc971::autonomous::AutonomousActionQueueGroup *s);
+ explicit AutonomousActor(::aos::EventLoop *event_loop);
bool RunAction(
const ::frc971::autonomous::AutonomousActionParams ¶ms) override;
diff --git a/y2017/actors/autonomous_actor_main.cc b/y2017/actors/autonomous_actor_main.cc
index f9dfbbb..88779d8 100644
--- a/y2017/actors/autonomous_actor_main.cc
+++ b/y2017/actors/autonomous_actor_main.cc
@@ -9,9 +9,8 @@
::aos::Init(-1);
::aos::ShmEventLoop event_loop;
- ::y2017::actors::AutonomousActor autonomous(
- &event_loop, &::frc971::autonomous::autonomous_action);
- autonomous.Run();
+ ::y2017::actors::AutonomousActor autonomous(&event_loop);
+ event_loop.Run();
::aos::Cleanup();
return 0;
diff --git a/y2017/joystick_reader.cc b/y2017/joystick_reader.cc
index d9bca58..963c7d1 100644
--- a/y2017/joystick_reader.cc
+++ b/y2017/joystick_reader.cc
@@ -54,7 +54,10 @@
class Reader : public ::aos::input::JoystickInput {
public:
Reader(::aos::EventLoop *event_loop)
- : ::aos::input::JoystickInput(event_loop) {
+ : ::aos::input::JoystickInput(event_loop),
+ autonomous_action_factory_(
+ ::frc971::autonomous::BaseAutonomousActor::MakeFactory(
+ event_loop)) {
drivetrain_input_reader_ = DrivetrainInputReader::Make(
DrivetrainInputReader::InputType::kSteeringWheel,
::y2017::control_loops::drivetrain::GetDrivetrainConfig());
@@ -293,8 +296,7 @@
LOG(WARNING, "no auto mode values\n");
params.mode = 0;
}
- action_queue_.EnqueueAction(
- ::frc971::autonomous::MakeAutonomousAction(params));
+ action_queue_.EnqueueAction(autonomous_action_factory_.Make(params));
}
void StopAuto() {
@@ -317,6 +319,8 @@
double robot_velocity_ = 0.0;
::aos::common::actions::ActionQueue action_queue_;
+
+ ::frc971::autonomous::BaseAutonomousActor::Factory autonomous_action_factory_;
};
} // namespace joysticks