38#define CONFIG_I2CDEV_TIMEOUT 1000
40#include <driver/i2c.h>
43#include <freertos/FreeRTOS.h>
44#include <freertos/semphr.h>
50#if HELPER_TARGET_IS_ESP8266
52#define I2CDEV_MAX_STRETCH_TIME 0xffffffff
56#include <soc/i2c_reg.h>
57#if defined(I2C_TIME_OUT_VALUE_V)
58#define I2CDEV_MAX_STRETCH_TIME I2C_TIME_OUT_VALUE_V
59#elif defined(I2C_TIME_OUT_REG_V)
60#define I2CDEV_MAX_STRETCH_TIME I2C_TIME_OUT_REG_V
62#define I2CDEV_MAX_STRETCH_TIME 0x00ffffff
173 size_t out_size,
void *in_data,
size_t in_size);
189 size_t out_reg_size,
const void *out_data,
218 const void *out_data,
size_t out_size);
220#define I2C_DEV_TAKE_MUTEX(dev) \
222 esp_err_t __ = i2c_dev_take_mutex(dev); \
227#define I2C_DEV_GIVE_MUTEX(dev) \
229 esp_err_t __ = i2c_dev_give_mutex(dev); \
234#define I2C_DEV_CHECK(dev, X) \
237 if (___ != ESP_OK) { \
238 I2C_DEV_GIVE_MUTEX(dev); \
243#define I2C_DEV_CHECK_LOGE(dev, X, msg, ...) \
246 if (___ != ESP_OK) { \
247 I2C_DEV_GIVE_MUTEX(dev); \
248 ESP_LOGE(TAG, msg, ##__VA_ARGS__); \
esp_err_t i2c_dev_create_mutex(i2c_dev_t *dev)
Create mutex for device descriptor.
Definition i2cdev.c:114
esp_err_t i2c_dev_delete_mutex(i2c_dev_t *dev)
Delete mutex for device descriptor.
Definition i2cdev.c:132
esp_err_t i2c_dev_write(const i2c_dev_t *dev, const void *out_reg, size_t out_reg_size, const void *out_data, size_t out_size)
Write to slave device.
Definition i2cdev.c:306
esp_err_t i2cdev_done()
Finish work with library.
Definition i2cdev.c:93
i2c_dev_type_t
Definition i2cdev.h:84
esp_err_t i2c_dev_give_mutex(i2c_dev_t *dev)
Give device mutex.
Definition i2cdev.c:160
esp_err_t i2cdev_init()
Init library.
Definition i2cdev.c:74
esp_err_t i2c_dev_read(const i2c_dev_t *dev, const void *out_data, size_t out_size, void *in_data, size_t in_size)
Read from slave device.
Definition i2cdev.c:274
esp_err_t i2c_dev_take_mutex(i2c_dev_t *dev)
Take device mutex.
Definition i2cdev.c:144
esp_err_t i2c_dev_write_reg(const i2c_dev_t *dev, uint8_t reg, const void *out_data, size_t out_size)
Write to register with an 8-bit address.
Definition i2cdev.c:337
esp_err_t i2c_dev_read_reg(const i2c_dev_t *dev, uint8_t reg, void *in_data, size_t in_size)
Read from register with an 8-bit address.
Definition i2cdev.c:332
esp_err_t i2c_dev_probe(const i2c_dev_t *dev, i2c_dev_type_t operation_type)
Check the availability of the device.
Definition i2cdev.c:250
@ I2C_DEV_READ
Definition i2cdev.h:86
@ I2C_DEV_WRITE
Definition i2cdev.h:85
i2c_port_t port
I2C port number.
Definition i2cdev.h:71
uint8_t addr
Unshifted address.
Definition i2cdev.h:73
i2c_config_t cfg
I2C driver configuration.
Definition i2cdev.h:72
uint32_t timeout_ticks
Definition i2cdev.h:75
SemaphoreHandle_t mutex
Device mutex.
Definition i2cdev.h:74