split analog.c out intelligently and added an id to the sensor packet
diff --git a/frc971/input/gyro_board_data.h b/frc971/input/gyro_board_data.h
index 10135e3..6f07a2a 100644
--- a/frc971/input/gyro_board_data.h
+++ b/frc971/input/gyro_board_data.h
@@ -5,70 +5,9 @@
 
 namespace frc971 {
 
-// The struct that the gyro board sends out with all of the data in it.
-struct GyroBoardData {
-	int64_t gyro_angle;
-
-	int32_t left_drive;
-	int32_t right_drive;
-	int32_t shooter_angle;
-	int32_t shooter;
-	int32_t indexer;
-	int32_t wrist;
-
-	int32_t capture_top_rise;
-	int32_t capture_top_fall;
-	int32_t capture_bottom_fall_delay;
-	int32_t capture_wrist_rise;
-	int32_t capture_shooter_angle_rise;
-
-	uint8_t top_rise_count;
-
-	uint8_t top_fall_count;
-
-	uint8_t bottom_rise_count;
-
-	uint8_t bottom_fall_delay_count;
-	uint8_t bottom_fall_count;
-
-	uint8_t wrist_rise_count;
-
-	uint8_t shooter_angle_rise_count;
-
-  union {
-    struct {
-      uint8_t wrist_hall_effect : 1;
-      uint8_t angle_adjust_bottom_hall_effect : 1;
-      uint8_t top_disc : 1;
-      uint8_t bottom_disc : 1;
-    };
-    uint32_t digitals;
-  };
-
-  void NetworkToHost() {
-    // Apparently it sends the information out in little endian.
-#if 0
-    using ::aos::ntoh;
-
-    gyro_angle = ntoh(gyro_angle);
-
-    right_drive = ntoh(right_drive);
-    left_drive = ntoh(left_drive);
-    shooter_angle = ntoh(shooter_angle);
-    shooter = ntoh(shooter);
-    indexer = ntoh(indexer);
-    wrist = ntoh(wrist);
-
-    capture_top_rise = ntoh(capture_top_rise);
-    capture_top_fall = ntoh(capture_top_fall);
-    capture_bottom_fall_delay = ntoh(capture_bottom_fall_delay);
-    capture_wrist_rise = ntoh(capture_wrist_rise);
-    capture_shooter_angle_rise = ntoh(capture_shooter_angle_rise);
-
-    digitals = ntoh(digitals);
-#endif
-  }
-} __attribute__((__packed__));
+#define DATA_STRUCT_NAME GyroBoardData
+#include "../../gyro_board/src/usb/data_struct.h"
+#undef DATA_STRUCT_NAME
 
 }  // namespace frc971