Switch to c++11 enums for flatbuffers

Change-Id: I99171464bf54efbb7eb322c556760dee86648f5e
diff --git a/frc971/autonomous/base_autonomous_actor.cc b/frc971/autonomous/base_autonomous_actor.cc
index dee2931..27b63cc 100644
--- a/frc971/autonomous/base_autonomous_actor.cc
+++ b/frc971/autonomous/base_autonomous_actor.cc
@@ -47,7 +47,7 @@
 
   drivetrain::Goal::Builder goal_builder =
       builder.MakeBuilder<drivetrain::Goal>();
-  goal_builder.add_controller_type(drivetrain::ControllerType_POLYDRIVE);
+  goal_builder.add_controller_type(drivetrain::ControllerType::POLYDRIVE);
   goal_builder.add_highgear(true);
   goal_builder.add_wheel(0.0);
   goal_builder.add_throttle(0.0);
@@ -85,7 +85,7 @@
   drivetrain::Goal::Builder goal_builder =
       builder.MakeBuilder<drivetrain::Goal>();
 
-  goal_builder.add_controller_type(drivetrain::ControllerType_MOTION_PROFILE);
+  goal_builder.add_controller_type(drivetrain::ControllerType::MOTION_PROFILE);
   goal_builder.add_highgear(true);
   goal_builder.add_wheel(0.0);
   goal_builder.add_throttle(0.0);
@@ -420,7 +420,7 @@
     drivetrain::Goal::Builder goal_builder =
         builder.MakeBuilder<drivetrain::Goal>();
     goal_builder.add_controller_type(
-        drivetrain::ControllerType_SPLINE_FOLLOWER);
+        drivetrain::ControllerType::SPLINE_FOLLOWER);
     // TODO(james): Currently the 4.0 is copied from the
     // line_follow_drivetrain.cc, but it is somewhat year-specific, so we should
     // factor it out in some way.
@@ -469,7 +469,7 @@
       builder.MakeBuilder<drivetrain::Goal>();
 
   drivetrain::ControllerType controller_type =
-      drivetrain::ControllerType_SPLINE_FOLLOWER;
+      drivetrain::ControllerType::SPLINE_FOLLOWER;
   if (drivetrain_goal_fetcher_.get()) {
     controller_type = drivetrain_goal_fetcher_->controller_type();
     goal_builder.add_throttle(drivetrain_goal_fetcher_->throttle());
@@ -493,7 +493,7 @@
       ((base_autonomous_actor_->drivetrain_status_fetcher_->trajectory_logging()
                 ->planning_spline_idx() == spline_handle_ &&
         base_autonomous_actor_->drivetrain_status_fetcher_->trajectory_logging()
-                ->planning_state() == 3) ||
+                ->planning_state() == drivetrain::PlanningState::PLANNED) ||
        base_autonomous_actor_->drivetrain_status_fetcher_->trajectory_logging()
                ->current_spline_idx() == spline_handle_)) {
     return true;
@@ -521,7 +521,7 @@
   auto builder = base_autonomous_actor_->drivetrain_goal_sender_.MakeBuilder();
   drivetrain::Goal::Builder goal_builder =
       builder.MakeBuilder<drivetrain::Goal>();
-  goal_builder.add_controller_type(drivetrain::ControllerType_SPLINE_FOLLOWER);
+  goal_builder.add_controller_type(drivetrain::ControllerType::SPLINE_FOLLOWER);
 
   AOS_LOG(INFO, "Starting spline\n");
 
diff --git a/frc971/autonomous/base_autonomous_actor.h b/frc971/autonomous/base_autonomous_actor.h
index 09d9a0e..9444389 100644
--- a/frc971/autonomous/base_autonomous_actor.h
+++ b/frc971/autonomous/base_autonomous_actor.h
@@ -85,7 +85,7 @@
   void LineFollowAtVelocity(
       double velocity,
       y2019::control_loops::drivetrain::SelectionHint hint =
-          y2019::control_loops::drivetrain::SelectionHint_NONE);
+          y2019::control_loops::drivetrain::SelectionHint::NONE);
 
   // Waits until the robot is pitched up above the specified angle, or the move
   // finishes.  Returns true on success, and false if it cancels.
diff --git a/frc971/control_loops/drivetrain/drivetrain.cc b/frc971/control_loops/drivetrain/drivetrain.cc
index 42f0935..63caaab 100644
--- a/frc971/control_loops/drivetrain/drivetrain.cc
+++ b/frc971/control_loops/drivetrain/drivetrain.cc
@@ -257,7 +257,7 @@
 
   dt_openloop_.SetPosition(position, left_gear_, right_gear_);
 
