fixed frc971/constants and all the uses of it

Before, it used aos::robot_state to get the team number, which meant a
lot of complication around dealing with that and the fact that it's not
there at the very beginning. Now, it just uses the IP address to do it,
which means that the interface is way simplier and nicer.
diff --git a/frc971/control_loops/angle_adjust/angle_adjust.cc b/frc971/control_loops/angle_adjust/angle_adjust.cc
index 3ecafa6..ffb98f2 100644
--- a/frc971/control_loops/angle_adjust/angle_adjust.cc
+++ b/frc971/control_loops/angle_adjust/angle_adjust.cc
@@ -2,7 +2,6 @@
 
 #include <algorithm>
 
-#include "aos/common/messages/RobotState.q.h"
 #include "aos/common/control_loop/control_loops.q.h"
 #include "aos/common/logging/logging.h"
 
@@ -17,43 +16,23 @@
     : aos::control_loops::ControlLoop<control_loops::AngleAdjustLoop>(
         my_angle_adjust),
       zeroed_joint_(MakeAngleAdjustLoop()) {
-}
+  {
+    using ::frc971::constants::GetValues;
+    ZeroedJoint<2>::ConfigurationData config_data;
 
-bool AngleAdjustMotor::FetchConstants(
-    ZeroedJoint<2>::ConfigurationData *config_data) {
-  if (!constants::angle_adjust_lower_limit(
-          &config_data->lower_limit)) {
-    LOG(ERROR, "Failed to fetch the angle adjust lower limit constant.\n");
-    return false;
-  }
-  if (!constants::angle_adjust_upper_limit(
-          &config_data->upper_limit)) {
-    LOG(ERROR, "Failed to fetch the angle adjust upper limit constant.\n");
-    return false;
-  }
-  if (!constants::angle_adjust_hall_effect_start_angle(
-          config_data->hall_effect_start_angle)) {
-    LOG(ERROR, "Failed to fetch the hall effect start angle constants.\n");
-    return false;
-  }
-  if (!constants::angle_adjust_zeroing_off_speed(
-          &config_data->zeroing_off_speed)) {
-    LOG(ERROR,
-        "Failed to fetch the angle adjust zeroing off speed constant.\n");
-    return false;
-  }
-  if (!constants::angle_adjust_zeroing_speed(
-          &config_data->zeroing_speed)) {
-    LOG(ERROR, "Failed to fetch the angle adjust zeroing speed constant.\n");
-    return false;
-  }
+    config_data.lower_limit = GetValues().angle_adjust_lower_limit;
+    config_data.upper_limit = GetValues().angle_adjust_upper_limit;
+    memcpy(config_data.hall_effect_start_angle,
+           GetValues().angle_adjust_hall_effect_start_angle,
+           sizeof(config_data.hall_effect_start_angle));
+    config_data.zeroing_off_speed = GetValues().angle_adjust_zeroing_off_speed;
+    config_data.zeroing_speed = GetValues().angle_adjust_zeroing_speed;
 
-  config_data->max_zeroing_voltage = 4.0;
-  if (!constants::angle_adjust_deadband(&config_data->deadband_voltage)) {
-    LOG(ERROR, "Failed to fetch the angle adjust deadband voltage constant.\n");
-    return false;
+    config_data.max_zeroing_voltage = 4.0;
+    config_data.deadband_voltage = GetValues().angle_adjust_deadband;
+
+    zeroed_joint_.set_config_data(config_data);
   }
-  return true;
 }
 
 // Positive angle is up, and positive power is up.
@@ -69,15 +48,6 @@
     output->voltage = 0;
   }
 
-  // Cache the constants to avoid error handling down below.
-  ZeroedJoint<2>::ConfigurationData config_data;
-  if (!FetchConstants(&config_data)) {
-    LOG(WARNING, "Failed to fetch constants.\n");
-    return;
-  } else {
-    zeroed_joint_.set_config_data(config_data);
-  }
-
   ZeroedJoint<2>::PositionData transformed_position;
   ZeroedJoint<2>::PositionData *transformed_position_ptr =
       &transformed_position;
diff --git a/frc971/control_loops/angle_adjust/angle_adjust.gyp b/frc971/control_loops/angle_adjust/angle_adjust.gyp
index c48ded3..323cb56 100644
--- a/frc971/control_loops/angle_adjust/angle_adjust.gyp
+++ b/frc971/control_loops/angle_adjust/angle_adjust.gyp
@@ -25,7 +25,7 @@
       ],
       'dependencies': [
         '<(AOS)/common/common.gyp:controls',
-        '<(DEPTH)/frc971/frc971.gyp:common',
+        '<(DEPTH)/frc971/frc971.gyp:constants',
         '<(DEPTH)/frc971/control_loops/control_loops.gyp:state_feedback_loop',
         'angle_adjust_loop',
       ],
