Switch to c++11 enums for flatbuffers

Change-Id: I99171464bf54efbb7eb322c556760dee86648f5e
diff --git a/y2019/actors/auto_splines.cc b/y2019/actors/auto_splines.cc
index 6166ca8..397229c 100644
--- a/y2019/actors/auto_splines.cc
+++ b/y2019/actors/auto_splines.cc
@@ -33,7 +33,7 @@
     frc971::Constraint::Builder longitudinal_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     longitudinal_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_LONGITUDINAL_ACCELERATION);
+        frc971::ConstraintType::LONGITUDINAL_ACCELERATION);
     longitudinal_constraint_builder.add_value(2.0);
     longitudinal_constraint_offset = longitudinal_constraint_builder.Finish();
   }
@@ -42,7 +42,7 @@
     frc971::Constraint::Builder lateral_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     lateral_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_LATERAL_ACCELERATION);
+        frc971::ConstraintType::LATERAL_ACCELERATION);
     lateral_constraint_builder.add_value(2.0);
     lateral_constraint_offset = lateral_constraint_builder.Finish();
   }
@@ -51,7 +51,7 @@
     frc971::Constraint::Builder voltage_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     voltage_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_VOLTAGE);
+        frc971::ConstraintType::VOLTAGE);
     voltage_constraint_builder.add_value(11.0);
     voltage_constraint_offset = voltage_constraint_builder.Finish();
   }
@@ -60,7 +60,7 @@
     frc971::Constraint::Builder velocity_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     velocity_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_VELOCITY);
+        frc971::ConstraintType::VELOCITY);
     velocity_constraint_builder.add_value(4.0);
     velocity_constraint_builder.add_start_distance(0.0);
     velocity_constraint_builder.add_end_distance(10.0);
@@ -108,7 +108,7 @@
     frc971::Constraint::Builder longitudinal_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     longitudinal_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_LONGITUDINAL_ACCELERATION);
+        frc971::ConstraintType::LONGITUDINAL_ACCELERATION);
     longitudinal_constraint_builder.add_value(3.0);
     longitudinal_constraint_offset = longitudinal_constraint_builder.Finish();
   }
@@ -117,7 +117,7 @@
     frc971::Constraint::Builder lateral_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     lateral_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_LATERAL_ACCELERATION);
+        frc971::ConstraintType::LATERAL_ACCELERATION);
     lateral_constraint_builder.add_value(2.0);
     lateral_constraint_offset = lateral_constraint_builder.Finish();
   }
@@ -126,7 +126,7 @@
     frc971::Constraint::Builder voltage_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     voltage_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_VOLTAGE);
+        frc971::ConstraintType::VOLTAGE);
     voltage_constraint_builder.add_value(11.0);
     voltage_constraint_offset = voltage_constraint_builder.Finish();
   }
@@ -135,7 +135,7 @@
     frc971::Constraint::Builder velocity_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     velocity_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_VELOCITY);
+        frc971::ConstraintType::VELOCITY);
     velocity_constraint_builder.add_value(4.5);
     velocity_constraint_builder.add_start_distance(0.0);
     velocity_constraint_builder.add_end_distance(10.0);
@@ -181,7 +181,7 @@
     frc971::Constraint::Builder longitudinal_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     longitudinal_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_LONGITUDINAL_ACCELERATION);
+        frc971::ConstraintType::LONGITUDINAL_ACCELERATION);
     longitudinal_constraint_builder.add_value(3.0);
     longitudinal_constraint_offset = longitudinal_constraint_builder.Finish();
   }
@@ -190,7 +190,7 @@
     frc971::Constraint::Builder lateral_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     lateral_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_LATERAL_ACCELERATION);
+        frc971::ConstraintType::LATERAL_ACCELERATION);
     lateral_constraint_builder.add_value(3.0);
     lateral_constraint_offset = lateral_constraint_builder.Finish();
   }
@@ -199,7 +199,7 @@
     frc971::Constraint::Builder voltage_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     voltage_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_VOLTAGE);
+        frc971::ConstraintType::VOLTAGE);
     voltage_constraint_builder.add_value(11.0);
     voltage_constraint_offset = voltage_constraint_builder.Finish();
   }
