12#define LOG_I2C_DEVICE(this) ESP_LOGCONFIG(TAG, " Address: 0x%02X", this->address_);
52 explicit operator uint8_t()
const {
return get(); }
107 explicit operator uint8_t()
const {
return get(); }
194 ErrorCode write_read(
const uint8_t *write_data,
size_t write_len, uint8_t *read_data,
size_t read_len)
const {
225 std::array<uint8_t, N> res;
226 if (!this->
read_bytes(a_register, res.data(), N)) {
232 std::array<uint8_t, N> res;
260 template<
size_t N>
bool write_bytes(uint8_t a_register,
const std::array<uint8_t, N> &
data) {
272 ESPDEPRECATED(
"The stop argument is no longer used. This will be removed from ESPHome 2026.3.0",
"2025.9.0")
277 ESPDEPRECATED(
"The stop argument is no longer used. This will be removed from ESPHome 2026.3.0",
"2025.9.0")
282 ESPDEPRECATED(
"The stop argument is no longer used; use write_read() for consecutive write and read. This will be "
283 "removed from ESPHome 2026.3.0",
287 ESPDEPRECATED(
"The stop argument is no longer used; use write_read() for consecutive write and read. This will be "
288 "removed from ESPHome 2026.3.0",
294 ESPDEPRECATED(
"The stop argument is no longer used; use write_read() for consecutive write and read. This will be "
295 "removed from ESPHome 2026.3.0",
This Class provides the methods to read and write bytes from an I2CBus.
virtual ErrorCode write_readv(uint8_t address, const uint8_t *write_buffer, size_t write_count, uint8_t *read_buffer, size_t read_count)=0
This virtual method writes bytes to an I2CBus from an array, then reads bytes into an array of ReadBu...
This Class provides the methods to read/write bytes from/to an i2c device.
ErrorCode write_register(uint8_t a_register, const uint8_t *data, size_t len) const
writes an array of bytes to a specific register in the I²C device
ErrorCode write_read(const uint8_t *write_data, size_t write_len, uint8_t *read_data, size_t read_len) const
writes an array of bytes to a device, then reads an array, as a single transaction
ESPDEPRECATED("The stop argument is no longer used. This will be removed from ESPHome 2026.3.0", "2025.9.0") ErrorCode read_register16(uint16_t a_register
bool read_bytes_raw(uint8_t *data, uint8_t len) const
ESPDEPRECATED("The stop argument is no longer used. This will be removed from ESPHome 2026.3.0", "2025.9.0") ErrorCode read_register(uint8_t a_register
bool write_bytes(uint8_t a_register, const std::array< uint8_t, N > &data)
ErrorCode write_register16(uint16_t a_register, const uint8_t *data, size_t len) const
write an array of bytes to a specific register in the I²C device
bool write_bytes_16(uint8_t a_register, const uint16_t *data, uint8_t len) const
void set_i2c_bus(I2CBus *bus)
we store the pointer to the I2CBus to use
ESPDEPRECATED("The stop argument is no longer used; use write_read() for consecutive write and read. This will be " "removed from ESPHome 2026.3.0", "2025.9.0") ErrorCode write(const uint8_t *data
ErrorCode write(const uint8_t *data, size_t len) const
writes an array of bytes to a device using an I2CBus
uint8_t get_i2c_address() const
Returns the I2C address of the object.
optional< std::array< uint8_t, N > > read_bytes_raw()
I2CBus * bus_
pointer to I2CBus instance
optional< uint8_t > read_byte(uint8_t a_register)
ErrorCode read(uint8_t *data, size_t len) const
reads an array of bytes from the device using an I2CBus
uint8_t address_
store the address of the device on the bus
bool write_byte(uint8_t a_register, uint8_t data) const
bool read_byte(uint8_t a_register, uint8_t *data)
bool read_byte_16(uint8_t a_register, uint16_t *data)
I2CRegister reg(uint8_t a_register)
calls the I2CRegister constructor
ErrorCode read_register16(uint16_t a_register, uint8_t *data, size_t len)
reads an array of bytes from a specific register in the I²C device
optional< std::array< uint8_t, N > > read_bytes(uint8_t a_register)
void set_i2c_address(uint8_t address)
We store the address of the device on the bus.
bool write_bytes(uint8_t a_register, const std::vector< uint8_t > &data) const
ESPDEPRECATED("The stop argument is no longer used; use write_read() for consecutive write and read. This will be " "removed from ESPHome 2026.3.0", "2025.9.0") ErrorCode write_register(uint8_t a_register
ErrorCode read_register(uint8_t a_register, uint8_t *data, size_t len)
reads an array of bytes from a specific register in the I²C device
bool read_bytes_16(uint8_t a_register, uint16_t *data, uint8_t len)
bool write_bytes(uint8_t a_register, const uint8_t *data, uint8_t len) const
bool write_byte_16(uint8_t a_register, uint16_t data) const
I2CRegister16 reg16(uint16_t a_register)
calls the I2CRegister16 constructor
bool read_bytes(uint8_t a_register, uint8_t *data, uint8_t len)
Compat APIs All methods below have been added for compatibility reasons.
ESPDEPRECATED("The stop argument is no longer used; use write_read() for consecutive write and read. This will be " "removed from ESPHome 2026.3.0", "2025.9.0") ErrorCode write_register16(uint16_t a_register
I2CDevice()=default
we use the C++ default constructor
This class is used to create I2CRegister16 objects that act as proxies to read/write internal registe...
uint16_t register_
the internal 16 bits address of the register
I2CRegister16(I2CDevice *parent, uint16_t a_register)
protected constructor that store the owning object and the register address.
I2CRegister16 & operator&=(uint8_t value)
overloads the compound &= operator.
I2CRegister16 & operator|=(uint8_t value)
overloads the compound |= operator.
I2CDevice * parent_
I2CDevice object pointer.
uint8_t get() const
returns the register value
I2CRegister16 & operator=(uint8_t value)
overloads the = operator.
This class is used to create I2CRegister objects that act as proxies to read/write internal registers...
I2CRegister(I2CDevice *parent, uint8_t a_register)
protected constructor that stores the owning object and the register address.
I2CRegister & operator|=(uint8_t value)
overloads the compound |= operator.
uint8_t get() const
returns the register value
I2CRegister & operator&=(uint8_t value)
overloads the compound &= operator.
I2CDevice * parent_
I2CDevice object pointer.
uint8_t register_
the internal address of the register
I2CRegister & operator=(uint8_t value)
overloads the = operator.
uint16_t i2ctohs(uint16_t i2cshort)
ErrorCode
Error codes returned by I2CBus and I2CDevice methods.
@ ERROR_OK
No error found during execution of method.
uint16_t htoi2cs(uint16_t hostshort)
Providing packet encoding functions for exchanging data with a remote host.
constexpr T convert_big_endian(T val)
Convert a value between host byte order and big endian (most significant byte first) order.