diff --git a/frc971/control_loops/angle_adjust/angle_adjust.h b/frc971/control_loops/angle_adjust/angle_adjust.h
index dfa8ad2..319e293 100644
--- a/frc971/control_loops/angle_adjust/angle_adjust.h
+++ b/frc971/control_loops/angle_adjust/angle_adjust.h
@@ -52,10 +52,6 @@
   friend class testing::AngleAdjustTest_RezeroWithMissingPos_Test;
   friend class testing::AngleAdjustTest_DisableGoesUninitialized_Test;
 
-  // Fetches and locally caches the latest set of constants.
-  // Returns whether it succeeded or not.
-  bool FetchConstants(ZeroedJoint<2>::ConfigurationData *config_data);
-
   // The zeroed joint to use.
   ZeroedJoint<2> zeroed_joint_;
 
diff --git a/frc971/control_loops/angle_adjust/angle_adjust_lib_test.cc b/frc971/control_loops/angle_adjust/angle_adjust_lib_test.cc
index 51cd641..0ea7201 100644
--- a/frc971/control_loops/angle_adjust/angle_adjust_lib_test.cc
+++ b/frc971/control_loops/angle_adjust/angle_adjust_lib_test.cc
@@ -62,17 +62,15 @@
   void SendPositionMessage() {
     const double angle = GetPosition();
 
-    double hall_effect_start_angle[2];
-    ASSERT_TRUE(constants::angle_adjust_hall_effect_start_angle(
-                    hall_effect_start_angle));
-    double hall_effect_stop_angle[2];
-    ASSERT_TRUE(constants::angle_adjust_hall_effect_stop_angle(
-                    hall_effect_stop_angle));
-
     ::aos::ScopedMessagePtr<control_loops::AngleAdjustLoop::Position> position =
         my_angle_adjust_loop_.position.MakeMessage();
     position->angle = angle;
 
+    const double (&hall_effect_start_angle)[2] =
+        constants::GetValues().angle_adjust_hall_effect_start_angle;
+    const double (&hall_effect_stop_angle)[2] =
+        constants::GetValues().angle_adjust_hall_effect_stop_angle;
+
     // Signal that the hall effect sensor has been triggered if it is within
     // the correct range.
     double abs_position = GetAbsolutePosition();
@@ -115,16 +113,10 @@
     angle_adjust_plant_->U << last_voltage_;
     angle_adjust_plant_->Update();
 
-    // Assert that we are in the right physical range.
-    double upper_physical_limit;
-    ASSERT_TRUE(constants::angle_adjust_upper_physical_limit(
-                    &upper_physical_limit));
-    double lower_physical_limit;
-    ASSERT_TRUE(constants::angle_adjust_lower_physical_limit(
-                    &lower_physical_limit));
-
-    EXPECT_GE(upper_physical_limit, angle_adjust_plant_->Y(0, 0));
-    EXPECT_LE(lower_physical_limit, angle_adjust_plant_->Y(0, 0));
+    EXPECT_GE(constants::GetValues().angle_adjust_upper_physical_limit,
+              angle_adjust_plant_->Y(0, 0));
+    EXPECT_LE(constants::GetValues().angle_adjust_lower_physical_limit,
+              angle_adjust_plant_->Y(0, 0));
     last_voltage_ = my_angle_adjust_loop_.output->voltage;
   }
 
diff --git a/frc971/control_loops/drivetrain/drivetrain.gyp b/frc971/control_loops/drivetrain/drivetrain.gyp
index 8e98e4b..1776056 100644
--- a/frc971/control_loops/drivetrain/drivetrain.gyp
+++ b/frc971/control_loops/drivetrain/drivetrain.gyp
@@ -27,7 +27,7 @@
       'dependencies': [
         'drivetrain_loop',
         '<(AOS)/common/common.gyp:controls',
-        '<(DEPTH)/frc971/frc971.gyp:common',
+        '<(DEPTH)/frc971/frc971.gyp:constants',
         '<(DEPTH)/frc971/control_loops/control_loops.gyp:state_feedback_loop',
         '<(DEPTH)/frc971/queues/queues.gyp:queues',
       ],
diff --git a/frc971/control_loops/index/index.gyp b/frc971/control_loops/index/index.gyp
index 9cfb019..014f266 100644
--- a/frc971/control_loops/index/index.gyp
+++ b/frc971/control_loops/index/index.gyp
@@ -27,7 +27,7 @@
       'dependencies': [
         'index_loop',
         '<(AOS)/common/common.gyp:controls',
-        '<(DEPTH)/frc971/frc971.gyp:common',
+        '<(DEPTH)/frc971/frc971.gyp:constants',
         '<(DEPTH)/frc971/control_loops/control_loops.gyp:state_feedback_loop',
         '<(DEPTH)/frc971/control_loops/shooter/shooter.gyp:shooter_loop',
       ],
