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/joystick_reader.cc b/y2014/joystick_reader.cc
index 29cb354..6f94bfe 100644
--- a/y2014/joystick_reader.cc
+++ b/y2014/joystick_reader.cc
@@ -11,14 +11,13 @@
#include "aos/time/time.h"
#include "aos/util/log_interval.h"
-#include "frc971/autonomous/auto.q.h"
-#include "frc971/control_loops/drivetrain/drivetrain.q.h"
-#include "frc971/queues/gyro.q.h"
+#include "frc971/control_loops/drivetrain/drivetrain_status_generated.h"
#include "y2014/actors/shoot_actor.h"
#include "y2014/constants.h"
-#include "y2014/control_loops/claw/claw.q.h"
+#include "y2014/control_loops/claw/claw_goal_generated.h"
+#include "y2014/control_loops/claw/claw_status_generated.h"
#include "y2014/control_loops/drivetrain/drivetrain_base.h"
-#include "y2014/control_loops/shooter/shooter.q.h"
+#include "y2014/control_loops/shooter/shooter_goal_generated.h"
using ::aos::input::driver_station::ButtonLocation;
using ::aos::input::driver_station::JoystickAxis;
@@ -158,18 +157,18 @@
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")),
+ 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_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")),
drivetrain_status_fetcher_(
event_loop
- ->MakeFetcher<::frc971::control_loops::DrivetrainQueue::Status>(
- ".frc971.control_loops.drivetrain_queue.status")),
+ ->MakeFetcher<::frc971::control_loops::drivetrain::Status>(
+ "/drivetrain")),
shot_power_(80.0),
goal_angle_(0.0),
separation_angle_(kGrabSeparation),
@@ -326,7 +325,8 @@
}
if (data.PosEdge(kFire)) {
- EnqueueAction(shoot_action_factory_.Make(0.0));
+ aos::common::actions::DoubleParamT param;
+ EnqueueAction(shoot_action_factory_.Make(param));
} else if (data.NegEdge(kFire)) {
CancelCurrentAction();
}
@@ -354,7 +354,7 @@
double goal_angle = goal_angle_;
if (drivetrain_status_fetcher_.get()) {
goal_angle +=
- SpeedToAngleOffset(drivetrain_status_fetcher_->robot_speed);
+ SpeedToAngleOffset(drivetrain_status_fetcher_->robot_speed());
} else {
AOS_LOG_INTERVAL(no_drivetrain_status_);
}
@@ -362,7 +362,7 @@
if (moving_for_shot_) {
claw_status_fetcher_.Fetch();
if (claw_status_fetcher_.get()) {
- if (::std::abs(claw_status_fetcher_->bottom - goal_angle) < 0.2) {
+ if (::std::abs(claw_status_fetcher_->bottom() - goal_angle) < 0.2) {
moving_for_shot_ = false;
separation_angle_ = shot_separation_angle_;
}
@@ -381,26 +381,30 @@
data.IsPressed(kRollersIn) || data.IsPressed(kIntakePosition) ||
data.IsPressed(kIntakeOpenPosition) || data.IsPressed(kCatch);
{
- auto goal_message = claw_goal_sender_.MakeMessage();
- goal_message->bottom_angle = goal_angle;
- goal_message->separation_angle = separation_angle;
- goal_message->intake =
+ auto builder = claw_goal_sender_.MakeBuilder();
+ control_loops::claw::Goal::Builder goal_builder =
+ builder.MakeBuilder<control_loops::claw::Goal>();
+ goal_builder.add_bottom_angle(goal_angle);
+ goal_builder.add_separation_angle(separation_angle);
+ goal_builder.add_intake(
intaking ? 12.0
- : (data.IsPressed(kRollersOut) ? -12.0 : intake_power_);
- goal_message->centering = intaking ? 12.0 : 0.0;
+ : (data.IsPressed(kRollersOut) ? -12.0 : intake_power_));
+ goal_builder.add_centering(intaking ? 12.0 : 0.0);
- if (!goal_message.Send()) {
+ if (!builder.Send(goal_builder.Finish())) {
AOS_LOG(WARNING, "sending claw goal failed\n");
}
}
{
- auto goal_message = shooter_goal_sender_.MakeMessage();
- goal_message->shot_power = shot_power_;
- goal_message->shot_requested = data.IsPressed(kFire);
- goal_message->unload_requested = data.IsPressed(kUnload);
- goal_message->load_requested = data.IsPressed(kReload);
- 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(shot_power_);
+ goal_builder.add_shot_requested(data.IsPressed(kFire));
+ goal_builder.add_unload_requested(data.IsPressed(kUnload));
+ goal_builder.add_load_requested(data.IsPressed(kReload));
+ if (!builder.Send(goal_builder.Finish())) {
AOS_LOG(WARNING, "sending shooter goal failed\n");
}
}
@@ -415,11 +419,10 @@
}
private:
- ::aos::Fetcher<::y2014::control_loops::ClawQueue::Status>
- claw_status_fetcher_;
- ::aos::Sender<::y2014::control_loops::ClawQueue::Goal> claw_goal_sender_;
- ::aos::Sender<::y2014::control_loops::ShooterQueue::Goal> shooter_goal_sender_;
- ::aos::Fetcher<::frc971::control_loops::DrivetrainQueue::Status>
+ ::aos::Fetcher<::y2014::control_loops::claw::Status> claw_status_fetcher_;
+ ::aos::Sender<::y2014::control_loops::claw::Goal> claw_goal_sender_;
+ ::aos::Sender<::y2014::control_loops::shooter::Goal> shooter_goal_sender_;
+ ::aos::Fetcher<::frc971::control_loops::drivetrain::Status>
drivetrain_status_fetcher_;
double shot_power_;
@@ -443,7 +446,10 @@
int main() {
::aos::InitNRT(true);
- ::aos::ShmEventLoop event_loop;
+ aos::FlatbufferDetachedBuffer<aos::Configuration> config =
+ aos::configuration::ReadConfig("config.json");
+
+ ::aos::ShmEventLoop event_loop(&config.message());
::y2014::input::joysticks::Reader reader(&event_loop);
event_loop.Run();