@@ -208,7 +208,7 @@
     frc971::Constraint::Builder velocity_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     velocity_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_VELOCITY);
+        frc971::ConstraintType::VELOCITY);
     velocity_constraint_builder.add_value(4.0);
     velocity_constraint_builder.add_start_distance(7.0);
     velocity_constraint_builder.add_end_distance(15.0);
@@ -280,7 +280,7 @@
     frc971::Constraint::Builder longitudinal_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     longitudinal_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_LONGITUDINAL_ACCELERATION);
+        frc971::ConstraintType::LONGITUDINAL_ACCELERATION);
     longitudinal_constraint_builder.add_value(2.0);
     longitudinal_constraint_offset = longitudinal_constraint_builder.Finish();
   }
@@ -289,7 +289,7 @@
     frc971::Constraint::Builder voltage_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     voltage_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_VOLTAGE);
+        frc971::ConstraintType::VOLTAGE);
     voltage_constraint_builder.add_value(10.0);
     voltage_constraint_offset = voltage_constraint_builder.Finish();
   }
@@ -298,7 +298,7 @@
     frc971::Constraint::Builder velocity_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     velocity_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_VELOCITY);
+        frc971::ConstraintType::VELOCITY);
     velocity_constraint_builder.add_value(1.6);
     velocity_constraint_builder.add_start_distance(4.0);
     velocity_constraint_builder.add_end_distance(10.0);
@@ -345,7 +345,7 @@
     frc971::Constraint::Builder voltage_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     voltage_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_VOLTAGE);
+        frc971::ConstraintType::VOLTAGE);
     voltage_constraint_builder.add_value(11.0);
     voltage_constraint_offset = voltage_constraint_builder.Finish();
   }
@@ -354,7 +354,7 @@
     frc971::Constraint::Builder velocity_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     velocity_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_VELOCITY);
+        frc971::ConstraintType::VELOCITY);
     velocity_constraint_builder.add_value(4.0);
     velocity_constraint_builder.add_start_distance(0.0);
     velocity_constraint_builder.add_end_distance(10.0);
@@ -401,7 +401,7 @@
     frc971::Constraint::Builder voltage_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     voltage_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_VOLTAGE);
+        frc971::ConstraintType::VOLTAGE);
     voltage_constraint_builder.add_value(10.0);
     voltage_constraint_offset = voltage_constraint_builder.Finish();
   }
@@ -410,7 +410,7 @@
     frc971::Constraint::Builder velocity_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     velocity_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_VELOCITY);
+        frc971::ConstraintType::VELOCITY);
     velocity_constraint_builder.add_value(3.5);
     velocity_constraint_builder.add_start_distance(0.0);
     velocity_constraint_builder.add_end_distance(10.0);
@@ -421,7 +421,7 @@
     frc971::Constraint::Builder velocity_constraint2_builder =
         builder->MakeBuilder<frc971::Constraint>();
     velocity_constraint2_builder.add_constraint_type(
-        frc971::ConstraintType_VELOCITY);
+        frc971::ConstraintType::VELOCITY);
     velocity_constraint2_builder.add_value(2.0);
     velocity_constraint2_builder.add_start_distance(6.0);
     velocity_constraint2_builder.add_end_distance(10.0);
@@ -465,7 +465,7 @@
     frc971::Constraint::Builder velocity_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     velocity_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_VELOCITY);
+        frc971::ConstraintType::VELOCITY);
     velocity_constraint_builder.add_value(0.5);
     velocity_constraint_builder.add_start_distance(0.0);
     velocity_constraint_builder.add_end_distance(10.0);
@@ -511,7 +511,7 @@
     frc971::Constraint::Builder longitudinal_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     longitudinal_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_LONGITUDINAL_ACCELERATION);
+        frc971::ConstraintType::LONGITUDINAL_ACCELERATION);
     longitudinal_constraint_builder.add_value(2.0);
     longitudinal_constraint_offset = longitudinal_constraint_builder.Finish();
   }
@@ -520,7 +520,7 @@
     frc971::Constraint::Builder lateral_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     lateral_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_LATERAL_ACCELERATION);
+        frc971::ConstraintType::LATERAL_ACCELERATION);
     lateral_constraint_builder.add_value(2.0);
     lateral_constraint_offset = lateral_constraint_builder.Finish();
   }