diff --git a/frc971/control_loops/shooter/shooter.gyp b/frc971/control_loops/shooter/shooter.gyp
index 41c33c1..64e3a20 100644
--- a/frc971/control_loops/shooter/shooter.gyp
+++ b/frc971/control_loops/shooter/shooter.gyp
@@ -27,7 +27,7 @@
       'dependencies': [
         'shooter_loop',
         '<(AOS)/common/common.gyp:controls',
-        '<(DEPTH)/frc971/frc971.gyp:common',
+        '<(DEPTH)/frc971/frc971.gyp:constants',
         '<(DEPTH)/frc971/control_loops/control_loops.gyp:state_feedback_loop',
         '<(DEPTH)/frc971/control_loops/index/index.gyp:index_loop',
       ],
diff --git a/frc971/control_loops/wrist/wrist.cc b/frc971/control_loops/wrist/wrist.cc
index 0ca5caa..8229c93 100644
--- a/frc971/control_loops/wrist/wrist.cc
+++ b/frc971/control_loops/wrist/wrist.cc
@@ -4,7 +4,6 @@
 
 #include <algorithm>
 
-#include "aos/common/messages/RobotState.q.h"
 #include "aos/common/control_loop/control_loops.q.h"
 #include "aos/common/logging/logging.h"
 
@@ -17,42 +16,22 @@
 WristMotor::WristMotor(control_loops::WristLoop *my_wrist)
     : aos::control_loops::ControlLoop<control_loops::WristLoop>(my_wrist),
       zeroed_joint_(MakeWristLoop()) {
-}
+  {
+    using ::frc971::constants::GetValues;
+    ZeroedJoint<1>::ConfigurationData config_data;
 
-bool WristMotor::FetchConstants(
-    ZeroedJoint<1>::ConfigurationData *config_data) {
-  if (::aos::robot_state.get() == NULL) {
-    if (!::aos::robot_state.FetchNext()) {
-      LOG(ERROR, "Failed to fetch robot state to get constants.\n");
-      return false;
-    }
-  }
-  if (!constants::wrist_lower_limit(&config_data->lower_limit)) {
-    LOG(ERROR, "Failed to fetch the wrist lower limit constant.\n");
-    return false;
-  }
-  if (!constants::wrist_upper_limit(&config_data->upper_limit)) {
-    LOG(ERROR, "Failed to fetch the wrist upper limit constant.\n");
-    return false;
-  }
-  if (!constants::wrist_hall_effect_start_angle(
-          &config_data->hall_effect_start_angle[0])) {
-    LOG(ERROR, "Failed to fetch the wrist start angle constant.\n");
-    return false;
-  }
-  if (!constants::wrist_zeroing_off_speed(&config_data->zeroing_off_speed)) {
-    LOG(ERROR, "Failed to fetch the wrist zeroing off speed constant.\n");
-    return false;
-  }
+    config_data.lower_limit = GetValues().wrist_lower_limit;
+    config_data.upper_limit = GetValues().wrist_upper_limit;
+    config_data.hall_effect_start_angle[0] =
+        GetValues().wrist_hall_effect_start_angle;
+    config_data.zeroing_off_speed = GetValues().wrist_zeroing_off_speed;
+    config_data.zeroing_speed = GetValues().wrist_zeroing_speed;
 
-  if (!constants::wrist_zeroing_speed(&config_data->zeroing_speed)) {
-    LOG(ERROR, "Failed to fetch the wrist zeroing speed constant.\n");
-    return false;
-  }
+    config_data.max_zeroing_voltage = 5.0;
+    config_data.deadband_voltage = 0.0;
 
-  config_data->max_zeroing_voltage = 5.0;
-  config_data->deadband_voltage = 0.0;
-  return true;
+    zeroed_joint_.set_config_data(config_data);
+  }
 }
 
 // Positive angle is up, and positive power is up.
@@ -68,14 +47,6 @@
     output->voltage = 0;
   }
 
-  // Cache the constants to avoid error handling down below.
-  ZeroedJoint<1>::ConfigurationData config_data;
-  if (!FetchConstants(&config_data)) {
-    return;
-  } else {
-    zeroed_joint_.set_config_data(config_data);
-  }
-
   ZeroedJoint<1>::PositionData transformed_position;
   ZeroedJoint<1>::PositionData *transformed_position_ptr =
       &transformed_position;
