aboutsummaryrefslogtreecommitdiffstats
path: root/libmaple/include/libmaple/i2c_common.h
diff options
context:
space:
mode:
authorMarti Bolivar <mbolivar@leaflabs.com>2013-07-26 10:50:51 -0700
committerMarti Bolivar <mbolivar@leaflabs.com>2013-07-26 10:50:51 -0700
commit4f286c0b12876b36033a3e075a9b4f6914762d54 (patch)
treebfb60776cf241dabd2b87e3299e38579ab64b04f /libmaple/include/libmaple/i2c_common.h
parent41e92d43d3f2bcce87bda65656cd139437d95b05 (diff)
parent0d8f8210e5decb4870f77b5cd0e5325cb803a3af (diff)
downloadlibrambutan-4f286c0b12876b36033a3e075a9b4f6914762d54.tar.gz
librambutan-4f286c0b12876b36033a3e075a9b4f6914762d54.zip
Merge pull request #54 from ginge/master
Added i2c slave support
Diffstat (limited to 'libmaple/include/libmaple/i2c_common.h')
-rw-r--r--libmaple/include/libmaple/i2c_common.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/libmaple/include/libmaple/i2c_common.h b/libmaple/include/libmaple/i2c_common.h
index 17cabe3..93e17e2 100644
--- a/libmaple/include/libmaple/i2c_common.h
+++ b/libmaple/include/libmaple/i2c_common.h
@@ -52,9 +52,12 @@ typedef enum i2c_state {
I2C_STATE_IDLE = 1, /**< Idle */
I2C_STATE_XFER_DONE = 2, /**< Done with transfer */
I2C_STATE_BUSY = 3, /**< Busy */
+ I2C_STATE_SL_RX = 4, /**< Slave receiving */
I2C_STATE_ERROR = -1 /**< Error occurred */
} i2c_state;
+typedef void (*i2c_slave_recv_callback_func)(struct i2c_msg *);
+typedef void (*i2c_slave_transmit_callback_func)(struct i2c_msg *);
/**
* @brief I2C device type.
*/
@@ -88,6 +91,17 @@ typedef struct i2c_dev {
nvic_irq_num ev_nvic_line; /**< Event IRQ number */
nvic_irq_num er_nvic_line; /**< Error IRQ number */
volatile i2c_state state; /**< Device state */
+ uint32 config_flags; /**< Configuration flags */
+
+ /*
+ * Slave implementation. Callback functions in this struct allow
+ * for a separate callback function for each I2C unit available onboard
+ */
+ i2c_slave_transmit_callback_func i2c_slave_transmit_callback;
+ i2c_slave_recv_callback_func i2c_slave_recv_callback;
+
+ struct i2c_msg *i2c_slave_msg; /* the message that the i2c slave will use */
+
} i2c_dev;
#endif