-  ControllerType controller_type = ControllerType_POLYDRIVE;
+  ControllerType controller_type = ControllerType::POLYDRIVE;
   if (goal) {
     controller_type = goal->controller_type();
 
@@ -271,7 +271,7 @@
   dt_openloop_.Update(robot_state().voltage_battery());
 
   dt_closedloop_.Update(output != nullptr &&
-                        controller_type == ControllerType_MOTION_PROFILE);
+                        controller_type == ControllerType::MOTION_PROFILE);
 
   const Eigen::Matrix<double, 5, 1> trajectory_state =
       (Eigen::Matrix<double, 5, 1>() << localizer_->x(), localizer_->y(),
@@ -280,7 +280,7 @@
           .finished();
 
   dt_spline_.Update(
-      output != nullptr && controller_type == ControllerType_SPLINE_FOLLOWER,
+      output != nullptr && controller_type == ControllerType::SPLINE_FOLLOWER,
       trajectory_state);
 
   dt_line_follow_.Update(monotonic_now, trajectory_state);
@@ -288,16 +288,16 @@
   OutputT output_struct;
 
   switch (controller_type) {
-    case ControllerType_POLYDRIVE:
+    case ControllerType::POLYDRIVE:
       dt_openloop_.SetOutput(output != nullptr ? &output_struct : nullptr);
       break;
-    case ControllerType_MOTION_PROFILE:
+    case ControllerType::MOTION_PROFILE:
       dt_closedloop_.SetOutput(output != nullptr ? &output_struct : nullptr);
       break;
-    case ControllerType_SPLINE_FOLLOWER:
+    case ControllerType::SPLINE_FOLLOWER:
       dt_spline_.SetOutput(output != nullptr ? &output_struct : nullptr);
       break;
-    case ControllerType_LINE_FOLLOWER:
+    case ControllerType::LINE_FOLLOWER:
       if (!dt_line_follow_.SetOutput(output != nullptr ? &output_struct
                                                        : nullptr)) {
         // If the line follow drivetrain was unable to execute (generally due to
diff --git a/frc971/control_loops/drivetrain/drivetrain_lib_test.cc b/frc971/control_loops/drivetrain/drivetrain_lib_test.cc
index 05b870b..3b668dd 100644
--- a/frc971/control_loops/drivetrain/drivetrain_lib_test.cc
+++ b/frc971/control_loops/drivetrain/drivetrain_lib_test.cc
@@ -93,8 +93,7 @@
       RunFor(dt());
       EXPECT_TRUE(drivetrain_status_fetcher_.Fetch());
     } while (CHECK_NOTNULL(drivetrain_status_fetcher_->trajectory_logging())
-                 ->planning_state() !=
-             (int8_t)SplineDrivetrain::PlanState::kPlannedTrajectory);
+                 ->planning_state() != PlanningState::PLANNED);
   }
 
   void WaitForTrajectoryExecution() {
@@ -132,7 +131,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_MOTION_PROFILE);
+    goal_builder.add_controller_type(ControllerType::MOTION_PROFILE);
     goal_builder.add_left_goal(-1.0);
     goal_builder.add_right_goal(1.0);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
@@ -148,7 +147,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_MOTION_PROFILE);
+    goal_builder.add_controller_type(ControllerType::MOTION_PROFILE);
     goal_builder.add_left_goal(-1.0);
     goal_builder.add_right_goal(1.0);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
@@ -164,7 +163,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_MOTION_PROFILE);
+    goal_builder.add_controller_type(ControllerType::MOTION_PROFILE);
     goal_builder.add_left_goal(-1.0);
     goal_builder.add_right_goal(1.0);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
@@ -194,7 +193,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_MOTION_PROFILE);
+    goal_builder.add_controller_type(ControllerType::MOTION_PROFILE);
     goal_builder.add_left_goal(4.0);
     goal_builder.add_right_goal(4.0);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
@@ -218,7 +217,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_MOTION_PROFILE);
+    goal_builder.add_controller_type(ControllerType::MOTION_PROFILE);
     goal_builder.add_left_goal(4.0);
     goal_builder.add_right_goal(3.9);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
@@ -277,7 +276,7 @@
         angular_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_MOTION_PROFILE);
+    goal_builder.add_controller_type(ControllerType::MOTION_PROFILE);
     goal_builder.add_left_goal(4.0);
     goal_builder.add_right_goal(4.0);
     goal_builder.add_linear(linear_offset);
@@ -318,7 +317,7 @@
         angular_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_MOTION_PROFILE);
+    goal_builder.add_controller_type(ControllerType::MOTION_PROFILE);
     goal_builder.add_left_goal(-1.0);
     goal_builder.add_right_goal(1.0);
     goal_builder.add_linear(linear_offset);
