Die on duplicate/invalid DigitalInput's

Haven't actually checked whether running FATAL checks on every single
access causes any issues, but the CHECK's in the constructors are fine
at least.

Change-Id: Icdca5556c5d041f8812468b19de6690dc80bf416
Signed-off-by: James Kuszmaul <jabukuszmaul+collab@gmail.com>
diff --git a/frc971/wpilib/ahal/Counter.cc b/frc971/wpilib/ahal/Counter.cc
index 81e2c61..8e91c82 100644
--- a/frc971/wpilib/ahal/Counter.cc
+++ b/frc971/wpilib/ahal/Counter.cc
@@ -19,6 +19,7 @@
   int32_t status = 0;
   m_counter = HAL_InitializeCounter((HAL_Counter_Mode)mode, &m_index, &status);
   wpi_setHALError(status);
+  HAL_CHECK_STATUS(status);
 
   SetMaxPeriod(0.5);
 
@@ -77,6 +78,7 @@
   }
 
   wpi_setHALError(status);
+  HAL_CHECK_STATUS(status);
   SetDownSourceEdge(inverted, true);
 }
 
@@ -86,6 +88,7 @@
   int32_t status = 0;
   HAL_FreeCounter(m_counter, &status);
   wpi_setHALError(status);
+  HAL_CHECK_STATUS(status);
 }
 
 void Counter::SetUpSource(int channel) {
@@ -119,6 +122,7 @@
       m_counter, source->GetPortHandleForRouting(),
       (HAL_AnalogTriggerType)source->GetAnalogTriggerTypeForRouting(), &status);
   wpi_setHALError(status);
+  HAL_CHECK_STATUS(status);
 }
 
 void Counter::SetUpSource(DigitalSource& source) {
@@ -136,6 +140,7 @@
   int32_t status = 0;
   HAL_SetCounterUpSourceEdge(m_counter, risingEdge, fallingEdge, &status);
   wpi_setHALError(status);
+  HAL_CHECK_STATUS(status);
 }
 
 void Counter::ClearUpSource() {
@@ -144,6 +149,7 @@
   int32_t status = 0;
   HAL_ClearCounterUpSource(m_counter, &status);
   wpi_setHALError(status);
+  HAL_CHECK_STATUS(status);
 }
 
 void Counter::SetDownSource(int channel) {
@@ -182,6 +188,7 @@
       m_counter, source->GetPortHandleForRouting(),
       (HAL_AnalogTriggerType)source->GetAnalogTriggerTypeForRouting(), &status);
   wpi_setHALError(status);
+  HAL_CHECK_STATUS(status);
 }
 
 void Counter::SetDownSourceEdge(bool risingEdge, bool fallingEdge) {
@@ -194,6 +201,7 @@
   int32_t status = 0;
   HAL_SetCounterDownSourceEdge(m_counter, risingEdge, fallingEdge, &status);
   wpi_setHALError(status);
+  HAL_CHECK_STATUS(status);
 }
 
 void Counter::ClearDownSource() {
@@ -202,6 +210,7 @@
   int32_t status = 0;
   HAL_ClearCounterDownSource(m_counter, &status);
   wpi_setHALError(status);
+  HAL_CHECK_STATUS(status);
 }
 
 void Counter::SetUpDownCounterMode() {
@@ -209,6 +218,7 @@
   int32_t status = 0;
   HAL_SetCounterUpDownMode(m_counter, &status);
   wpi_setHALError(status);
+  HAL_CHECK_STATUS(status);
 }
 
 void Counter::SetExternalDirectionMode() {
@@ -216,6 +226,7 @@
   int32_t status = 0;
   HAL_SetCounterExternalDirectionMode(m_counter, &status);
   wpi_setHALError(status);
+  HAL_CHECK_STATUS(status);
 }
 
 void Counter::SetSemiPeriodMode(bool highSemiPeriod) {
@@ -223,6 +234,7 @@
   int32_t status = 0;
   HAL_SetCounterSemiPeriodMode(m_counter, highSemiPeriod, &status);
   wpi_setHALError(status);
+  HAL_CHECK_STATUS(status);
 }
 
 void Counter::SetPulseLengthMode(double threshold) {
@@ -230,6 +242,7 @@
   int32_t status = 0;
   HAL_SetCounterPulseLengthMode(m_counter, threshold, &status);
   wpi_setHALError(status);
+  HAL_CHECK_STATUS(status);
 }
 
 void Counter::SetReverseDirection(bool reverseDirection) {
@@ -237,6 +250,7 @@
   int32_t status = 0;
   HAL_SetCounterReverseDirection(m_counter, reverseDirection, &status);
   wpi_setHALError(status);
+  HAL_CHECK_STATUS(status);
 }
 
 void Counter::SetSamplesToAverage(int samplesToAverage) {
@@ -248,12 +262,14 @@
   int32_t status = 0;
   HAL_SetCounterSamplesToAverage(m_counter, samplesToAverage, &status);
   wpi_setHALError(status);
+  HAL_CHECK_STATUS(status);
 }
 
 int Counter::GetSamplesToAverage() const {
   int32_t status = 0;
   int samples = HAL_GetCounterSamplesToAverage(m_counter, &status);
   wpi_setHALError(status);
+  HAL_CHECK_STATUS(status);
   return samples;
 }
 
@@ -264,6 +280,7 @@
   int32_t status = 0;
   int value = HAL_GetCounter(m_counter, &status);
   wpi_setHALError(status);
+  HAL_CHECK_STATUS(status);
   return value;
 }
 
@@ -272,6 +289,7 @@
   int32_t status = 0;
   HAL_ResetCounter(m_counter, &status);
   wpi_setHALError(status);
+  HAL_CHECK_STATUS(status);
 }
 
 double Counter::GetPeriod() const {
@@ -279,6 +297,7 @@
   int32_t status = 0;
   double value = HAL_GetCounterPeriod(m_counter, &status);
   wpi_setHALError(status);
+  HAL_CHECK_STATUS(status);
   return value;
 }
 
@@ -287,6 +306,7 @@
   int32_t status = 0;
   HAL_SetCounterMaxPeriod(m_counter, maxPeriod, &status);
   wpi_setHALError(status);
+  HAL_CHECK_STATUS(status);
 }
 
 void Counter::SetUpdateWhenEmpty(bool enabled) {
@@ -294,6 +314,7 @@
   int32_t status = 0;
   HAL_SetCounterUpdateWhenEmpty(m_counter, enabled, &status);
   wpi_setHALError(status);
+  HAL_CHECK_STATUS(status);
 }
 
 bool Counter::GetStopped() const {
@@ -301,6 +322,7 @@
   int32_t status = 0;
   bool value = HAL_GetCounterStopped(m_counter, &status);
   wpi_setHALError(status);
+  HAL_CHECK_STATUS(status);
   return value;
 }
 
@@ -309,5 +331,6 @@
   int32_t status = 0;
   bool value = HAL_GetCounterDirection(m_counter, &status);
   wpi_setHALError(status);
+  HAL_CHECK_STATUS(status);
   return value;
 }