@@ -529,7 +529,7 @@
     frc971::Constraint::Builder voltage_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     voltage_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_VOLTAGE);
+        frc971::ConstraintType::VOLTAGE);
     voltage_constraint_builder.add_value(11.0);
     voltage_constraint_offset = voltage_constraint_builder.Finish();
   }
@@ -538,7 +538,7 @@
     frc971::Constraint::Builder velocity_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     velocity_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_VELOCITY);
+        frc971::ConstraintType::VELOCITY);
     velocity_constraint_builder.add_value(1.7);
     velocity_constraint_builder.add_start_distance(0.0);
     velocity_constraint_builder.add_end_distance(0.8);
@@ -584,7 +584,7 @@
     frc971::Constraint::Builder longitudinal_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     longitudinal_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_LONGITUDINAL_ACCELERATION);
+        frc971::ConstraintType::LONGITUDINAL_ACCELERATION);
     longitudinal_constraint_builder.add_value(1.5);
     longitudinal_constraint_offset = longitudinal_constraint_builder.Finish();
   }
@@ -593,7 +593,7 @@
     frc971::Constraint::Builder lateral_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     lateral_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_LATERAL_ACCELERATION);
+        frc971::ConstraintType::LATERAL_ACCELERATION);
     lateral_constraint_builder.add_value(1.0);
     lateral_constraint_offset = lateral_constraint_builder.Finish();
   }
@@ -602,7 +602,7 @@
     frc971::Constraint::Builder voltage_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     voltage_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_VOLTAGE);
+        frc971::ConstraintType::VOLTAGE);
     voltage_constraint_builder.add_value(11.0);
     voltage_constraint_offset = voltage_constraint_builder.Finish();
   }
@@ -611,7 +611,7 @@
     frc971::Constraint::Builder velocity_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     velocity_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_VELOCITY);
+        frc971::ConstraintType::VELOCITY);
     velocity_constraint_builder.add_value(0.5);
     velocity_constraint_builder.add_start_distance(9.5);
     velocity_constraint_builder.add_end_distance(10.0);
@@ -652,7 +652,7 @@
     frc971::Constraint::Builder longitudinal_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     longitudinal_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_LONGITUDINAL_ACCELERATION);
+        frc971::ConstraintType::LONGITUDINAL_ACCELERATION);
     longitudinal_constraint_builder.add_value(1.0);
     longitudinal_constraint_offset = longitudinal_constraint_builder.Finish();
   }
@@ -661,7 +661,7 @@
     frc971::Constraint::Builder lateral_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     lateral_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_LATERAL_ACCELERATION);
+        frc971::ConstraintType::LATERAL_ACCELERATION);
     lateral_constraint_builder.add_value(1.0);
     lateral_constraint_offset = lateral_constraint_builder.Finish();
   }
@@ -670,7 +670,7 @@
     frc971::Constraint::Builder voltage_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     voltage_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_VOLTAGE);
+        frc971::ConstraintType::VOLTAGE);
     voltage_constraint_builder.add_value(11.0);
     voltage_constraint_offset = voltage_constraint_builder.Finish();
   }
@@ -679,7 +679,7 @@
     frc971::Constraint::Builder velocity_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     velocity_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_VELOCITY);
+        frc971::ConstraintType::VELOCITY);
     velocity_constraint_builder.add_value(0.5);
     velocity_constraint_builder.add_start_distance(2.7);
     velocity_constraint_builder.add_end_distance(10.0);
@@ -719,7 +719,7 @@
     frc971::Constraint::Builder longitudinal_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     longitudinal_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_LONGITUDINAL_ACCELERATION);
+        frc971::ConstraintType::LONGITUDINAL_ACCELERATION);
     longitudinal_constraint_builder.add_value(1.0);
     longitudinal_constraint_offset = longitudinal_constraint_builder.Finish();
   }
@@ -728,7 +728,7 @@
     frc971::Constraint::Builder lateral_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     lateral_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_LATERAL_ACCELERATION);
+        frc971::ConstraintType::LATERAL_ACCELERATION);
     lateral_constraint_builder.add_value(1.0);
     lateral_constraint_offset = lateral_constraint_builder.Finish();
   }