@@ -359,7 +358,7 @@
         angular_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_MOTION_PROFILE);
+    goal_builder.add_controller_type(ControllerType::MOTION_PROFILE);
     goal_builder.add_left_goal(5.0);
     goal_builder.add_right_goal(4.0);
     goal_builder.add_linear(linear_offset);
@@ -381,7 +380,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_POLYDRIVE);
+    goal_builder.add_controller_type(ControllerType::POLYDRIVE);
     goal_builder.add_wheel(0.0);
     goal_builder.add_throttle(1.0);
     goal_builder.add_highgear(true);
@@ -394,7 +393,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_POLYDRIVE);
+    goal_builder.add_controller_type(ControllerType::POLYDRIVE);
     goal_builder.add_wheel(0.0);
     goal_builder.add_throttle(-0.3);
     goal_builder.add_highgear(true);
@@ -407,7 +406,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_POLYDRIVE);
+    goal_builder.add_controller_type(ControllerType::POLYDRIVE);
     goal_builder.add_wheel(0.0);
     goal_builder.add_throttle(0.0);
     goal_builder.add_highgear(true);
@@ -434,7 +433,7 @@
         angular_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_MOTION_PROFILE);
+    goal_builder.add_controller_type(ControllerType::MOTION_PROFILE);
     goal_builder.add_left_goal(5.0);
     goal_builder.add_right_goal(4.0);
     goal_builder.add_linear(linear_offset);
@@ -483,7 +482,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -493,7 +492,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(1);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -532,7 +531,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -541,7 +540,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(1);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -597,7 +596,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     goal_builder.add_spline_handle(1);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
@@ -637,7 +636,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     goal_builder.add_spline_handle(1);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
@@ -655,7 +654,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(0);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -700,7 +699,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     goal_builder.add_spline_handle(1);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
@@ -718,7 +717,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(0);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -728,7 +727,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(1);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -773,7 +772,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -782,7 +781,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(1);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -822,7 +821,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -831,7 +830,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(1);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -872,7 +871,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -881,7 +880,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(1);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -920,7 +919,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -929,7 +928,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(1);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -966,7 +965,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -976,7 +975,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(2);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -1014,7 +1013,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(1);
     goal_builder.add_spline(spline_goal_offset);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
@@ -1027,7 +1026,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(0);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -1060,7 +1059,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     goal_builder.add_spline_handle(2);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
@@ -1101,7 +1100,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     goal_builder.add_spline_handle(0);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
@@ -1137,7 +1136,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     goal_builder.add_spline_handle(0);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
@@ -1148,7 +1147,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(2);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -1187,7 +1186,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -1220,7 +1219,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     goal_builder.add_spline_handle(1);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
@@ -1231,7 +1230,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(2);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -1269,7 +1268,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -1280,7 +1279,7 @@
     drivetrain_status_fetcher_.Fetch();
     EXPECT_EQ(CHECK_NOTNULL(drivetrain_status_fetcher_->trajectory_logging())
                   ->planning_state(),
-              3);
+              PlanningState::PLANNED);
     ::std::this_thread::sleep_for(::std::chrono::milliseconds(2));
   }
   VerifyNearSplineGoal();
@@ -1315,7 +1314,7 @@
         spline_goal_builder.Finish();
 
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline(spline_goal_offset);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -1326,7 +1325,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_SPLINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::SPLINE_FOLLOWER);
     goal_builder.add_spline_handle(1);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -1344,7 +1343,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_LINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::LINE_FOLLOWER);
     goal_builder.add_throttle(0.5);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
@@ -1381,7 +1380,7 @@
   {
     auto builder = drivetrain_goal_sender_.MakeBuilder();
     Goal::Builder goal_builder = builder.MakeBuilder<Goal>();
-    goal_builder.add_controller_type(ControllerType_LINE_FOLLOWER);
+    goal_builder.add_controller_type(ControllerType::LINE_FOLLOWER);
     goal_builder.add_throttle(0.5);
     EXPECT_TRUE(builder.Send(goal_builder.Finish()));
   }
diff --git a/frc971/control_loops/drivetrain/line_follow_drivetrain.cc b/frc971/control_loops/drivetrain/line_follow_drivetrain.cc
index 7c92f8b..1e2c76f 100644
--- a/frc971/control_loops/drivetrain/line_follow_drivetrain.cc
+++ b/frc971/control_loops/drivetrain/line_follow_drivetrain.cc
@@ -115,7 +115,7 @@
   // Freeze the target once the driver presses the button; if we haven't yet
   // confirmed a target when the driver presses the button, we will not do
   // anything and report not ready until we have a target.
