Class Transmission

Class Documentation

class I2C::Transmission

RAII wrapper for ESP-IDFs i2c commands.

Public Functions

Transmission()

Construct a new clean Transmission object.

explicit Transmission(i2c_cmd_handle_t)

Construct a new Transmission object from existing handle.

Transmission(Transmission&&)
Transmission &operator=(Transmission&&)
~Transmission()
esp_err_t startBit()

Queue start bit into transmission.

Returns

  • ESP_OK Success

  • ESP_ERR_INVALID_ARG Parameter error

esp_err_t stopBit()

Queue stop bit into transmission.

Returns

  • ESP_OK Success

  • ESP_ERR_INVALID_ARG Parameter error

esp_err_t writeByte(std::uint8_t data, bool ACKCheck = EnableACKCheck)

Add write of 1 byte into transmission.

Parameters
  • data – data byte to write

  • ackCheck – enable ack checks

Returns

  • ESP_OK Success

  • ESP_ERR_INVALID_ARG Parameter error

esp_err_t readByte(std::uint8_t *data, ACKValue = ACK)

Add read of 1 byte into transmission.

Parameters
  • data – buffer to put read data into

  • ackValue – ack value for read command

Returns

  • ESP_OK Success

  • ESP_ERR_INVALID_ARG Parameter error

esp_err_t write(std::uint8_t *data, size_t dataLength, bool ackCheck = EnableACKCheck)

Add write of buffer into transmission.

Parameters
  • data – data byte to write

  • dataLength – length of data

  • ackCheck – enable ack checks

Returns

  • ESP_OK Success

  • ESP_ERR_INVALID_ARG Parameter error

esp_err_t read(std::uint8_t *data, size_t dataLength, ACKValue = ACK)

Add read of buffer into transmission.

Parameters
  • data – buffer to put read data into

  • dataLength – length of data

  • ackType – ack value for read command

Returns

  • ESP_OK Success

  • ESP_ERR_INVALID_ARG Parameter error

esp_err_t send(i2c_port_t i2cNum, TickType_t ticksToWait = 1000 / portTICK_RATE_MS)

Send queued commands.

Parameters
  • i2cNum – I2C port

  • ticksToWait – maximum wait ticks

Returns

  • ESP_OK Success

  • ESP_ERR_INVALID_ARG Parameter error

  • ESP_FAIL Sending command error, slave doesn’t ACK the transfer.

  • ESP_ERR_INVALID_STATE I2C driver not installed or not in master mode.

  • ESP_ERR_TIMEOUT Operation timeout because the bus is busy.

void reset()

Reset this transmission for future use.

i2c_cmd_handle_t raw()

Get the raw handle to I2C_cmd.

Returns

raw handle

void detach()

Detach the RAII object from i2c_cmd_handle.