@@ -737,7 +737,7 @@
     frc971::Constraint::Builder voltage_constraint_builder =
         builder->MakeBuilder<frc971::Constraint>();
     voltage_constraint_builder.add_constraint_type(
-        frc971::ConstraintType_VOLTAGE);
+        frc971::ConstraintType::VOLTAGE);
     voltage_constraint_builder.add_value(6.0);
     voltage_constraint_offset = voltage_constraint_builder.Finish();
   }
diff --git a/y2019/actors/autonomous_actor.cc b/y2019/actors/autonomous_actor.cc
index fbde0be..aa2c808 100644
--- a/y2019/actors/autonomous_actor.cc
+++ b/y2019/actors/autonomous_actor.cc
@@ -198,14 +198,14 @@
 
     if (!spline1.WaitForSplineDistanceRemaining(0.2)) return true;
     LineFollowAtVelocity(1.3,
-                         control_loops::drivetrain::SelectionHint_FAR_ROCKET);
+                         control_loops::drivetrain::SelectionHint::FAR_ROCKET);
     if (!WaitForMilliseconds(::std::chrono::milliseconds(1200))) return true;
 
     set_suction_goal(false, 1);
     SendSuperstructureGoal();
     if (!WaitForMilliseconds(::std::chrono::milliseconds(200))) return true;
     LineFollowAtVelocity(-1.0,
-                         control_loops::drivetrain::SelectionHint_FAR_ROCKET);
+                         control_loops::drivetrain::SelectionHint::FAR_ROCKET);
     SplineHandle spline2 =
         PlanSpline(BindIsLeft(AutonomousSplines::FarRocketToHP, is_left),
                    SplineDirection::kBackward);
@@ -240,7 +240,7 @@
     SendSuperstructureGoal();
     if (!WaitForDriveXGreater(7.1)) return true;
     LineFollowAtVelocity(-1.5,
-                         control_loops::drivetrain::SelectionHint_FAR_ROCKET);
+                         control_loops::drivetrain::SelectionHint::FAR_ROCKET);
     if (!WaitForMilliseconds(::std::chrono::milliseconds(1000))) return true;
     set_elevator_wrist_goal(kPanelBackwardUpperPos);
     SendSuperstructureGoal();
@@ -249,7 +249,7 @@
     SendSuperstructureGoal();
     if (!WaitForMilliseconds(::std::chrono::milliseconds(400))) return true;
     LineFollowAtVelocity(1.0,
-                         control_loops::drivetrain::SelectionHint_FAR_ROCKET);
+                         control_loops::drivetrain::SelectionHint::FAR_ROCKET);
     SendSuperstructureGoal();
     if (!WaitForMilliseconds(::std::chrono::milliseconds(200))) return true;
   } else if (mode == Mode::kCargoship) {
@@ -282,7 +282,7 @@
     if (!spline1.WaitForSplineDistanceRemaining(0.8)) return true;
     // Line follow in to the first disc.
     LineFollowAtVelocity(-0.9,
-                         control_loops::drivetrain::SelectionHint_MID_SHIP);
+                         control_loops::drivetrain::SelectionHint::MID_SHIP);
     if (!WaitForDriveYCloseToZero(1.2)) return true;
 
     set_suction_goal(false, 1);
@@ -294,7 +294,7 @@
     if (!WaitForMilliseconds(::std::chrono::milliseconds(300))) return true;
 
     LineFollowAtVelocity(0.9,
-                         control_loops::drivetrain::SelectionHint_MID_SHIP);
+                         control_loops::drivetrain::SelectionHint::MID_SHIP);
     SplineHandle spline2 = PlanSpline(
         BindIsLeft(AutonomousSplines::SecondCargoShipBayToHP, is_left),
         SplineDirection::kForward);
@@ -331,7 +331,7 @@
     if (!spline3.WaitForSplineDistanceRemaining(0.7)) return true;
     // Line follow in to the second disc.
     LineFollowAtVelocity(-0.7,
-                         control_loops::drivetrain::SelectionHint_FAR_SHIP);
+                         control_loops::drivetrain::SelectionHint::FAR_SHIP);
     AOS_LOG(INFO, "Drawing in disc 2 %f\n",
             ::aos::time::DurationInSeconds(monotonic_now() - start_time));
     if (!WaitForDriveYCloseToZero(1.2)) return true;
