37 #include "driver/i2c.h"
43 #define SMBUS_DEFAULT_TIMEOUT (1000 / portTICK_RATE_MS)
47 typedef uint16_t i2c_address_t;
bool init
True if struct has been initialised, otherwise false.
Definition: smbus.h:54
esp_err_t smbus_write_block(const smbus_info_t *smbus_info, uint8_t command, uint8_t *data, uint8_t len)
Write up to 255 bytes to a slave device with a command code. This uses a byte count to negotiate the ...
Definition: smbus.c:317
esp_err_t smbus_write_word(const smbus_info_t *smbus_info, uint8_t command, uint16_t data)
Write a single word (two bytes) to a slave device with a command code. The least significant byte is ...
Definition: smbus.c:284
esp_err_t smbus_write_byte(const smbus_info_t *smbus_info, uint8_t command, uint8_t data)
Write a single byte to a slave device with a command code.
Definition: smbus.c:278
esp_err_t smbus_i2c_write_block(const smbus_info_t *smbus_info, uint8_t command, uint8_t *data, size_t len)
Write bytes to a slave device with a command code. No byte count is used - the transaction lasts as l...
Definition: smbus.c:391
void smbus_free(smbus_info_t **smbus_info)
Delete an existing SMBus info instance.
Definition: smbus.c:186
smbus_info_t * smbus_malloc(void)
Construct a new SMBus info instance. New instance should be initialised before calling other function...
Definition: smbus.c:171
Structure containing information related to the SMBus protocol.
Definition: smbus.h:52
esp_err_t smbus_read_block(const smbus_info_t *smbus_info, uint8_t command, uint8_t *data, uint8_t *len)
Read up to 255 bytes from a slave device with a command code. This uses a byte count to negotiate the...
Definition: smbus.c:339
esp_err_t smbus_send_byte(const smbus_info_t *smbus_info, uint8_t data)
Send a single byte to a slave device.
Definition: smbus.c:244
esp_err_t smbus_init(smbus_info_t *smbus_info, i2c_port_t i2c_port, i2c_address_t address)
Initialise a SMBus info instance with the specified I2C information. The I2C timeout defaults to appr...
Definition: smbus.c:200
esp_err_t smbus_set_timeout(smbus_info_t *smbus_info, portBASE_TYPE timeout)
Set the I2C timeout. I2C transactions that do not complete within this period are considered an error...
Definition: smbus.c:217
i2c_address_t address
I2C address of slave device.
Definition: smbus.h:56
i2c_port_t i2c_port
ESP-IDF I2C port number.
Definition: smbus.h:55
esp_err_t smbus_i2c_read_block(const smbus_info_t *smbus_info, uint8_t command, uint8_t *data, size_t len)
Read bytes from a slave device with a command code (combined format). No byte count is used - the tra...
Definition: smbus.c:397
portBASE_TYPE timeout
Number of ticks until I2C operation timeout.
Definition: smbus.h:57
esp_err_t smbus_quick(const smbus_info_t *smbus_info, bool bit)
Send a single bit to a slave device in the place of the read/write bit. May be used to simply turn a ...
Definition: smbus.c:228
esp_err_t smbus_read_byte(const smbus_info_t *smbus_info, uint8_t command, uint8_t *data)
Read a single byte from a slave device with a command code.
Definition: smbus.c:291
uint16_t i2c_address_t
7-bit or 10-bit I2C slave address.
Definition: smbus.h:47
esp_err_t smbus_receive_byte(const smbus_info_t *smbus_info, uint8_t *data)
Receive a single byte from a slave device.
Definition: smbus.c:261
esp_err_t smbus_read_word(const smbus_info_t *smbus_info, uint8_t command, uint16_t *data)
Read a single word (two bytes) from a slave device with a command code. The first byte received is th...
Definition: smbus.c:297