Remove global queuegroup claw_queue
Change-Id: Ie642d5da51f6c0934ee3206d1a50969d6f2e6d33
diff --git a/y2014/joystick_reader.cc b/y2014/joystick_reader.cc
index a8f0e7f..590c74a 100644
--- a/y2014/joystick_reader.cc
+++ b/y2014/joystick_reader.cc
@@ -159,6 +159,12 @@
: ::aos::input::ActionJoystickInput(
event_loop, control_loops::GetDrivetrainConfig(),
::aos::input::DrivetrainInputReader::InputType::kSteeringWheel, {}),
+ claw_status_fetcher_(
+ event_loop->MakeFetcher<::y2014::control_loops::ClawQueue::Status>(
+ ".y2014.control_loops.claw_queue.status")),
+ claw_goal_sender_(
+ event_loop->MakeSender<::y2014::control_loops::ClawQueue::Goal>(
+ ".y2014.control_loops.claw_queue.goal")),
shot_power_(80.0),
goal_angle_(0.0),
separation_angle_(kGrabSeparation),
@@ -349,10 +355,9 @@
}
if (moving_for_shot_) {
- auto &claw_status = control_loops::claw_queue.status;
- claw_status.FetchLatest();
- if (claw_status.get()) {
- if (::std::abs(claw_status->bottom - goal_angle) < 0.2) {
+ claw_status_fetcher_.Fetch();
+ if (claw_status_fetcher_.get()) {
+ if (::std::abs(claw_status_fetcher_->bottom - goal_angle) < 0.2) {
moving_for_shot_ = false;
separation_angle_ = shot_separation_angle_;
}
@@ -370,15 +375,18 @@
bool intaking =
data.IsPressed(kRollersIn) || data.IsPressed(kIntakePosition) ||
data.IsPressed(kIntakeOpenPosition) || data.IsPressed(kCatch);
- if (!control_loops::claw_queue.goal.MakeWithBuilder()
- .bottom_angle(goal_angle)
- .separation_angle(separation_angle)
- .intake(intaking ? 12.0
- : (data.IsPressed(kRollersOut) ? -12.0
- : intake_power_))
- .centering(intaking ? 12.0 : 0.0)
- .Send()) {
- LOG(WARNING, "sending claw goal failed\n");
+ {
+ auto goal_message = claw_goal_sender_.MakeMessage();
+ goal_message->bottom_angle = goal_angle;
+ goal_message->separation_angle = separation_angle;
+ goal_message->intake =
+ intaking ? 12.0
+ : (data.IsPressed(kRollersOut) ? -12.0 : intake_power_);
+ goal_message->centering = intaking ? 12.0 : 0.0;
+
+ if (!goal_message.Send()) {
+ LOG(WARNING, "sending claw goal failed\n");
+ }
}
if (!control_loops::shooter_queue.goal.MakeWithBuilder()
@@ -400,6 +408,10 @@
}
private:
+ ::aos::Fetcher<::y2014::control_loops::ClawQueue::Status>
+ claw_status_fetcher_;
+ ::aos::Sender<::y2014::control_loops::ClawQueue::Goal> claw_goal_sender_;
+
double shot_power_;
double goal_angle_;
double separation_angle_, shot_separation_angle_;