@@ -346,7 +346,7 @@
     AOS_LOG(INFO, "Backing up %f\n",
             ::aos::time::DurationInSeconds(monotonic_now() - start_time));
     LineFollowAtVelocity(0.9,
-                         control_loops::drivetrain::SelectionHint_FAR_SHIP);
+                         control_loops::drivetrain::SelectionHint::FAR_SHIP);
     if (!WaitForMilliseconds(::std::chrono::milliseconds(400))) return true;
   } else {
     // Grab the disk, wait until we have vacuum, then jump
diff --git a/y2019/control_loops/drivetrain/localized_drivetrain_test.cc b/y2019/control_loops/drivetrain/localized_drivetrain_test.cc
index 3a6bec7..24dd6c2 100644
--- a/y2019/control_loops/drivetrain/localized_drivetrain_test.cc
+++ b/y2019/control_loops/drivetrain/localized_drivetrain_test.cc
@@ -212,7 +212,7 @@
 
     Goal::Builder drivetrain_builder = builder.MakeBuilder<Goal>();
     drivetrain_builder.add_controller_type(
-        frc971::control_loops::drivetrain::ControllerType_MOTION_PROFILE);
+        frc971::control_loops::drivetrain::ControllerType::MOTION_PROFILE);
     drivetrain_builder.add_left_goal(-1.0);
     drivetrain_builder.add_right_goal(1.0);
 
@@ -233,7 +233,7 @@
 
     Goal::Builder drivetrain_builder = builder.MakeBuilder<Goal>();
     drivetrain_builder.add_controller_type(
-        frc971::control_loops::drivetrain::ControllerType_MOTION_PROFILE);
+        frc971::control_loops::drivetrain::ControllerType::MOTION_PROFILE);
     drivetrain_builder.add_left_goal(-1.0);
     drivetrain_builder.add_right_goal(1.0);
 
@@ -253,7 +253,7 @@
 
     Goal::Builder drivetrain_builder = builder.MakeBuilder<Goal>();
     drivetrain_builder.add_controller_type(
-        frc971::control_loops::drivetrain::ControllerType_MOTION_PROFILE);
+        frc971::control_loops::drivetrain::ControllerType::MOTION_PROFILE);
     drivetrain_builder.add_left_goal(-1.0);
     drivetrain_builder.add_right_goal(1.0);
 
@@ -275,7 +275,7 @@
 
     Goal::Builder drivetrain_builder = builder.MakeBuilder<Goal>();
     drivetrain_builder.add_controller_type(
-        frc971::control_loops::drivetrain::ControllerType_MOTION_PROFILE);
+        frc971::control_loops::drivetrain::ControllerType::MOTION_PROFILE);
     drivetrain_builder.add_left_goal(-1.0);
     drivetrain_builder.add_right_goal(1.0);
 
@@ -304,7 +304,7 @@
 
     Goal::Builder drivetrain_builder = builder.MakeBuilder<Goal>();
     drivetrain_builder.add_controller_type(
-        frc971::control_loops::drivetrain::ControllerType_MOTION_PROFILE);
+        frc971::control_loops::drivetrain::ControllerType::MOTION_PROFILE);
     drivetrain_builder.add_left_goal(-1.0);
     drivetrain_builder.add_right_goal(1.0);
 
@@ -340,7 +340,7 @@
 
     Goal::Builder drivetrain_builder = builder.MakeBuilder<Goal>();
     drivetrain_builder.add_controller_type(
-        frc971::control_loops::drivetrain::ControllerType_MOTION_PROFILE);
+        frc971::control_loops::drivetrain::ControllerType::MOTION_PROFILE);
     drivetrain_builder.add_left_goal(-1.0);
     drivetrain_builder.add_right_goal(1.0);
 
@@ -368,7 +368,7 @@
 
     Goal::Builder drivetrain_builder = builder.MakeBuilder<Goal>();
     drivetrain_builder.add_controller_type(
-        frc971::control_loops::drivetrain::ControllerType_LINE_FOLLOWER);
+        frc971::control_loops::drivetrain::ControllerType::LINE_FOLLOWER);
     drivetrain_builder.add_throttle(0.5);
 
     EXPECT_TRUE(builder.Send(drivetrain_builder.Finish()));
