Convert aos over to flatbuffers
Everything builds, and all the tests pass. I suspect that some entries
are missing from the config files, but those will be found pretty
quickly on startup.
There is no logging or live introspection of queue messages.
Change-Id: I496ee01ed68f202c7851bed7e8786cee30df29f5
diff --git a/y2014/actors/shoot_actor.cc b/y2014/actors/shoot_actor.cc
index 7fb4c05..58df186 100644
--- a/y2014/actors/shoot_actor.cc
+++ b/y2014/actors/shoot_actor.cc
@@ -4,10 +4,11 @@
#include "aos/logging/logging.h"
-#include "frc971/control_loops/drivetrain/drivetrain.q.h"
#include "y2014/constants.h"
-#include "y2014/control_loops/claw/claw.q.h"
-#include "y2014/control_loops/shooter/shooter.q.h"
+#include "y2014/control_loops/claw/claw_goal_generated.h"
+#include "y2014/control_loops/claw/claw_status_generated.h"
+#include "y2014/control_loops/shooter/shooter_goal_generated.h"
+#include "y2014/control_loops/shooter/shooter_status_generated.h"
namespace y2014 {
namespace actors {
@@ -17,26 +18,24 @@
constexpr double ShootActor::kClawShootingSeparationGoal;
ShootActor::ShootActor(::aos::EventLoop *event_loop)
- : ::aos::common::actions::ActorBase<actors::ShootActionQueueGroup>(
- event_loop, ".y2014.actors.shoot_action"),
+ : ::aos::common::actions::ActorBase<aos::common::actions::Goal>(
+ event_loop, "/shoot_action"),
claw_goal_fetcher_(
- event_loop->MakeFetcher<::y2014::control_loops::ClawQueue::Goal>(
- ".y2014.control_loops.claw_queue.goal")),
+ event_loop->MakeFetcher<::y2014::control_loops::claw::Goal>("/claw")),
claw_status_fetcher_(
- event_loop->MakeFetcher<::y2014::control_loops::ClawQueue::Status>(
- ".y2014.control_loops.claw_queue.status")),
+ event_loop->MakeFetcher<::y2014::control_loops::claw::Status>(
+ "/claw")),
claw_goal_sender_(
- event_loop->MakeSender<::y2014::control_loops::ClawQueue::Goal>(
- ".y2014.control_loops.claw_queue.goal")),
+ event_loop->MakeSender<::y2014::control_loops::claw::Goal>("/claw")),
shooter_status_fetcher_(
- event_loop->MakeFetcher<::y2014::control_loops::ShooterQueue::Status>(
- ".y2014.control_loops.shooter_queue.status")),
+ event_loop->MakeFetcher<::y2014::control_loops::shooter::Status>(
+ "/shooter")),
shooter_goal_fetcher_(
- event_loop->MakeFetcher<::y2014::control_loops::ShooterQueue::Goal>(
- ".y2014.control_loops.shooter_queue.goal")),
+ event_loop->MakeFetcher<::y2014::control_loops::shooter::Goal>(
+ "/shooter")),
shooter_goal_sender_(
- event_loop->MakeSender<::y2014::control_loops::ShooterQueue::Goal>(
- ".y2014.control_loops.shooter_queue.goal")) {}
+ event_loop->MakeSender<::y2014::control_loops::shooter::Goal>(
+ "/shooter")) {}
double ShootActor::SpeedToAngleOffset(double speed) {
const constants::Values &values = constants::GetValues();
@@ -52,14 +51,17 @@
// turn it off.
return true;
} else {
- auto goal_message = claw_goal_sender_.MakeMessage();
+ auto builder = claw_goal_sender_.MakeBuilder();
- goal_message->bottom_angle = claw_goal_fetcher_->bottom_angle;
- goal_message->separation_angle = claw_goal_fetcher_->separation_angle;
- goal_message->intake = 0.0;
- goal_message->centering = 0.0;
+ control_loops::claw::Goal::Builder claw_builder =
+ builder.MakeBuilder<control_loops::claw::Goal>();
- if (!goal_message.Send()) {
+ claw_builder.add_bottom_angle(claw_goal_fetcher_->bottom_angle());
+ claw_builder.add_separation_angle(claw_goal_fetcher_->separation_angle());
+ claw_builder.add_intake(0.0);
+ claw_builder.add_centering(0.0);
+
+ if (!builder.Send(claw_builder.Finish())) {
AOS_LOG(WARNING, "sending claw goal failed\n");
return false;
}
@@ -67,7 +69,7 @@
return true;
}
-bool ShootActor::RunAction(const double&) {
+bool ShootActor::RunAction(const aos::common::actions::DoubleParam *) {
InnerRunAction();
// Now do our 'finally' block and make sure that we aren't requesting shots
@@ -76,12 +78,15 @@
if (shooter_goal_fetcher_.get() == nullptr) {
return true;
}
- auto goal_message = shooter_goal_sender_.MakeMessage();
- goal_message->shot_power = shooter_goal_fetcher_->shot_power;
- goal_message->shot_requested = false;
- goal_message->unload_requested = false;
- goal_message->load_requested = false;
- if (!goal_message.Send()) {
+ auto builder = shooter_goal_sender_.MakeBuilder();
+ control_loops::shooter::Goal::Builder shooter_builder =
+ builder.MakeBuilder<control_loops::shooter::Goal>();
+
+ shooter_builder.add_shot_power(shooter_goal_fetcher_->shot_power());
+ shooter_builder.add_shot_requested(false);
+ shooter_builder.add_unload_requested(false);
+ shooter_builder.add_load_requested(false);
+ if (!builder.Send(shooter_builder.Finish())) {
AOS_LOG(WARNING, "sending shooter goal failed\n");
return false;
}
@@ -104,16 +109,18 @@
shooter_status_fetcher_.Fetch();
// Get the number of shots fired up to this point. This should not be updated
// again for another few cycles.
- previous_shots_ = shooter_status_fetcher_->shots;
+ previous_shots_ = shooter_status_fetcher_->shots();
// Shoot!
shooter_goal_fetcher_.Fetch();
{
- auto goal_message = shooter_goal_sender_.MakeMessage();
- goal_message->shot_power = shooter_goal_fetcher_->shot_power;
- goal_message->shot_requested = true;
- goal_message->unload_requested = false;
- goal_message->load_requested = false;
- if (!goal_message.Send()) {
+ auto builder = shooter_goal_sender_.MakeBuilder();
+ control_loops::shooter::Goal::Builder goal_builder =
+ builder.MakeBuilder<control_loops::shooter::Goal>();
+ goal_builder.add_shot_power(shooter_goal_fetcher_->shot_power());
+ goal_builder.add_shot_requested(true);
+ goal_builder.add_unload_requested(false);
+ goal_builder.add_load_requested(false);
+ if (!builder.Send(goal_builder.Finish())) {
AOS_LOG(WARNING, "sending shooter goal failed\n");
return;
}
@@ -128,20 +135,20 @@
bool ShootActor::ClawIsReady() {
claw_goal_fetcher_.Fetch();
- bool ans = claw_status_fetcher_->zeroed &&
- (::std::abs(claw_status_fetcher_->bottom_velocity) < 0.5) &&
- (::std::abs(claw_status_fetcher_->bottom -
- claw_goal_fetcher_->bottom_angle) < 0.10) &&
- (::std::abs(claw_status_fetcher_->separation -
- claw_goal_fetcher_->separation_angle) < 0.4);
+ bool ans = claw_status_fetcher_->zeroed() &&
+ (::std::abs(claw_status_fetcher_->bottom_velocity()) < 0.5) &&
+ (::std::abs(claw_status_fetcher_->bottom() -
+ claw_goal_fetcher_->bottom_angle()) < 0.10) &&
+ (::std::abs(claw_status_fetcher_->separation() -
+ claw_goal_fetcher_->separation_angle()) < 0.4);
AOS_LOG(DEBUG,
"Claw is %sready zeroed %d bottom_velocity %f bottom %f sep %f\n",
- ans ? "" : "not ", claw_status_fetcher_->zeroed,
- ::std::abs(claw_status_fetcher_->bottom_velocity),
- ::std::abs(claw_status_fetcher_->bottom -
- claw_goal_fetcher_->bottom_angle),
- ::std::abs(claw_status_fetcher_->separation -
- claw_goal_fetcher_->separation_angle));
+ ans ? "" : "not ", claw_status_fetcher_->zeroed(),
+ ::std::abs(claw_status_fetcher_->bottom_velocity()),
+ ::std::abs(claw_status_fetcher_->bottom() -
+ claw_goal_fetcher_->bottom_angle()),
+ ::std::abs(claw_status_fetcher_->separation() -
+ claw_goal_fetcher_->separation_angle()));
return ans;
}
@@ -149,14 +156,14 @@
shooter_goal_fetcher_.Fetch();
AOS_LOG(DEBUG, "Power error is %f - %f -> %f, ready %d\n",
- shooter_status_fetcher_->hard_stop_power,
- shooter_goal_fetcher_->shot_power,
- ::std::abs(shooter_status_fetcher_->hard_stop_power -
- shooter_goal_fetcher_->shot_power),
- shooter_status_fetcher_->ready);
- return (::std::abs(shooter_status_fetcher_->hard_stop_power -
- shooter_goal_fetcher_->shot_power) < 1.0) &&
- shooter_status_fetcher_->ready;
+ shooter_status_fetcher_->hard_stop_power(),
+ shooter_goal_fetcher_->shot_power(),
+ ::std::abs(shooter_status_fetcher_->hard_stop_power() -
+ shooter_goal_fetcher_->shot_power()),
+ shooter_status_fetcher_->ready());
+ return (::std::abs(shooter_status_fetcher_->hard_stop_power() -
+ shooter_goal_fetcher_->shot_power()) < 1.0) &&
+ shooter_status_fetcher_->ready();
}
bool ShootActor::DoneSetupShot() {
@@ -174,7 +181,7 @@
bool ShootActor::DonePreShotOpen() {
claw_status_fetcher_.Fetch();
- if (claw_status_fetcher_->separation > kClawShootingSeparation) {
+ if (claw_status_fetcher_->separation() > kClawShootingSeparation) {
AOS_LOG(INFO, "Opened up enough to shoot.\n");
return true;
}
@@ -184,7 +191,7 @@
bool ShootActor::DoneShot() {
shooter_status_fetcher_.Fetch();
if (shooter_status_fetcher_.get() &&
- shooter_status_fetcher_->shots > previous_shots_) {
+ shooter_status_fetcher_->shots() > previous_shots_) {
AOS_LOG(INFO, "Shot succeeded!\n");
return true;
}