IZAR Flight Controller 1.0.0
IZAR Flight Controller running with an ESP32.
i2cdev

Classes

struct  i2c_dev_t

Macros

#define CONFIG_I2CDEV_TIMEOUT   1000
#define I2CDEV_MAX_STRETCH_TIME   I2C_TIME_OUT_REG_V
#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, ...)

Enumerations

enum  i2c_dev_type_t { I2C_DEV_WRITE = 0 , I2C_DEV_READ }

Functions

esp_err_t i2cdev_init ()
 Init library.
esp_err_t i2cdev_done ()
 Finish work with library.
esp_err_t i2c_dev_create_mutex (i2c_dev_t *dev)
 Create mutex for device descriptor.
esp_err_t i2c_dev_delete_mutex (i2c_dev_t *dev)
 Delete mutex for device descriptor.
esp_err_t i2c_dev_take_mutex (i2c_dev_t *dev)
 Take device mutex.
esp_err_t i2c_dev_give_mutex (i2c_dev_t *dev)
 Give device mutex.
esp_err_t i2c_dev_probe (const i2c_dev_t *dev, i2c_dev_type_t operation_type)
 Check the availability of the device.
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.
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.
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.
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.

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

◆ CONFIG_I2CDEV_TIMEOUT

#define CONFIG_I2CDEV_TIMEOUT   1000

◆ I2C_DEV_CHECK

#define I2C_DEV_CHECK ( dev,
X )
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)
static const char * TAG
Definition i2cdev.c:40

◆ 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:160

◆ 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:144

◆ I2CDEV_MAX_STRETCH_TIME

#define I2CDEV_MAX_STRETCH_TIME   I2C_TIME_OUT_REG_V

Enumeration Type Documentation

◆ i2c_dev_type_t

I2C transaction type

Enumerator
I2C_DEV_WRITE 

Write operation

I2C_DEV_READ 

Read operation

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

< Invalid argument

< Generic esp_err_t code indicating failure

< esp_err_t value indicating success (no error)

Here is the caller graph for this function:

◆ 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

< Invalid argument

< esp_err_t value indicating success (no error)

Here is the caller graph for this function:

◆ 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

< Invalid argument

< Generic esp_err_t code indicating failure

< esp_err_t value indicating success (no error)

◆ i2c_dev_probe()

esp_err_t i2c_dev_probe ( const i2c_dev_t * dev,
i2c_dev_type_t operation_type )

Check the availability of the device.

Issue an operation of operation_type to the I2C device then stops.

Parameters
devDevice descriptor
operation_typeOperation type
Returns
ESP_OK if device is available

< Invalid argument

< Operation timed out

< esp_err_t value indicating success (no error)

< Generic esp_err_t code indicating failure

Here is the call graph for this function:

◆ 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

< Invalid argument

< Operation timed out

< esp_err_t value indicating success (no error)

< esp_err_t value indicating success (no error)

< Generic esp_err_t code indicating failure

Here is the call graph for this function:
Here is the caller graph for this function:

◆ 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
Here is the call graph for this function:
Here is the caller graph for this function:

◆ 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

< Invalid argument

< Operation timed out

< esp_err_t value indicating success (no error)

◆ 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

< Invalid argument

< Operation timed out

< esp_err_t value indicating success (no error)

< esp_err_t value indicating success (no error)

< Generic esp_err_t code indicating failure

Here is the call graph for this function:
Here is the caller graph for this function:

◆ 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
Here is the call graph for this function:
Here is the caller graph for this function:

◆ i2cdev_done()

esp_err_t i2cdev_done ( )

Finish work with library.

Uninstall i2c drivers.

Returns
ESP_OK on success

< Operation timed out

< Generic esp_err_t code indicating failure

< esp_err_t value indicating success (no error)

◆ 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

< Generic esp_err_t code indicating failure

< esp_err_t value indicating success (no error)

Here is the caller graph for this function: