aboutsummaryrefslogtreecommitdiffstats
path: root/libmaple/include/libmaple/i2c_common.h
diff options
context:
space:
mode:
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..5debcb8 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 */
+
+ /* Barry Carter
+ * 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