|
@@ -23,6 +23,7 @@ extern "C" {
|
|
#define RT_I2C_NO_START (1u << 4)
|
|
#define RT_I2C_NO_START (1u << 4)
|
|
#define RT_I2C_IGNORE_NACK (1u << 5)
|
|
#define RT_I2C_IGNORE_NACK (1u << 5)
|
|
#define RT_I2C_NO_READ_ACK (1u << 6) /* when I2C reading, we do not ACK */
|
|
#define RT_I2C_NO_READ_ACK (1u << 6) /* when I2C reading, we do not ACK */
|
|
|
|
+#define RT_I2C_NO_STOP (1u << 7)
|
|
|
|
|
|
struct rt_i2c_msg
|
|
struct rt_i2c_msg
|
|
{
|
|
{
|
|
@@ -83,6 +84,17 @@ rt_size_t rt_i2c_master_recv(struct rt_i2c_bus_device *bus,
|
|
rt_uint16_t flags,
|
|
rt_uint16_t flags,
|
|
rt_uint8_t *buf,
|
|
rt_uint8_t *buf,
|
|
rt_uint32_t count);
|
|
rt_uint32_t count);
|
|
|
|
+
|
|
|
|
+rt_inline rt_err_t rt_i2c_bus_lock(struct rt_i2c_bus_device *bus, rt_tick_t timeout)
|
|
|
|
+{
|
|
|
|
+ return rt_mutex_take(&bus->lock, timeout);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+rt_inline rt_err_t rt_i2c_bus_unlock(struct rt_i2c_bus_device *bus)
|
|
|
|
+{
|
|
|
|
+ return rt_mutex_release(&bus->lock);
|
|
|
|
+}
|
|
|
|
+
|
|
int rt_i2c_core_init(void);
|
|
int rt_i2c_core_init(void);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
#ifdef __cplusplus
|