DCMD_I2C_SEND

Updated: May 06, 2022
#include <hw/i2c.h>

#define DCMD_I2C_SEND               __DIOT (_DCMD_I2C, 5, i2c_send_t)

The arguments to devctl() are:

Argument Value
filedes A file descriptor that you obtained by opening the device.
dcmd DCMD_I2C_SEND
dev_data_ptr A pointer to a i2c_send_t that's followed by additional data
n_bytes sizeof(i2c_send_t) plus the size of the additional data
dev_info_ptr NULL

The DCMD_I2C_SEND command executes a master send transaction. It returns when the transaction is complete.

Input
  • i2c_send_t — the message header:
    typedef struct {
        i2c_addr_t slave;  /* slave address */
        uint32_t   len;    /* length of send data in bytes */
        uint32_t   stop;   /* send stop when complete? (0=no, 1=yes) */
    } i2c_send_t;
        
  • uint8_t[] — the data buffer
Output
None.

If an error occurs, the command returns:

EIO
The master send failed. The causes include: bad slave address, bad bus speed, bus is busy.
EFAULT
An error occurred while accessing the data buffer.
EINVAL
Bad message format.
ENOMEM
Insufficient memory.
EPERM
The master is locked by another connection.