diff --git a/frc971/control_loops/wrist/wrist.gyp b/frc971/control_loops/wrist/wrist.gyp
index 3beee8b..d66bf6c 100644
--- a/frc971/control_loops/wrist/wrist.gyp
+++ b/frc971/control_loops/wrist/wrist.gyp
@@ -28,7 +28,7 @@
       'dependencies': [
         'wrist_loop',
         '<(AOS)/common/common.gyp:controls',
-        '<(DEPTH)/frc971/frc971.gyp:common',
+        '<(DEPTH)/frc971/frc971.gyp:constants',
         '<(DEPTH)/frc971/control_loops/control_loops.gyp:state_feedback_loop',
       ],
       'export_dependent_settings': [
diff --git a/frc971/control_loops/wrist/wrist.h b/frc971/control_loops/wrist/wrist.h
index fe2601b..a3bad80 100644
--- a/frc971/control_loops/wrist/wrist.h
+++ b/frc971/control_loops/wrist/wrist.h
@@ -51,9 +51,6 @@
   friend class testing::WristTest_NoWindupPositive_Test;
   friend class testing::WristTest_NoWindupNegative_Test;
 
-  // Fetches and locally caches the latest set of constants.
-  bool FetchConstants(ZeroedJoint<1>::ConfigurationData *config_data);
-
   // The zeroed joint to use.
   ZeroedJoint<1> zeroed_joint_;
 
diff --git a/frc971/control_loops/wrist/wrist_lib_test.cc b/frc971/control_loops/wrist/wrist_lib_test.cc
index 4903a28..7d248ce 100644
--- a/frc971/control_loops/wrist/wrist_lib_test.cc
+++ b/frc971/control_loops/wrist/wrist_lib_test.cc
@@ -58,13 +58,6 @@
   void SendPositionMessage() {
     const double angle = GetPosition();
 
-    double wrist_hall_effect_start_angle;
-    ASSERT_TRUE(constants::wrist_hall_effect_start_angle(
-                    &wrist_hall_effect_start_angle));
-    double wrist_hall_effect_stop_angle;
-    ASSERT_TRUE(constants::wrist_hall_effect_stop_angle(
-                    &wrist_hall_effect_stop_angle));
-
     ::aos::ScopedMessagePtr<control_loops::WristLoop::Position> position =
         my_wrist_loop_.position.MakeMessage();
     position->pos = angle;
@@ -72,8 +65,8 @@
     // Signal that the hall effect sensor has been triggered if it is within
     // the correct range.
     double abs_position = GetAbsolutePosition();
-    if (abs_position >= wrist_hall_effect_start_angle &&
-        abs_position <= wrist_hall_effect_stop_angle) {
+    if (abs_position >= constants::GetValues().wrist_hall_effect_start_angle &&
+        abs_position <= constants::GetValues().wrist_hall_effect_stop_angle) {
       position->hall_effect = true;
     } else {
       position->hall_effect = false;
@@ -81,11 +74,14 @@
 
     // Only set calibration if it changed last cycle.  Calibration starts out
     // with a value of 0.
-    if ((last_position_ < wrist_hall_effect_start_angle ||
-         last_position_ > wrist_hall_effect_stop_angle) &&
-         position->hall_effect) {
+    if ((last_position_ <
+             constants::GetValues().wrist_hall_effect_start_angle ||
+         last_position_ >
+             constants::GetValues().wrist_hall_effect_stop_angle) &&
+        position->hall_effect) {
       calibration_value_ =
-          wrist_hall_effect_start_angle - initial_position_;
+          constants::GetValues().wrist_hall_effect_start_angle -
+          initial_position_;
     }
 
     position->calibration = calibration_value_;
@@ -99,17 +95,9 @@
     wrist_plant_->U << last_voltage_;
     wrist_plant_->Update();
 
-    // Assert that we are in the right physical range.
-    double wrist_upper_physical_limit;
-    ASSERT_TRUE(constants::wrist_upper_physical_limit(
-                    &wrist_upper_physical_limit));
-    double wrist_lower_physical_limit;
-    ASSERT_TRUE(constants::wrist_lower_physical_limit(
-                    &wrist_lower_physical_limit));
-
-    EXPECT_GE(wrist_upper_physical_limit,
+    EXPECT_GE(constants::GetValues().wrist_upper_physical_limit,
               wrist_plant_->Y(0, 0));
-    EXPECT_LE(wrist_lower_physical_limit,
+    EXPECT_LE(constants::GetValues().wrist_lower_physical_limit,
               wrist_plant_->Y(0, 0));
     last_voltage_ = my_wrist_loop_.output->voltage;
   }