diff --git a/y2019/control_loops/drivetrain/localizer_test.cc b/y2019/control_loops/drivetrain/localizer_test.cc
index fbce275..319065e 100644
--- a/y2019/control_loops/drivetrain/localizer_test.cc
+++ b/y2019/control_loops/drivetrain/localizer_test.cc
@@ -178,7 +178,7 @@
 
       goal_builder.add_spline(spline_offset);
       goal_builder.add_controller_type(
-          frc971::control_loops::drivetrain::ControllerType_SPLINE_FOLLOWER);
+          frc971::control_loops::drivetrain::ControllerType::SPLINE_FOLLOWER);
       goal_builder.add_spline_handle(1);
 
       fbb.Finish(goal_builder.Finish());
@@ -211,7 +211,7 @@
           status(fbb.Release());
 
       if (status.message().trajectory_logging()->planning_state() ==
-          ::frc971::control_loops::drivetrain::PlanningState_PLANNED) {
+          ::frc971::control_loops::drivetrain::PlanningState::PLANNED) {
         break;
       }
     }
diff --git a/y2019/control_loops/drivetrain/target_selector.cc b/y2019/control_loops/drivetrain/target_selector.cc
index 7f2259d..87115ae 100644
--- a/y2019/control_loops/drivetrain/target_selector.cc
+++ b/y2019/control_loops/drivetrain/target_selector.cc
@@ -28,9 +28,8 @@
   if (hint_fetcher_.Fetch()) {
     VLOG(1) << "selector_hint: " << aos::FlatbufferToJson(hint_fetcher_.get());
     // suggested_target is unsigned so we don't check for >= 0.
-    if (hint_fetcher_->suggested_target() < 4) {
-      target_hint_ =
-          static_cast<SelectionHint>(hint_fetcher_->suggested_target());
+    if (hint_fetcher_->suggested_target() < drivetrain::SelectionHint::MAX) {
+      target_hint_ = hint_fetcher_->suggested_target();
     } else {
       AOS_LOG(ERROR, "Got invalid suggested target.\n");
     }
@@ -64,30 +63,30 @@
       continue;
     }
     switch (target_hint_) {
-      case SelectionHint::kNearShip:
+      case drivetrain::SelectionHint::NEAR_SHIP:
         if (view.target->target_type() !=
             Target::TargetType::kNearSideCargoBay) {
           continue;
         }
         break;
-      case SelectionHint::kMidShip:
+      case drivetrain::SelectionHint::MID_SHIP:
         if (view.target->target_type() !=
             Target::TargetType::kMidSideCargoBay) {
           continue;
         }
         break;
-      case SelectionHint::kFarShip:
+      case drivetrain::SelectionHint::FAR_SHIP:
         if (view.target->target_type() !=
             Target::TargetType::kFarSideCargoBay) {
           continue;
         }
         break;
-      case SelectionHint::kFarRocket:
+      case drivetrain::SelectionHint::FAR_ROCKET:
         if (view.target->target_type() != Target::TargetType::kFarRocket) {
           continue;
         }
         break;
-      case SelectionHint::kNone:
+      case drivetrain::SelectionHint::NONE:
       default:
         break;
     }
diff --git a/y2019/control_loops/drivetrain/target_selector.fbs b/y2019/control_loops/drivetrain/target_selector.fbs
index d264992..f7a3291 100644
--- a/y2019/control_loops/drivetrain/target_selector.fbs
+++ b/y2019/control_loops/drivetrain/target_selector.fbs
@@ -1,7 +1,7 @@
 namespace y2019.control_loops.drivetrain;
 
 // These should match the SelectionHint enum in target_selector.h.
-enum SelectionHint : byte {
+enum SelectionHint : ubyte {
   // No selection, we should just default to whatever.
   NONE,
   // Near, middle, and far targets.
diff --git a/y2019/control_loops/drivetrain/target_selector.h b/y2019/control_loops/drivetrain/target_selector.h
index e75e122..4ab65ef 100644
--- a/y2019/control_loops/drivetrain/target_selector.h
+++ b/y2019/control_loops/drivetrain/target_selector.h
@@ -29,16 +29,6 @@
   typedef TypedCamera<y2019::constants::Field::kNumTargets,
                       /*num_obstacles=*/0, double> FakeCamera;
 
-  enum class SelectionHint {
-    // No hint
-    kNone = 0,
-    // Cargo ship bays
-    kNearShip = 1,
-    kMidShip = 2,
-    kFarShip = 3,
-    kFarRocket = 4,
-  };
-
   TargetSelector(::aos::EventLoop *event_loop);
 
   bool UpdateSelection(const ::Eigen::Matrix<double, 5, 1> &state,
@@ -72,7 +62,7 @@
 
   // Whether we are currently in ball mode.
   bool ball_mode_ = false;
-  SelectionHint target_hint_ = SelectionHint::kNone;
+  drivetrain::SelectionHint target_hint_ = drivetrain::SelectionHint::NONE;
 };
 
 }  // namespace control_loops
diff --git a/y2019/control_loops/drivetrain/target_selector_test.cc b/y2019/control_loops/drivetrain/target_selector_test.cc
index 90ca830..43a0456 100644
--- a/y2019/control_loops/drivetrain/target_selector_test.cc
+++ b/y2019/control_loops/drivetrain/target_selector_test.cc
@@ -118,7 +118,7 @@
         // targets:
         TestParams{(State() << 0.0, 0.0, 0.0, 1.0, 1.0).finished(),
                    /*ball_mode=*/false,
-                   drivetrain::SelectionHint_NONE,
+                   drivetrain::SelectionHint::NONE,
                    1.0,
                    false,
                    {},
@@ -127,43 +127,43 @@
         // anything.
         TestParams{(State() << 4.0, 2.0, M_PI, 0.05, 0.05).finished(),
                    /*ball_mode=*/false,
-                   drivetrain::SelectionHint_NONE,
+                   drivetrain::SelectionHint::NONE,
                    0.05,
                    false,
                    {},
                    /*expected_radius=*/0.0},
         TestParams{(State() << 4.0, 2.0, M_PI, -0.05, -0.05).finished(),
                    /*ball_mode=*/false,
-                   drivetrain::SelectionHint_NONE,
+                   drivetrain::SelectionHint::NONE,
                    -0.05,
                    false,
                    {},
                    /*expected_radius=*/0.0},
         TestParams{(State() << 4.0, 2.0, M_PI, 0.5, 0.5).finished(),
-                   /*ball_mode=*/false, drivetrain::SelectionHint_NONE, 1.0,
+                   /*ball_mode=*/false, drivetrain::SelectionHint::NONE, 1.0,
                    true, HPSlotLeft(), /*expected_radius=*/0.0},
         // Put ourselves between the rocket and cargo ship; we should see the
         // hatches driving one direction and the near cargo ship port the other.
         // We also command a speed opposite the current direction of motion and
         // confirm that that behaves as expected.
         TestParams{(State() << 6.0, 2.0, -M_PI_2, -0.5, -0.5).finished(),
-                   /*ball_mode=*/false, drivetrain::SelectionHint_NONE, 1.0,
+                   /*ball_mode=*/false, drivetrain::SelectionHint::NONE, 1.0,
                    true, CargoNearLeft(), /*expected_radius=*/HatchRadius()},
         TestParams{(State() << 6.0, 2.0, M_PI_2, 0.5, 0.5).finished(),
-                   /*ball_mode=*/false, drivetrain::SelectionHint_NONE, -1.0,
+                   /*ball_mode=*/false, drivetrain::SelectionHint::NONE, -1.0,
                    true, CargoNearLeft(), /*expected_radius=*/HatchRadius()},
         TestParams{(State() << 6.0, 2.0, -M_PI_2, 0.5, 0.5).finished(),
-                   /*ball_mode=*/false, drivetrain::SelectionHint_NONE, -1.0,
+                   /*ball_mode=*/false, drivetrain::SelectionHint::NONE, -1.0,
                    true, RocketHatchFarLeft(),
                    /*expected_radius=*/HatchRadius()},
         TestParams{(State() << 6.0, 2.0, M_PI_2, -0.5, -0.5).finished(),
-                   /*ball_mode=*/false, drivetrain::SelectionHint_NONE, 1.0,
+                   /*ball_mode=*/false, drivetrain::SelectionHint::NONE, 1.0,
                    true, RocketHatchFarLeft(),
                    /*expected_radius=*/HatchRadius()},
         // And we shouldn't see anything spinning in place:
         TestParams{(State() << 6.0, 2.0, M_PI_2, -0.5, 0.5).finished(),
                    /*ball_mode=*/false,
-                   drivetrain::SelectionHint_NONE,
+                   drivetrain::SelectionHint::NONE,
                    0.0,
                    false,
                    {},
@@ -171,7 +171,7 @@
         // Drive backwards off the field--we should not see anything.
         TestParams{(State() << -0.1, 0.0, 0.0, -0.5, -0.5).finished(),
                    /*ball_mode=*/false,
-                   drivetrain::SelectionHint_NONE,
+                   drivetrain::SelectionHint::NONE,
                    -1.0,
                    false,
                    {},
@@ -179,12 +179,12 @@
         // In ball mode, we should be able to see the portal, and get zero
         // radius.
         TestParams{(State() << 6.0, 2.0, M_PI_2, 0.5, 0.5).finished(),
-                   /*ball_mode=*/true, drivetrain::SelectionHint_NONE, 1.0,
+                   /*ball_mode=*/true, drivetrain::SelectionHint::NONE, 1.0,
                    true, RocketPortal(),
                    /*expected_radius=*/0.0},
         // Reversing direction should get cargo ship with zero radius.
         TestParams{(State() << 6.0, 2.0, M_PI_2, 0.5, 0.5).finished(),
-                   /*ball_mode=*/true, drivetrain::SelectionHint_NONE, -1.0,
+                   /*ball_mode=*/true, drivetrain::SelectionHint::NONE, -1.0,
                    true, CargoNearLeft(),
                    /*expected_radius=*/0.0}));
 
diff --git a/y2019/joystick_reader.cc b/y2019/joystick_reader.cc
index 427fc6d..0f37112 100644
--- a/y2019/joystick_reader.cc
+++ b/y2019/joystick_reader.cc
@@ -258,28 +258,28 @@
                   .MakeBuilder<control_loops::drivetrain::TargetSelectorHint>();
       if (data.IsPressed(kNearCargoHint)) {
         target_selector_hint_builder.add_suggested_target(
-            control_loops::drivetrain::SelectionHint_NEAR_SHIP);
+            control_loops::drivetrain::SelectionHint::NEAR_SHIP);
       } else if (data.IsPressed(kMidCargoHint)) {
         target_selector_hint_builder.add_suggested_target(
-            control_loops::drivetrain::SelectionHint_MID_SHIP);
+            control_loops::drivetrain::SelectionHint::MID_SHIP);
       } else if (data.IsPressed(kFarCargoHint)) {
         target_selector_hint_builder.add_suggested_target(
-            control_loops::drivetrain::SelectionHint_FAR_SHIP);
+            control_loops::drivetrain::SelectionHint::FAR_SHIP);
       } else {
         const double cargo_joy_y = data.GetAxis(kCargoSelectorY);
         const double cargo_joy_x = data.GetAxis(kCargoSelectorX);
         if (cargo_joy_y > 0.5) {
           target_selector_hint_builder.add_suggested_target(
-            control_loops::drivetrain::SelectionHint_NEAR_SHIP);
+            control_loops::drivetrain::SelectionHint::NEAR_SHIP);
         } else if (cargo_joy_y < -0.5) {
           target_selector_hint_builder.add_suggested_target(
-              control_loops::drivetrain::SelectionHint_FAR_SHIP);
+              control_loops::drivetrain::SelectionHint::FAR_SHIP);
         } else if (::std::abs(cargo_joy_x) > 0.5) {
           target_selector_hint_builder.add_suggested_target(
-            control_loops::drivetrain::SelectionHint_MID_SHIP);
+            control_loops::drivetrain::SelectionHint::MID_SHIP);
         } else {
           target_selector_hint_builder.add_suggested_target(
-            control_loops::drivetrain::SelectionHint_NONE);
+            control_loops::drivetrain::SelectionHint::NONE);
         }
       }
       if (!builder.Send(target_selector_hint_builder.Finish())) {