paparazzi-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[paparazzi-commits] [5802] update mppt for new i2c driver


From: Gautier Hattenberger
Subject: [paparazzi-commits] [5802] update mppt for new i2c driver
Date: Fri, 03 Sep 2010 20:14:12 +0000

Revision: 5802
          http://svn.sv.gnu.org/viewvc/?view=rev&root=paparazzi&revision=5802
Author:   gautier
Date:     2010-09-03 20:14:12 +0000 (Fri, 03 Sep 2010)
Log Message:
-----------
update mppt for new i2c driver

Modified Paths:
--------------
    paparazzi3/trunk/sw/airborne/modules/MPPT/MPPT.c

Modified: paparazzi3/trunk/sw/airborne/modules/MPPT/MPPT.c
===================================================================
--- paparazzi3/trunk/sw/airborne/modules/MPPT/MPPT.c    2010-09-03 19:33:55 UTC 
(rev 5801)
+++ paparazzi3/trunk/sw/airborne/modules/MPPT/MPPT.c    2010-09-03 20:14:12 UTC 
(rev 5802)
@@ -33,6 +33,8 @@
 #define NB_I2C_DATA 8
 #define MPPT_MODE_ADDR 0xf
 
+struct i2c_transaction mppt_trans;
+
 /**
  0: VBat (mV)
  1: IBat (mA)
@@ -55,8 +57,6 @@
 #include "messages.h"
 #include "downlink.h"
 
-static volatile bool_t MPPT_i2c_done;
-
 uint8_t MPPT_mode;
 /** A value different from 0 is a request from this mode */
 
@@ -73,11 +73,9 @@
 void MPPT_init( void ) {
   MPPT_mode = 0;
   MPPT_status = MPPT_STATUS_IDLE;
-  MPPT_i2c_done = TRUE;
 }
 
 
-
 static void MPPT_ask( void ) {
   data_index++;
   if (data_index >= NB_I2C_DATA) {
@@ -89,49 +87,45 @@
     data_index = 0;
   }
   
-  i2c0_buf[0] = data_index;
-  i2c0_transmit(MPPT_SLAVE_ADDR, 1, &MPPT_i2c_done);
-  MPPT_i2c_done = FALSE;
+  mppt_trans.buf[0] = data_index;
+  I2CTransmit(i2c0, mppt_trans, MPPT_SLAVE_ADDR, 1);
   MPPT_status = MPPT_STATUS_ASKING;
 }
 
 void MPPT_periodic( void ) {
-  //  MPPT_i2c_done = TRUE;
 
-  if (MPPT_i2c_done) {
+  if (mppt_trans.status == I2CTransSuccess) {
     switch (MPPT_status) {
-    case MPPT_STATUS_IDLE:
-      /* If free, change mode if needed */
-      if (MPPT_mode) {
-       i2c0_buf[0] = MPPT_MODE_ADDR;
-       i2c0_buf[1] = 0;
-       i2c0_buf[2] = MPPT_mode;
-       i2c0_transmit(MPPT_SLAVE_ADDR, 3, &MPPT_i2c_done);
-       MPPT_i2c_done = FALSE;
-       MPPT_mode = 0;
-       MPPT_status = MPPT_STATUS_WRITING;
-      } else {
-       MPPT_ask();
-      }
-      break;
+      case MPPT_STATUS_IDLE:
+        /* If free, change mode if needed */
+        if (MPPT_mode) {
+          mppt_trans.buf[0] = MPPT_MODE_ADDR;
+          mppt_trans.buf[1] = 0;
+          mppt_trans.buf[2] = MPPT_mode;
+          I2CTransmit(i2c0, mppt_trans, MPPT_SLAVE_ADDR, 3);
+          MPPT_mode = 0;
+          MPPT_status = MPPT_STATUS_WRITING;
+        } else {
+          MPPT_ask();
+        }
+        break;
 
-    case MPPT_STATUS_WRITING:
-      MPPT_status = MPPT_STATUS_IDLE;
-      break;
+      case MPPT_STATUS_WRITING:
+        MPPT_status = MPPT_STATUS_IDLE;
+        break;
 
-    case MPPT_STATUS_ASKING:
-      /* The slave should send 2 bytes */
-      i2c0_receive(MPPT_SLAVE_ADDR, 2, &MPPT_i2c_done);
-      MPPT_i2c_done = FALSE;
-      MPPT_status = MPPT_STATUS_READING;
-      break;
-    
-    case MPPT_STATUS_READING:
-      /* We got 2 bytes */
-      if (data_index < NB_I2C_DATA)
-       MPPT_data[data_index] = (i2c0_buf[0]<<8) | i2c0_buf[1];
-      MPPT_status = MPPT_STATUS_IDLE;
-      break;
+      case MPPT_STATUS_ASKING:
+        /* The slave should send 2 bytes */
+        I2CReceive(i2c0, mppt_trans, MPPT_SLAVE_ADDR, 2);
+        MPPT_status = MPPT_STATUS_READING;
+        break;
+
+      case MPPT_STATUS_READING:
+        /* We got 2 bytes */
+        if (data_index < NB_I2C_DATA)
+          MPPT_data[data_index] = (mppt_trans.buf[0]<<8) | mppt_trans.buf[1];
+        MPPT_status = MPPT_STATUS_IDLE;
+        break;
     }
   }
 }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]