[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[paparazzi-commits] [4256] add an i2c_transmit_no_stop() function
From: |
Pascal Brisset |
Subject: |
[paparazzi-commits] [4256] add an i2c_transmit_no_stop() function |
Date: |
Fri, 16 Oct 2009 14:02:00 +0000 |
Revision: 4256
http://svn.sv.gnu.org/viewvc/?view=rev&root=paparazzi&revision=4256
Author: hecto
Date: 2009-10-16 14:01:59 +0000 (Fri, 16 Oct 2009)
Log Message:
-----------
add an i2c_transmit_no_stop() function
Modified Paths:
--------------
paparazzi3/trunk/sw/airborne/i2c.c
paparazzi3/trunk/sw/airborne/i2c.h
Modified: paparazzi3/trunk/sw/airborne/i2c.c
===================================================================
--- paparazzi3/trunk/sw/airborne/i2c.c 2009-10-16 07:55:09 UTC (rev 4255)
+++ paparazzi3/trunk/sw/airborne/i2c.c 2009-10-16 14:01:59 UTC (rev 4256)
@@ -10,6 +10,7 @@
volatile uint8_t i2c0_len;
volatile uint8_t i2c0_index;
volatile uint8_t i2c0_slave_addr;
+volatile bool_t i2c0_stop_after_transmit;
volatile bool_t* i2c0_finished;
@@ -28,14 +29,26 @@
I2c0SendStart();
}
-void i2c0_transmit(uint8_t slave_addr, uint8_t len, volatile bool_t* finished)
{
+static inline void i2c0_init_transmit(uint8_t slave_addr, uint8_t len,
volatile bool_t* finished) {
i2c0_len = len;
i2c0_slave_addr = slave_addr & ~I2C_RECEIVE;
i2c0_finished = finished;
i2c0_status = I2C_BUSY;
+}
+
+
+void i2c0_transmit(uint8_t slave_addr, uint8_t len, volatile bool_t* finished)
{
+ i2c0_init_transmit(slave_addr, len, finished);
+ i2c0_stop_after_transmit = TRUE; /** Default "historic" behaviour */
I2c0SendStart();
}
+void i2c0_transmit_no_stop(uint8_t slave_addr, uint8_t len, volatile bool_t*
finished) {
+ i2c0_init_transmit(slave_addr, len, finished);
+ i2c0_stop_after_transmit = FALSE; /** Default "historic" behaviour */
+ I2c0SendStart();
+}
+
#endif /* USE_I2C0 */
#ifdef USE_I2C1
Modified: paparazzi3/trunk/sw/airborne/i2c.h
===================================================================
--- paparazzi3/trunk/sw/airborne/i2c.h 2009-10-16 07:55:09 UTC (rev 4255)
+++ paparazzi3/trunk/sw/airborne/i2c.h 2009-10-16 14:01:59 UTC (rev 4256)
@@ -24,11 +24,14 @@
extern void i2c0_init(void);
extern void i2c0_receive(uint8_t slave_addr, uint8_t len, volatile bool_t*
finished);
extern void i2c0_transmit(uint8_t slave_addr, uint8_t len, volatile bool_t*
finished);
+extern void i2c0_transmit_no_stop(uint8_t slave_addr, uint8_t len, volatile
bool_t* finished);
extern volatile uint8_t i2c0_status;
+extern volatile bool_t i2c0_stop_after_transmit;
+
#ifndef I2C0_BUF_LEN
-#define I2C0_BUF_LEN 16
+#define I2C0_BUF_LEN 32
#endif
extern volatile uint8_t i2c0_buf[I2C0_BUF_LEN];
@@ -71,7 +74,11 @@
I2c0SendByte(i2c0_buf[i2c0_index]); \
i2c0_index++; \
} else { \
- I2c0SendStop(); \
+ if (i2c0_stop_after_transmit) { \
+ I2c0SendStop(); \
+ } else { \
+ I2c0Finished(); \
+ } \
}
\
break; \
case I2C_MR_DATA_NACK: \
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [paparazzi-commits] [4256] add an i2c_transmit_no_stop() function,
Pascal Brisset <=