Removed support for dual analog hall effect sensors for shifters

Change-Id: Ie521511f5181140de44c35385aac0b01b5116c06
diff --git a/frc971/control_loops/drivetrain/drivetrain_lib_test.cc b/frc971/control_loops/drivetrain/drivetrain_lib_test.cc
index c66a4e3..5cc15d1 100644
--- a/frc971/control_loops/drivetrain/drivetrain_lib_test.cc
+++ b/frc971/control_loops/drivetrain/drivetrain_lib_test.cc
@@ -31,8 +31,8 @@
 
 // TODO(Comran): Make one that doesn't depend on the actual values for a
 // specific robot.
-const constants::ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0,  0.0,
-                                                           0.0, 0.25, 0.75};
+const constants::ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.25,
+                                                           0.75};
 
 const DrivetrainConfig &GetDrivetrainConfig() {
   static DrivetrainConfig kDrivetrainConfig{
diff --git a/frc971/shifter_hall_effect.h b/frc971/shifter_hall_effect.h
index aaa5ebd..991386d 100644
--- a/frc971/shifter_hall_effect.h
+++ b/frc971/shifter_hall_effect.h
@@ -4,18 +4,31 @@
 namespace frc971 {
 namespace constants {
 
-// Contains the voltages for an analog hall effect sensor on a shifter.
+// Contains the constants for mapping the analog voltages that the shifter
+// sensors return to the shifter position.  The code which uses this is trying
+// to sort out if we are in low gear, high gear, or neutral.
 struct ShifterHallEffect {
-  // The numbers to use for scaling raw voltages to 0-1.
-  // Low is near 0.0, high is near 1.0
-  double low_gear_middle, low_gear_low;
-  double high_gear_high, high_gear_middle;
+  // low_gear_low is the voltage that the shifter position sensor reads when it
+  // is all the way in low gear.  high_gear_high is the voltage that the shifter
+  // position sensor reads when it is all the way in high gear.  These two
+  // values are used to calculate a position from 0 to 1, where we get 0 when
+  // the shifter is in low gear, and 1 when it is high gear.
+  double low_gear_low;
+  double high_gear_high;
 
   // The numbers for when the dog is clear of each gear.
+  // We are in low gear when the position is less than clear_low, and in high
+  // gear when the shifter position is greater than clear_high.
   double clear_low, clear_high;
 };
 
-} // constants
-} // frc971
+struct DualHallShifterHallEffect {
+  ShifterHallEffect shifter_hall_effect;
+  double low_gear_middle;
+  double high_gear_middle;
+};
+
+}  // namespace constants
+}  // namespace frc971
 
 #endif
diff --git a/y2012/control_loops/drivetrain/drivetrain_base.cc b/y2012/control_loops/drivetrain/drivetrain_base.cc
index 8748d4d..aa8f9e4 100644
--- a/y2012/control_loops/drivetrain/drivetrain_base.cc
+++ b/y2012/control_loops/drivetrain/drivetrain_base.cc
@@ -15,7 +15,7 @@
 
 using ::frc971::constants::ShifterHallEffect;
 
