IZAR Flight Controller 1.0.0
IZAR Flight Controller running with an ESP32.
i2cdev.c File Reference
#include <string.h>
#include <inttypes.h>
#include <freertos/FreeRTOS.h>
#include <freertos/task.h>
#include <esp_log.h>
#include "i2cdev.h"
Include dependency graph for i2cdev.c:

Classes

struct  i2c_port_state_t

Macros

#define SEMAPHORE_TAKE(port)
#define SEMAPHORE_GIVE(port)

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.
static bool cfg_equal (const i2c_config_t *a, const i2c_config_t *b)
static esp_err_t i2c_setup_port (const i2c_dev_t *dev)
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.

Variables

static const char * TAG = "i2cdev"
static i2c_port_state_t states [I2C_NUM_MAX]

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

◆ SEMAPHORE_GIVE

#define SEMAPHORE_GIVE ( port)
Value:
do { \
if (!xSemaphoreGive(states[port].lock)) \
{ \
ESP_LOGE(TAG, "Could not give port mutex %d", port); \
return ESP_FAIL; \
} \
} while (0)
static const char * TAG
Definition i2cdev.c:40
static i2c_port_state_t states[I2C_NUM_MAX]
Definition i2cdev.c:48

◆ SEMAPHORE_TAKE

#define SEMAPHORE_TAKE ( port)
Value:
do { \
if (!xSemaphoreTake(states[port].lock, pdMS_TO_TICKS(CONFIG_I2CDEV_TIMEOUT))) \
{ \
ESP_LOGE(TAG, "Could not take port mutex %d", port); \
return ESP_ERR_TIMEOUT; \
} \
} while (0)
#define CONFIG_I2CDEV_TIMEOUT
Definition i2cdev.h:38

Function Documentation

◆ cfg_equal()

bool cfg_equal ( const i2c_config_t * a,
const i2c_config_t * b )
inlinestatic
Here is the caller graph for this function:

◆ i2c_setup_port()

esp_err_t i2c_setup_port ( const i2c_dev_t * dev)
static

< Invalid argument

< esp_err_t value indicating success (no error)

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

Variable Documentation

◆ states

i2c_port_state_t states[I2C_NUM_MAX]
static

◆ TAG

const char* TAG = "i2cdev"
static