From cfab8a896c3fc3681953aa34604f2b8ac44986d9 Mon Sep 17 00:00:00 2001
From: Brendan Bartels <bbartels@iastate.edu>
Date: Tue, 14 Mar 2017 21:27:26 -0500
Subject: [PATCH] wip: add hardware test specific for IMU

---
 quad/src/quad_app/initialize_components.c        |  4 +---
 .../modular_quad_pid/src/hw_impl_zybo_tests.c    | 16 ++++++++++++++++
 quad/xsdk_workspace/modular_quad_pid/src/main.c  |  1 +
 3 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/quad/src/quad_app/initialize_components.c b/quad/src/quad_app/initialize_components.c
index 3ef345150..fa09ea2cf 100644
--- a/quad/src/quad_app/initialize_components.c
+++ b/quad/src/quad_app/initialize_components.c
@@ -67,7 +67,7 @@ int init_structs(modular_structs_t *structs) {
     return -1;
   }
 
-  // Initialize I2C controller and start the sensor board
+  // Initialize I2C controller
   struct I2CDriver *i2c = &structs->hardware_struct.i2c;
   if (i2c->reset(i2c)) {
     return -1;
@@ -85,11 +85,9 @@ int init_structs(modular_structs_t *structs) {
   //manual flight mode
   structs->user_defined_struct.flight_mode = MANUAL_FLIGHT_MODE;
 
-#ifndef BENCH_TEST
   // Get the first loop data from accelerometer for the gyroscope to use
   if(sensor_init(&structs->raw_sensor_struct, &structs->sensor_struct) == -1)
     return -1;
-#endif
 
   return 0;
 }
diff --git a/quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_tests.c b/quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_tests.c
index cf36cb0af..8fa79cbb2 100644
--- a/quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_tests.c
+++ b/quad/xsdk_workspace/modular_quad_pid/src/hw_impl_zybo_tests.c
@@ -70,6 +70,22 @@ int test_zybo_i2c() {
   return 0;
 }
 
+int test_zybo_i2c_imu() {
+  struct I2CDriver i2c = create_zybo_i2c();
+  struct SystemDriver sys = create_zybo_system();
+  i2c.reset(&i2c);
+  sys.reset(&sys);
+
+  gam_t gam = { };
+  iic_set_globals(&i2c, &sys);
+  if (iic0_mpu9150_start()) return 0;
+  short x;
+  while (1) {
+    iic0_mpu9150_read_gam(&gam);
+  }
+  return 0;
+}
+
 /**
  * Test for the PWMInputDriver.
  *
diff --git a/quad/xsdk_workspace/modular_quad_pid/src/main.c b/quad/xsdk_workspace/modular_quad_pid/src/main.c
index fe31f0fb6..337212a68 100644
--- a/quad/xsdk_workspace/modular_quad_pid/src/main.c
+++ b/quad/xsdk_workspace/modular_quad_pid/src/main.c
@@ -26,6 +26,7 @@ int main()
 #ifdef RUN_TESTS
   //test_zybo_mio7_led_and_system();
   //test_zybo_i2c();
+  //test_zybo_i2c_imu();
   //test_zybo_pwm_inputs();
   //test_zybo_pwm_outputs();
   //test_zybo_uart();
-- 
GitLab