Third robot commit.

All tests pass!

Change-Id: I086248537f075fd06afdfb3e94670eb7646aaf6c
diff --git a/frc971/control_loops/drivetrain/drivetrain.cc b/frc971/control_loops/drivetrain/drivetrain.cc
index f2b14a9..5757b58 100644
--- a/frc971/control_loops/drivetrain/drivetrain.cc
+++ b/frc971/control_loops/drivetrain/drivetrain.cc
@@ -107,6 +107,8 @@
       right_gear_ = ComputeGear(position->right_shifter_position,
                                 dt_config_.right_drive, right_high_requested_);
       break;
+    case ShifterType::NO_SHIFTER:
+      break;
   }
 
   kf_.set_controller_index(ControllerIndexFromGears());
diff --git a/frc971/control_loops/drivetrain/drivetrain_config.h b/frc971/control_loops/drivetrain/drivetrain_config.h
index ea76ca9..24cc628 100644
--- a/frc971/control_loops/drivetrain/drivetrain_config.h
+++ b/frc971/control_loops/drivetrain/drivetrain_config.h
@@ -12,11 +12,12 @@
 
 enum class ShifterType : int32_t {
   HALL_EFFECT_SHIFTER = 0,  // Detect when inbetween gears.
-  SIMPLE_SHIFTER = 1,  // Switch gears without speedmatch logic.
+  SIMPLE_SHIFTER = 1,       // Switch gears without speedmatch logic.
+  NO_SHIFTER = 2,           // Only one gear ratio.
 };
 
 enum class LoopType : int32_t {
-  OPEN_LOOP = 0,  // Only use open loop logic.
+  OPEN_LOOP = 0,    // Only use open loop logic.
   CLOSED_LOOP = 1,  // Add in closed loop calculation.
 };
 
@@ -32,10 +33,10 @@
   ::std::function<StateFeedbackLoop<2, 2, 2>()> make_v_drivetrain_loop;
   ::std::function<StateFeedbackLoop<7, 2, 3>()> make_kf_drivetrain_loop;
 
-  double dt;  // Control loop time step.
+  double dt;            // Control loop time step.
   double robot_radius;  // Robot radius, in meters.
   double wheel_radius;  // Wheel radius, in meters.
-  double v;  // Motor velocity constant.
+  double v;             // Motor velocity constant.
 
   // Gear ratios, from wheel to motor shaft.
   double high_gear_ratio;