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/aos/input/action_joystick_input.cc b/aos/input/action_joystick_input.cc
index 1679a7d..4c3fef1 100644
--- a/aos/input/action_joystick_input.cc
+++ b/aos/input/action_joystick_input.cc
@@ -50,7 +50,7 @@
void ActionJoystickInput::StartAuto() {
LOG(INFO, "Starting auto mode\n");
action_queue_.EnqueueAction(
- ::frc971::autonomous::MakeAutonomousAction(GetAutonomousMode()));
+ autonomous_action_factory_.Make(GetAutonomousMode()));
auto_action_running_ = true;
}
diff --git a/aos/input/action_joystick_input.h b/aos/input/action_joystick_input.h
index ec7b02c..0160468 100644
--- a/aos/input/action_joystick_input.h
+++ b/aos/input/action_joystick_input.h
@@ -33,8 +33,11 @@
const InputConfig &input_config)
: ::aos::input::JoystickInput(event_loop),
input_config_(input_config),
- drivetrain_input_reader_(DrivetrainInputReader::Make(
- input_type, dt_config)) {}
+ drivetrain_input_reader_(
+ DrivetrainInputReader::Make(input_type, dt_config)),
+ autonomous_action_factory_(
+ ::frc971::autonomous::BaseAutonomousActor::MakeFactory(
+ event_loop)) {}
virtual ~ActionJoystickInput() {}
@@ -78,6 +81,8 @@
bool auto_was_running_ = false;
::std::unique_ptr<DrivetrainInputReader> drivetrain_input_reader_;
::aos::common::actions::ActionQueue action_queue_;
+
+ ::frc971::autonomous::BaseAutonomousActor::Factory autonomous_action_factory_;
};
} // namespace input