CDC Badge OS
Firmware for the CDC Badge v1.0 hardware security key
Loading...
Searching...
No Matches
cdc::hal::I2cBusImpl Class Reference
Inheritance diagram for cdc::hal::I2cBusImpl:
cdc::hal::II2cBus cdc::core::IService

Public Member Functions

 I2cBusImpl (i2c_port_t port, gpio_num_t sda, gpio_num_t scl, const char *name)
bool init () override
 Initializes hardware I2C controller and driver.
bool start () override
void stop () override
core::ServiceState getState () const override
const char * getName () const override
esp_err_t addDevice (uint8_t addr, I2cDeviceHandle *out_dev) override
 Registers an I2C target device in static device pool.
esp_err_t writeReg (I2cDeviceHandle dev, uint8_t reg, const uint8_t *data, size_t len) override
 Writes bytes to a register of an I2C device.
esp_err_t readReg (I2cDeviceHandle dev, uint8_t reg, uint8_t *data, size_t len) override
 Reads bytes from a register of an I2C device.
esp_err_t writeRaw (uint8_t addr, const uint8_t *data, size_t len) override
esp_err_t readRaw (uint8_t addr, uint8_t *data, size_t len) override
esp_err_t writeReadRaw (uint8_t addr, const uint8_t *wr, size_t wr_len, uint8_t *rd, size_t rd_len) override
bool probe (uint8_t addr) override
esp_err_t eepromRead (uint8_t addr, uint16_t offset, uint8_t *buf, size_t len) override
esp_err_t eepromWrite (uint8_t addr, uint16_t offset, const uint8_t *buf, size_t len) override
Public Member Functions inherited from cdc::hal::II2cBus
virtual ~II2cBus ()=default
Public Member Functions inherited from cdc::core::IService
virtual ~IService ()=default

Detailed Description

Concrete I2C bus implementation using legacy driver

Definition at line 32 of file I2cBus.cpp.

Constructor & Destructor Documentation

◆ I2cBusImpl()

cdc::hal::I2cBusImpl::I2cBusImpl ( i2c_port_t port,
gpio_num_t sda,
gpio_num_t scl,
const char * name )
inline

Definition at line 34 of file I2cBus.cpp.

References name.

Member Function Documentation

◆ addDevice()

esp_err_t cdc::hal::I2cBusImpl::addDevice ( uint8_t addr,
I2cDeviceHandle * out_dev )
overridevirtual

Registers an I2C target device in static device pool.

Parameters
addr7-bit device address.
out_devOutput handle for registered device.
Returns
ESP-IDF status code.

Implements cdc::hal::II2cBus.

Definition at line 114 of file I2cBus.cpp.

References cdc::hal::I2cDevice::addr, LOG_E, LOG_I, cdc::hal::I2cDevice::port, and TAG.

◆ eepromRead()

esp_err_t cdc::hal::I2cBusImpl::eepromRead ( uint8_t addr,
uint16_t offset,
uint8_t * buf,
size_t len )
overridevirtual

Read from a 16-bit-addressed EEPROM (24Cxx-style) at a byte offset.

Implements cdc::hal::II2cBus.

Definition at line 241 of file I2cBus.cpp.

References writeReadRaw().

◆ eepromWrite()

esp_err_t cdc::hal::I2cBusImpl::eepromWrite ( uint8_t addr,
uint16_t offset,
const uint8_t * buf,
size_t len )
overridevirtual

Page-aware write to a 16-bit-addressed EEPROM at a byte offset.

Implements cdc::hal::II2cBus.

Definition at line 247 of file I2cBus.cpp.

References writeRaw().

◆ getName()

const char * cdc::hal::I2cBusImpl::getName ( ) const
inlineoverridevirtual

Get service name (for logging/debugging)

Implements cdc::core::IService.

Definition at line 42 of file I2cBus.cpp.

◆ getState()

core::ServiceState cdc::hal::I2cBusImpl::getState ( ) const
inlineoverridevirtual

Get current service state

Implements cdc::core::IService.

Definition at line 41 of file I2cBus.cpp.

◆ init()

bool cdc::hal::I2cBusImpl::init ( )
overridevirtual

Initializes hardware I2C controller and driver.

Returns
true if initialization succeeded.

Implements cdc::core::IService.

Definition at line 75 of file I2cBus.cpp.

References cdc::core::ERROR, cdc::hal::I2C_FREQ_HZ, cdc::core::INITIALIZED, LOG_E, LOG_I, TAG, and cdc::core::UNINITIALIZED.

◆ probe()

bool cdc::hal::I2cBusImpl::probe ( uint8_t addr)
overridevirtual

Probe whether a device ACKs at the given 7-bit address.

Implements cdc::hal::II2cBus.

Definition at line 231 of file I2cBus.cpp.

◆ readRaw()

esp_err_t cdc::hal::I2cBusImpl::readRaw ( uint8_t addr,
uint8_t * data,
size_t len )
overridevirtual

Raw read transaction from a 7-bit address.

Implements cdc::hal::II2cBus.

Definition at line 203 of file I2cBus.cpp.

References cdc::hal::I2C_TIMEOUT_MS.

◆ readReg()

esp_err_t cdc::hal::I2cBusImpl::readReg ( I2cDeviceHandle handle,
uint8_t reg,
uint8_t * data,
size_t len )
overridevirtual

Reads bytes from a register of an I2C device.

Parameters
handleDevice handle.
regRegister address.
dataOutput data buffer.
lenNumber of bytes to read.
Returns
ESP-IDF status code.

Implements cdc::hal::II2cBus.

Definition at line 165 of file I2cBus.cpp.

References cdc::hal::I2C_TIMEOUT_MS.

◆ start()

bool cdc::hal::I2cBusImpl::start ( )
inlineoverridevirtual

Start the service (can be called after init or stop)

Returns
true on success

Implements cdc::core::IService.

Definition at line 39 of file I2cBus.cpp.

References cdc::core::INITIALIZED.

◆ stop()

void cdc::hal::I2cBusImpl::stop ( )
inlineoverridevirtual

Stop the service (reversible, can start again)

Implements cdc::core::IService.

Definition at line 40 of file I2cBus.cpp.

◆ writeRaw()

esp_err_t cdc::hal::I2cBusImpl::writeRaw ( uint8_t addr,
const uint8_t * data,
size_t len )
overridevirtual

Raw write transaction to a 7-bit address (no register prefix).

Implements cdc::hal::II2cBus.

Definition at line 191 of file I2cBus.cpp.

References cdc::hal::I2C_TIMEOUT_MS.

Referenced by eepromWrite().

◆ writeReadRaw()

esp_err_t cdc::hal::I2cBusImpl::writeReadRaw ( uint8_t addr,
const uint8_t * wr,
size_t wr_len,
uint8_t * rd,
size_t rd_len )
overridevirtual

Raw write-then-read (repeated start) transaction.

Implements cdc::hal::II2cBus.

Definition at line 215 of file I2cBus.cpp.

References cdc::hal::I2C_TIMEOUT_MS.

Referenced by eepromRead().

◆ writeReg()

esp_err_t cdc::hal::I2cBusImpl::writeReg ( I2cDeviceHandle handle,
uint8_t reg,
const uint8_t * data,
size_t len )
overridevirtual

Writes bytes to a register of an I2C device.

Parameters
handleDevice handle.
regRegister address.
dataData buffer.
lenNumber of bytes to write.
Returns
ESP-IDF status code.

Implements cdc::hal::II2cBus.

Definition at line 137 of file I2cBus.cpp.

References cdc::hal::I2C_TIMEOUT_MS.


The documentation for this class was generated from the following file: