added support for reading sensors from the gyro board
diff --git a/frc971/input/gyro_board_data.h b/frc971/input/gyro_board_data.h
new file mode 100644
index 0000000..ac39cac
--- /dev/null
+++ b/frc971/input/gyro_board_data.h
@@ -0,0 +1,72 @@
+#ifndef FRC971_INPUT_GYRO_BOARD_DATA_H_
+#define FRC971_INPUT_GYRO_BOARD_DATA_H_
+
+#include "aos/common/byteorder.h"
+
+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 right_drive;
+ int32_t left_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;
+
+ int8_t top_rise_count;
+
+ int8_t top_fall_count;
+
+ int8_t bottom_rise_count;
+
+ int8_t bottom_fall_delay_count;
+ int8_t bottom_fall_count;
+
+ int8_t wrist_rise_count;
+
+ int8_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() {
+ 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);
+ }
+} __attribute__((__packed__));
+
+} // namespace frc971
+
+#endif // FRC971_INPUT_GYRO_BOARD_DATA_H_