From 09b09098aa43778f6757b67db949bed5508fc670 Mon Sep 17 00:00:00 2001
From: "ucart@co3050-12" <dawehr@iastate.edu>
Date: Sat, 22 Apr 2017 14:19:48 -0500
Subject: [PATCH] wip: fix I2C stuff, and pass tests

---
 quad/xsdk_workspace/real_quad/src/hw_impl_zybo_i2c.c   | 6 ++++--
 quad/xsdk_workspace/real_quad/src/hw_impl_zybo_tests.c | 2 +-
 quad/xsdk_workspace/real_quad/src/main.c               | 4 ++--
 3 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/quad/xsdk_workspace/real_quad/src/hw_impl_zybo_i2c.c b/quad/xsdk_workspace/real_quad/src/hw_impl_zybo_i2c.c
index 34ea395e7..85bf4f0e0 100644
--- a/quad/xsdk_workspace/real_quad/src/hw_impl_zybo_i2c.c
+++ b/quad/xsdk_workspace/real_quad/src/hw_impl_zybo_i2c.c
@@ -80,7 +80,8 @@ int zybo_i2c_write(struct I2CDriver *self,
                    unsigned short device_addr,
                    unsigned char *data,
                    unsigned int length) {
-  XIicPs *inst = self->state;
+  struct ZyboI2CState *state = self->state;
+  XIicPs *inst = state->inst;
   if (device_addr == PX4FLOW_DEVICE_ADDR) {
 	  // If we are sending a request to optical flow, drop down to 100kHz
 	  XIicPs_SetSClk(inst, 100000);
@@ -98,7 +99,8 @@ int zybo_i2c_read(struct I2CDriver *self,
                   unsigned short device_addr,
                   unsigned char *buff,
                   unsigned int length) {
-  XIicPs *inst = self->state;
+  struct ZyboI2CState *state = self->state;
+  XIicPs *inst = state->inst;
   if (device_addr == PX4FLOW_DEVICE_ADDR) {
 	  // If we are sending a request to optical flow, drop down to 100kHz
 	  XIicPs_SetSClk(inst, 100000);
diff --git a/quad/xsdk_workspace/real_quad/src/hw_impl_zybo_tests.c b/quad/xsdk_workspace/real_quad/src/hw_impl_zybo_tests.c
index bf7310ea5..a38e87306 100644
--- a/quad/xsdk_workspace/real_quad/src/hw_impl_zybo_tests.c
+++ b/quad/xsdk_workspace/real_quad/src/hw_impl_zybo_tests.c
@@ -65,9 +65,9 @@ int test_zybo_i2c() {
 int test_zybo_i2c_imu() {
   struct I2CDriver i2c = create_zybo_i2c(0);
   struct IMUDriver imu = create_zybo_imu(&i2c);
-  i2c.reset(&i2c);
 
   gam_t gam;
+  if (i2c.reset(&i2c)) return 0;
   if (imu.reset(&imu, &gam)) return 0;
 
   int status = 0;
diff --git a/quad/xsdk_workspace/real_quad/src/main.c b/quad/xsdk_workspace/real_quad/src/main.c
index ee7e493f4..85ab2332a 100644
--- a/quad/xsdk_workspace/real_quad/src/main.c
+++ b/quad/xsdk_workspace/real_quad/src/main.c
@@ -48,7 +48,7 @@ int main()
 #ifdef RUN_TESTS
   //test_zybo_mio7_led_and_system();
   //test_zybo_i2c();
-  //test_zybo_i2c_imu();
+  test_zybo_i2c_imu();
   //test_zybo_i2c_px4flow();
   //test_zybo_i2c_lidar();
   //test_zybo_i2c_all();
@@ -56,7 +56,7 @@ int main()
   //test_zybo_motors();
   //test_zybo_uart();
   //test_zybo_axi_timer();
-  test_zybo_uart_comm();
+  //test_zybo_uart_comm();
   return 0;
 #endif
 
-- 
GitLab