split analog.c out intelligently and added an id to the sensor packet
diff --git a/frc971/input/gyro_sensor_receiver.cc b/frc971/input/gyro_sensor_receiver.cc
index 4dec23e..1e5343e 100644
--- a/frc971/input/gyro_sensor_receiver.cc
+++ b/frc971/input/gyro_sensor_receiver.cc
@@ -82,8 +82,13 @@
   }
 
   void UnpackFrom(GyroBoardData *data) {
-    data->NetworkToHost();
-    LOG(DEBUG, "processing a packet\n");
+    if (data->robot_id != 0) {
+      LOG(ERROR, "gyro board sent data for robot id %hhd!"
+          " dip switches are %x\n", data->robot_id, data->dip_switches);
+      return;
+    } else {
+      LOG(DEBUG, "processing a packet dip switches %x\n", data->dip_switches);
+    }
 
     static ::aos::time::Time last_time = ::aos::time::Time::Now();
     if ((last_time - ::aos::time::Time::Now()) >
@@ -95,58 +100,58 @@
         .angle(data->gyro_angle / 16.0 / 1000.0 / 180.0 * M_PI)
         .Send();
 
-    UpdateWrappingCounter(data->top_rise_count,
+    UpdateWrappingCounter(data->main.top_rise_count,
         &last_top_rise_count_, &top_rise_count_);
-    UpdateWrappingCounter(data->top_fall_count,
+    UpdateWrappingCounter(data->main.top_fall_count,
         &last_top_fall_count_, &top_fall_count_);
-    UpdateWrappingCounter(data->bottom_rise_count,
+    UpdateWrappingCounter(data->main.bottom_rise_count,
         &last_bottom_rise_count_, &bottom_rise_count_);
-    UpdateWrappingCounter(data->bottom_fall_delay_count,
+    UpdateWrappingCounter(data->main.bottom_fall_delay_count,
         &last_bottom_fall_delay_count_, &bottom_fall_delay_count_);
-    UpdateWrappingCounter(data->bottom_fall_count,
+    UpdateWrappingCounter(data->main.bottom_fall_count,
         &last_bottom_fall_count_, &bottom_fall_count_);
-    UpdateWrappingCounter(data->wrist_rise_count,
+    UpdateWrappingCounter(data->main.wrist_rise_count,
         &last_wrist_rise_count_, &wrist_rise_count_);
-    UpdateWrappingCounter(data->shooter_angle_rise_count,
+    UpdateWrappingCounter(data->main.shooter_angle_rise_count,
         &last_shooter_angle_rise_count_, &shooter_angle_rise_count_);
 
     drivetrain.position.MakeWithBuilder()
-        .right_encoder(drivetrain_translate(data->right_drive))
-        .left_encoder(-drivetrain_translate(data->left_drive))
+        .right_encoder(drivetrain_translate(data->main.right_drive))
+        .left_encoder(-drivetrain_translate(data->main.left_drive))
         .Send();
 
     wrist.position.MakeWithBuilder()
-        .pos(wrist_translate(data->wrist))
-        .hall_effect(!data->wrist_hall_effect)
-        .calibration(wrist_translate(data->capture_wrist_rise))
+        .pos(wrist_translate(data->main.wrist))
+        .hall_effect(!data->main.wrist_hall_effect)
+        .calibration(wrist_translate(data->main.capture_wrist_rise))
         .Send();
 
     angle_adjust.position.MakeWithBuilder()
-        .angle(angle_adjust_translate(data->shooter_angle))
-        .bottom_hall_effect(!data->angle_adjust_bottom_hall_effect)
+        .angle(angle_adjust_translate(data->main.shooter_angle))
+        .bottom_hall_effect(!data->main.angle_adjust_bottom_hall_effect)
         .middle_hall_effect(false)
         .bottom_calibration(angle_adjust_translate(
-                data->capture_shooter_angle_rise))
+                data->main.capture_shooter_angle_rise))
         .middle_calibration(angle_adjust_translate(
                 0))
         .Send();
 
     shooter.position.MakeWithBuilder()
-        .position(shooter_translate(data->shooter))
+        .position(shooter_translate(data->main.shooter))
         .Send();
 
     index_loop.position.MakeWithBuilder()
-        .index_position(index_translate(data->indexer))
-        .top_disc_detect(!data->top_disc)
+        .index_position(index_translate(data->main.indexer))
+        .top_disc_detect(!data->main.top_disc)
         .top_disc_posedge_count(top_rise_count_)
-        .top_disc_posedge_position(index_translate(data->capture_top_rise))
+        .top_disc_posedge_position(index_translate(data->main.capture_top_rise))
         .top_disc_negedge_count(top_fall_count_)
-        .top_disc_negedge_position(index_translate(data->capture_top_fall))
-        .bottom_disc_detect(!data->bottom_disc)
+        .top_disc_negedge_position(index_translate(data->main.capture_top_fall))
+        .bottom_disc_detect(!data->main.bottom_disc)
         .bottom_disc_posedge_count(bottom_rise_count_)
         .bottom_disc_negedge_count(bottom_fall_count_)
         .bottom_disc_negedge_wait_position(index_translate(
-                data->capture_bottom_fall_delay))
+                data->main.capture_bottom_fall_delay))
         .bottom_disc_negedge_wait_count(bottom_fall_delay_count_)
         .Send();
   }