diff options
author | Marti Bolivar <mbolivar@leaflabs.com> | 2013-07-26 10:50:51 -0700 |
---|---|---|
committer | Marti Bolivar <mbolivar@leaflabs.com> | 2013-07-26 10:50:51 -0700 |
commit | 4f286c0b12876b36033a3e075a9b4f6914762d54 (patch) | |
tree | bfb60776cf241dabd2b87e3299e38579ab64b04f /libmaple/include/libmaple/i2c_common.h | |
parent | 41e92d43d3f2bcce87bda65656cd139437d95b05 (diff) | |
parent | 0d8f8210e5decb4870f77b5cd0e5325cb803a3af (diff) | |
download | librambutan-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.h | 14 |
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 |