-const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.0, 0.0, 0.25, 0.75};
+const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.25, 0.75};
 
 const DrivetrainConfig &GetDrivetrainConfig() {
   static DrivetrainConfig kDrivetrainConfig{
diff --git a/y2014/constants.cc b/y2014/constants.cc
index d5a29be..8354e57 100644
--- a/y2014/constants.cc
+++ b/y2014/constants.cc
@@ -39,11 +39,11 @@
 const double kPracticeLowGearRatio = kCompLowGearRatio;
 const double kPracticeHighGearRatio = kCompHighGearRatio;
 
-const ShifterHallEffect kCompLeftDriveShifter{2.61, 2.33, 4.25, 3.28, 0.2, 0.7};
-const ShifterHallEffect kCompRightDriveShifter{2.94, 4.31, 4.32, 3.25, 0.2, 0.7};
+const DualHallShifterHallEffect kCompLeftDriveShifter{{2.33, 4.25, 0.2, 0.7}, 2.61, 3.28};
+const DualHallShifterHallEffect kCompRightDriveShifter{{4.31, 4.32, 0.2, 0.7}, 2.94, 3.25};
 
-const ShifterHallEffect kPracticeLeftDriveShifter{2.80, 3.05, 4.15, 3.2, 0.2, 0.7};
-const ShifterHallEffect kPracticeRightDriveShifter{2.90, 3.75, 3.80, 2.98, 0.2, 0.7};
+const DualHallShifterHallEffect kPracticeLeftDriveShifter{{3.05, 4.15, 0.2, 0.7}, 2.80, 3.2};
+const DualHallShifterHallEffect kPracticeRightDriveShifter{{3.75, 3.80, 0.2, 0.7}, 2.90, 2.98};
 
 const double shooter_zeroing_speed = 0.05;
 const double shooter_unload_speed = 0.08;
diff --git a/y2014/constants.h b/y2014/constants.h
index 7fb2507..4ce3714 100644
--- a/y2014/constants.h
+++ b/y2014/constants.h
@@ -9,7 +9,7 @@
 namespace y2014 {
 namespace constants {
 
-using ::frc971::constants::ShifterHallEffect;
+using ::frc971::constants::DualHallShifterHallEffect;
 
 // Has all of the numbers that change for both robots and makes it easy to
 // retrieve the values for the current one.
@@ -35,7 +35,7 @@
   // gear.
   double low_gear_ratio;
   double high_gear_ratio;
-  ShifterHallEffect left_drive, right_drive;
+  DualHallShifterHallEffect left_drive, right_drive;
   bool clutch_transmission;
 
   ::std::function<StateFeedbackLoop<2, 2, 2>()> make_v_drivetrain_loop;
diff --git a/y2014/control_loops/drivetrain/drivetrain_base.cc b/y2014/control_loops/drivetrain/drivetrain_base.cc
index ffb0ee3..2c3a6f8 100644
--- a/y2014/control_loops/drivetrain/drivetrain_base.cc
+++ b/y2014/control_loops/drivetrain/drivetrain_base.cc
@@ -30,8 +30,8 @@
 
       constants::GetValues().high_gear_ratio,
       constants::GetValues().low_gear_ratio,
-      constants::GetValues().left_drive,
-      constants::GetValues().right_drive,
+      constants::GetValues().left_drive.shifter_hall_effect,
+      constants::GetValues().right_drive.shifter_hall_effect,
       true,
       0,
       0.25,
diff --git a/y2014/wpilib_interface.cc b/y2014/wpilib_interface.cc
index b5dee33..a130544 100644
--- a/y2014/wpilib_interface.cc
+++ b/y2014/wpilib_interface.cc
@@ -86,14 +86,16 @@
          (3.5 /*wheel diameter*/ * 2.54 / 100.0 * M_PI) * 2.0 / 2.0;
 }
 
-float hall_translate(const constants::ShifterHallEffect &k, float in_low,
+float hall_translate(const constants::DualHallShifterHallEffect &k, float in_low,
                      float in_high) {
   const float low_ratio =
-      0.5 * (in_low - static_cast<float>(k.low_gear_low)) /
-      static_cast<float>(k.low_gear_middle - k.low_gear_low);
+      0.5 * (in_low - static_cast<float>(k.shifter_hall_effect.low_gear_low)) /
+      static_cast<float>(k.low_gear_middle - k.shifter_hall_effect.low_gear_low);
   const float high_ratio =
-      0.5 + 0.5 * (in_high - static_cast<float>(k.high_gear_middle)) /
-                static_cast<float>(k.high_gear_high - k.high_gear_middle);
+      0.5 +
+      0.5 * (in_high - static_cast<float>(k.high_gear_middle)) /
+          static_cast<float>(k.shifter_hall_effect.high_gear_high -
+                             k.high_gear_middle);
 
   // Return low when we are below 1/2, and high when we are above 1/2.
   if (low_ratio + high_ratio < 1.0) {
diff --git a/y2014_bot3/control_loops/drivetrain/drivetrain_base.cc b/y2014_bot3/control_loops/drivetrain/drivetrain_base.cc
index afb5375..46fcb71 100644
--- a/y2014_bot3/control_loops/drivetrain/drivetrain_base.cc
+++ b/y2014_bot3/control_loops/drivetrain/drivetrain_base.cc
@@ -15,7 +15,7 @@
 
 using ::frc971::constants::ShifterHallEffect;
 
-const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.0, 0.0, 0.25, 0.75};
+const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.25, 0.75};
 
 const DrivetrainConfig &GetDrivetrainConfig() {
   static DrivetrainConfig kDrivetrainConfig{
diff --git a/y2015/constants.cc b/y2015/constants.cc
index ce78344..0ce6ef1 100644
--- a/y2015/constants.cc
+++ b/y2015/constants.cc
@@ -37,14 +37,14 @@
 const double kHighGearRatio = kLowGearRatio;
 
 const ::frc971::constants::ShifterHallEffect kCompRightDriveShifter{
-    555, 657, 660, 560, 0.2, 0.7};
+    0.0, 0.0, 0.2, 0.7};
 const ::frc971::constants::ShifterHallEffect kCompLeftDriveShifter{
-    555, 660, 644, 552, 0.2, 0.7};
+    0.0, 0.0, 0.2, 0.7};
 
 const ::frc971::constants::ShifterHallEffect kPracticeRightDriveShifter{
-    2.95, 3.95, 3.95, 2.95, 0.2, 0.7};
+    0.0, 0.0, 0.2, 0.7};
 const ::frc971::constants::ShifterHallEffect kPracticeLeftDriveShifter{
-    2.95, 4.2, 3.95, 3.0, 0.2, 0.7};
+    0.0, 0.0, 0.2, 0.7};
 const double kToteHeight = 0.3;
 
 // Set by Daniel on 2/13/15.
diff --git a/y2015/control_loops/drivetrain/drivetrain_base.cc b/y2015/control_loops/drivetrain/drivetrain_base.cc
index 26a283b..30e25f8 100644
--- a/y2015/control_loops/drivetrain/drivetrain_base.cc
+++ b/y2015/control_loops/drivetrain/drivetrain_base.cc
@@ -15,7 +15,7 @@
 
 using ::frc971::constants::ShifterHallEffect;
 
-const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.0, 0.0, 0.25, 0.75};
+const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.25, 0.75};
 
 const DrivetrainConfig &GetDrivetrainConfig() {
   static DrivetrainConfig kDrivetrainConfig{
diff --git a/y2015_bot3/control_loops/drivetrain/drivetrain_base.cc b/y2015_bot3/control_loops/drivetrain/drivetrain_base.cc
index f7c3d2f..3af05b9 100644
--- a/y2015_bot3/control_loops/drivetrain/drivetrain_base.cc
+++ b/y2015_bot3/control_loops/drivetrain/drivetrain_base.cc
@@ -15,7 +15,7 @@
 
 using ::frc971::constants::ShifterHallEffect;
 
-const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.0, 0.0, 0.25, 0.75};
+const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.25, 0.75};
 
 const DrivetrainConfig &GetDrivetrainConfig() {
   static DrivetrainConfig kDrivetrainConfig{
diff --git a/y2015_bot3/control_loops/drivetrain/drivetrain_base.h b/y2015_bot3/control_loops/drivetrain/drivetrain_base.h
index 130d549..1614b88 100644
--- a/y2015_bot3/control_loops/drivetrain/drivetrain_base.h
+++ b/y2015_bot3/control_loops/drivetrain/drivetrain_base.h
@@ -15,10 +15,10 @@
     kDrivetrainEncoderRatio * 18.0 / 60.0;
 constexpr double kDrivetrainLowGearRatio = kDrivetrainHighGearRatio;
 const bool kDrivetrainClutchTransmission = false;
-const ::frc971::constants::ShifterHallEffect kDrivetrainRightShifter{
-    555, 657, 660, 560, 0.2, 0.7};
-const ::frc971::constants::ShifterHallEffect kDrivetrainLeftShifter{
-    555, 660, 644, 552, 0.2, 0.7};
+const ::frc971::constants::ShifterHallEffect kDrivetrainRightShifter{0.0, 0.0,
+                                                                     0.2, 0.7};
+const ::frc971::constants::ShifterHallEffect kDrivetrainLeftShifter{0.0, 0.0,
+                                                                    0.2, 0.7};
 // End constants
 
 const ::frc971::control_loops::drivetrain::DrivetrainConfig &
diff --git a/y2016/control_loops/drivetrain/drivetrain_base.cc b/y2016/control_loops/drivetrain/drivetrain_base.cc
index f66d963..3f15694 100644
--- a/y2016/control_loops/drivetrain/drivetrain_base.cc
+++ b/y2016/control_loops/drivetrain/drivetrain_base.cc
@@ -16,7 +16,7 @@
 
 using ::frc971::constants::ShifterHallEffect;
 
-const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.0, 0.0, 0.25, 0.75};
+const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.25, 0.75};
 
 const DrivetrainConfig &GetDrivetrainConfig() {
   static DrivetrainConfig kDrivetrainConfig{
diff --git a/y2016_bot3/control_loops/drivetrain/drivetrain_base.cc b/y2016_bot3/control_loops/drivetrain/drivetrain_base.cc
index 26a551b..7a99ff3 100644
--- a/y2016_bot3/control_loops/drivetrain/drivetrain_base.cc
+++ b/y2016_bot3/control_loops/drivetrain/drivetrain_base.cc
@@ -15,7 +15,7 @@
 
 using ::frc971::constants::ShifterHallEffect;
 
-const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.0, 0.0, 0.25, 0.75};
+const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.25, 0.75};
 
 const DrivetrainConfig &GetDrivetrainConfig() {
   static DrivetrainConfig kDrivetrainConfig{
diff --git a/y2016_bot4/control_loops/drivetrain/drivetrain_base.cc b/y2016_bot4/control_loops/drivetrain/drivetrain_base.cc
index 54a7321..1682f30 100644
--- a/y2016_bot4/control_loops/drivetrain/drivetrain_base.cc
+++ b/y2016_bot4/control_loops/drivetrain/drivetrain_base.cc
@@ -15,7 +15,7 @@
 
 using ::frc971::constants::ShifterHallEffect;
 
-const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.0, 0.0, 0.25, 0.75};
+const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.25, 0.75};
 
 const DrivetrainConfig &GetDrivetrainConfig() {
   static DrivetrainConfig kDrivetrainConfig{
diff --git a/y2017/control_loops/drivetrain/drivetrain_base.cc b/y2017/control_loops/drivetrain/drivetrain_base.cc
index 3367fc1..9ff357b 100644
--- a/y2017/control_loops/drivetrain/drivetrain_base.cc
+++ b/y2017/control_loops/drivetrain/drivetrain_base.cc
@@ -16,7 +16,7 @@
 
 using ::frc971::constants::ShifterHallEffect;
 
-const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.0, 0.0, 0.25, 0.75};
+const ShifterHallEffect kThreeStateDriveShifter{0.0, 0.0, 0.25, 0.75};
 
 const DrivetrainConfig &GetDrivetrainConfig() {
   static DrivetrainConfig kDrivetrainConfig{