-  if (goal->controller_type() == drivetrain::ControllerType_LINE_FOLLOWER) {
+  if (goal->controller_type() == drivetrain::ControllerType::LINE_FOLLOWER) {
     last_enable_ = now;
     // If we already acquired a target, we want to keep track if it.
     if (have_target_) {
diff --git a/frc971/control_loops/drivetrain/line_follow_drivetrain_test.cc b/frc971/control_loops/drivetrain/line_follow_drivetrain_test.cc
index bd45e92..180af4b 100644
--- a/frc971/control_loops/drivetrain/line_follow_drivetrain_test.cc
+++ b/frc971/control_loops/drivetrain/line_follow_drivetrain_test.cc
@@ -55,8 +55,8 @@
     Goal::Builder goal_builder(fbb);
     goal_builder.add_throttle(driver_model_(state_));
     goal_builder.add_controller_type(freeze_target_
-                                         ? ControllerType_LINE_FOLLOWER
-                                         : ControllerType_POLYDRIVE);
+                                         ? ControllerType::LINE_FOLLOWER
+                                         : ControllerType::POLYDRIVE);
     fbb.Finish(goal_builder.Finish());
 
     aos::FlatbufferDetachedBuffer<Goal> goal(fbb.Release());
diff --git a/frc971/control_loops/drivetrain/splinedrivetrain.cc b/frc971/control_loops/drivetrain/splinedrivetrain.cc
index bfd0c96..2790978 100644
--- a/frc971/control_loops/drivetrain/splinedrivetrain.cc
+++ b/frc971/control_loops/drivetrain/splinedrivetrain.cc
@@ -42,7 +42,7 @@
     past_distance_spline_.reset();
     past_trajectory_.reset();
 
-    plan_state_ = PlanningState_BUILDING_TRAJECTORY;
+    plan_state_ = PlanningState::BUILDING_TRAJECTORY;
     future_spline_idx_ = goal_.spline_idx;
     planning_spline_idx_ = future_spline_idx_;
     const MultiSpline &multispline = goal_.spline;
@@ -70,28 +70,28 @@
     for (size_t i = 0; i < multispline.constraints.size(); ++i) {
       const ::frc971::ConstraintT &constraint = multispline.constraints[i];
       switch (constraint.constraint_type) {
-        case frc971::ConstraintType_CONSTRAINT_TYPE_UNDEFINED:
+        case frc971::ConstraintType::CONSTRAINT_TYPE_UNDEFINED:
           break;
-        case frc971::ConstraintType_LONGITUDINAL_ACCELERATION:
+        case frc971::ConstraintType::LONGITUDINAL_ACCELERATION:
           future_trajectory_->set_longitudinal_acceleration(constraint.value);
           break;
-        case frc971::ConstraintType_LATERAL_ACCELERATION:
+        case frc971::ConstraintType::LATERAL_ACCELERATION:
           future_trajectory_->set_lateral_acceleration(constraint.value);
           break;
-        case frc971::ConstraintType_VOLTAGE:
+        case frc971::ConstraintType::VOLTAGE:
           future_trajectory_->set_voltage_limit(constraint.value);
           break;
-        case frc971::ConstraintType_VELOCITY:
+        case frc971::ConstraintType::VELOCITY:
           future_trajectory_->LimitVelocity(constraint.start_distance,
                                             constraint.end_distance,
                                             constraint.value);
           break;
       }
     }
-    plan_state_ = PlanningState_PLANNING_TRAJECTORY;
+    plan_state_ = PlanningState::PLANNING_TRAJECTORY;
 
     future_trajectory_->Plan();
-    plan_state_ = PlanningState_PLANNED;
+    plan_state_ = PlanningState::PLANNED;
   }
 }
 
@@ -137,7 +137,7 @@
               &goal_.spline.constraints[i]);
         } else {
           goal_.spline.constraints[i].constraint_type =
-              ConstraintType_CONSTRAINT_TYPE_UNDEFINED;
+              ConstraintType::CONSTRAINT_TYPE_UNDEFINED;
         }
       }
 
diff --git a/frc971/control_loops/drivetrain/splinedrivetrain.h b/frc971/control_loops/drivetrain/splinedrivetrain.h
index 4f21b29..b28334c 100644
--- a/frc971/control_loops/drivetrain/splinedrivetrain.h
+++ b/frc971/control_loops/drivetrain/splinedrivetrain.h
@@ -95,7 +95,7 @@
   bool enable_ = false;
   bool output_was_capped_ = false;
 
-  std::atomic<PlanningState> plan_state_ = {PlanningState_NO_PLAN};
+  std::atomic<PlanningState> plan_state_ = {PlanningState::NO_PLAN};
 
   ::std::thread worker_thread_;
   // mutex_ is held by the worker thread while it is doing work or by the main