SRA Board Components
ESP-IDF component for SRA Board
Classes | Macros | Functions | Variables
i2cdev

Classes

struct  i2c_dev_t
 

Macros

#define I2CDEV_MAX_STRETCH_TIME   0x00ffffff
 
#define I2C_DEV_TAKE_MUTEX(dev)
 
#define I2C_DEV_GIVE_MUTEX(dev)
 
#define I2C_DEV_CHECK(dev, X)
 
#define I2C_DEV_CHECK_LOGE(dev, X, msg, ...)
 

Functions

esp_err_t i2cdev_init ()
 Init library. More...
 
esp_err_t i2cdev_done ()
 Finish work with library. More...
 
esp_err_t i2c_dev_create_mutex (i2c_dev_t *dev)
 Create mutex for device descriptor. More...
 
esp_err_t i2c_dev_delete_mutex (i2c_dev_t *dev)
 Delete mutex for device descriptor. More...
 
esp_err_t i2c_dev_take_mutex (i2c_dev_t *dev)
 Take device mutex. More...
 
esp_err_t i2c_dev_give_mutex (i2c_dev_t *dev)
 Give device mutex. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 

Variables

SemaphoreHandle_t mutex
 

Detailed Description

ESP-IDF I2C master thread-safe functions for communication with I2C slave

Copyright (c) 2018 Ruslan V. Uss uncle.nosp@m.rus@.nosp@m.gmail.nosp@m..com

MIT Licensed as described in the file LICENSE

Macro Definition Documentation

◆ I2C_DEV_CHECK

#define I2C_DEV_CHECK (   dev,
 
)
Value:
do { \
esp_err_t ___ = X; \
if (___ != ESP_OK) { \
I2C_DEV_GIVE_MUTEX(dev); \
return ___; \
} \
} while (0)

◆ I2C_DEV_CHECK_LOGE

#define I2C_DEV_CHECK_LOGE (   dev,
  X,
  msg,
  ... 
)
Value:
do { \
esp_err_t ___ = X; \
if (___ != ESP_OK) { \
I2C_DEV_GIVE_MUTEX(dev); \
ESP_LOGE(TAG, msg, ## __VA_ARGS__); \
return ___; \
} \
} while (0)
#define TAG
Definition: lvgl_helpers.c:21

◆ I2C_DEV_GIVE_MUTEX

#define I2C_DEV_GIVE_MUTEX (   dev)
Value:
do { \
esp_err_t __ = i2c_dev_give_mutex(dev); \
if (__ != ESP_OK) return __;\
} while (0)
esp_err_t i2c_dev_give_mutex(i2c_dev_t *dev)
Give device mutex.
Definition: i2cdev.c:164

◆ I2C_DEV_TAKE_MUTEX

#define I2C_DEV_TAKE_MUTEX (   dev)
Value:
do { \
esp_err_t __ = i2c_dev_take_mutex(dev); \
if (__ != ESP_OK) return __;\
} while (0)
esp_err_t i2c_dev_take_mutex(i2c_dev_t *dev)
Take device mutex.
Definition: i2cdev.c:148

◆ I2CDEV_MAX_STRETCH_TIME

#define I2CDEV_MAX_STRETCH_TIME   0x00ffffff

Function Documentation

◆ i2c_dev_create_mutex()

esp_err_t i2c_dev_create_mutex ( i2c_dev_t dev)

Create mutex for device descriptor.

This function does nothing if option CONFIG_I2CDEV_NOLOCK is enabled.

Parameters
devDevice descriptor
Returns
ESP_OK on success

◆ i2c_dev_delete_mutex()

esp_err_t i2c_dev_delete_mutex ( i2c_dev_t dev)

Delete mutex for device descriptor.

This function does nothing if option CONFIG_I2CDEV_NOLOCK is enabled.

Parameters
devDevice descriptor
Returns
ESP_OK on success

◆ i2c_dev_give_mutex()

esp_err_t i2c_dev_give_mutex ( i2c_dev_t dev)

Give device mutex.

This function does nothing if option CONFIG_I2CDEV_NOLOCK is enabled.

Parameters
devDevice descriptor
Returns
ESP_OK on success

◆ i2c_dev_read()

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.

Issue a send operation of out_data register address, followed by reading in_size bytes from slave into in_data . Function is thread-safe.

Parameters
devDevice descriptor
out_dataPointer to data to send if non-null
out_sizeSize of data to send
[out]in_dataPointer to input data buffer
in_sizeNumber of byte to read
Returns
ESP_OK on success

◆ i2c_dev_read_reg()

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.

Shortcut to i2c_dev_read().

Parameters
devDevice descriptor
regRegister address
[out]in_dataPointer to input data buffer
in_sizeNumber of byte to read
Returns
ESP_OK on success

◆ i2c_dev_take_mutex()

esp_err_t i2c_dev_take_mutex ( i2c_dev_t dev)

Take device mutex.

This function does nothing if option CONFIG_I2CDEV_NOLOCK is enabled.

Parameters
devDevice descriptor
Returns
ESP_OK on success

◆ i2c_dev_write()

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.

Write out_size bytes from out_data to slave into out_reg register address. Function is thread-safe.

Parameters
devDevice descriptor
out_regPointer to register address to send if non-null
out_reg_sizeSize of register address
out_dataPointer to data to send
out_sizeSize of data to send
Returns
ESP_OK on success

◆ i2c_dev_write_reg()

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.

Shortcut to i2c_dev_write().

Parameters
devDevice descriptor
regRegister address
out_dataPointer to data to send
out_sizeSize of data to send
Returns
ESP_OK on success

◆ i2cdev_done()

esp_err_t i2cdev_done ( )

Finish work with library.

Uninstall i2c drivers.

Returns
ESP_OK on success

◆ i2cdev_init()

esp_err_t i2cdev_init ( )

Init library.

The function must be called before any other functions of this library.

Returns
ESP_OK on success

Variable Documentation

◆ mutex

SemaphoreHandle_t mutex
extern