![]() |
i2c
1.4.2
RoadNarrows Robotics I2C Package
|
Low-level I2C communication level. More...
Go to the source code of this file.
Classes | |
| struct | i2c_struct |
| I2C Bus Handle Type. More... | |
Macros | |
| #define | I2C_ADDR_NONE ((i2c_addr_t)(-1)) |
| no I2C address selected | |
Typedefs | |
| typedef ushort_t | i2c_addr_t |
| I2C Device Address Type. | |
| typedef struct i2c_struct | i2c_t |
| I2C Bus Handle Type. | |
Functions | |
| int | i2c_open (i2c_t *i2c, const char *device) |
| Open the host I2C Bus device. More... | |
| void | i2c_close (i2c_t *i2c) |
| Closes an I2C Bus. More... | |
| int | i2c_read (i2c_t *i2c, i2c_addr_t addr, byte_t *buf, uint_t len) |
| Read from an I2C device. More... | |
| int | i2c_write (i2c_t *i2c, i2c_addr_t addr, const byte_t *buf, uint_t len) |
| Write to an I2C device. More... | |
| int | i2c_transfer (i2c_t *i2c, i2c_addr_t addr, const byte_t *write_buf, uint_t write_len, byte_t *read_buf, uint_t read_len) |
| Perform a transfer with an I2C device. More... | |
| int | i2c_exists (i2c_t *i2c, i2c_addr_t addr) |
| Test the existance of a device at the given address on the given I2C Bus. More... | |
| int | i2c_scan (i2c_t *i2c, int(*callback)(i2c_t *i2c, i2c_addr_t addr, void *context), void *context) |
| Scans the given I2C Bus to find all connected devices. More... | |
Low-level I2C communication level.
This file has been modified from the original i2ccom.h source (see below).
Definition in file i2c.h.
| void i2c_close | ( | i2c_t * | i2c | ) |
Closes an I2C Bus.
| [in,out] | i2c | Pointer to I2C Bus handle. |
Definition at line 137 of file i2ccom.c.
References i2c_struct::addr, i2c_struct::fd, and I2C_ADDR_NONE.
Referenced by execQuit(), and i2ccore_close().
| int i2c_exists | ( | i2c_t * | i2c, |
| i2c_addr_t | addr | ||
| ) |
Test the existance of a device at the given address on the given I2C Bus.
| [in] | i2c | Pointer to I2C Bus handle. |
| addr | I2C device's 7/10-bit address. |
Definition at line 199 of file i2ccom.c.
References i2c_msg_struct::addr, i2c_msg_struct::buf, i2c_struct::fd, i2c_msg_struct::flags, I2C_M_NOFLAGS, I2C_RDWR, i2c_msg_struct::len, i2c_rdwr_ioctl_data_struct::msgs, and i2c_rdwr_ioctl_data_struct::nmsgs.
Referenced by execCheck(), i2c_scan(), and i2ccore_check().
| int i2c_open | ( | i2c_t * | i2c, |
| const char * | device | ||
| ) |
Open the host I2C Bus device.
| [out] | i2c | Pointer to I2C Bus handle. Note: This descriptor must be allocated by the caller. |
| device | A null-terminated string of the device name. If NULL, then the default '/dev/i2c/0' is used. |
Definition at line 118 of file i2ccom.c.
References i2c_struct::addr, i2c_struct::fd, and I2C_ADDR_NONE.
Referenced by i2ccore_open(), and MainInit().
| int i2c_read | ( | i2c_t * | i2c, |
| i2c_addr_t | addr, | ||
| byte_t * | buf, | ||
| uint_t | len | ||
| ) |
Read from an I2C device.
The i2c_read() primitive reads data from a device at the given address on the given I2C Bus.
| [in,out] | i2c | Pointer to I2C Bus handle. |
| addr | I2C device's 7/10-bit address. | |
| [out] | buf | Pointer to the buffer that will receive the data bytes. |
| len | Size of the buffer in bytes. |
Definition at line 147 of file i2ccom.c.
References i2c_struct::fd, and i2c_select_device().
Referenced by execRead(), and i2ccore_read().
| int i2c_scan | ( | i2c_t * | i2c, |
| int(*)(i2c_t *i2c, i2c_addr_t addr, void *context) | callback, | ||
| void * | context | ||
| ) |
Scans the given I2C Bus to find all connected devices.
For each device found, the provided callback function is called.
| [in] | i2c | Pointer to I2C Bus handle. |
| callback | A callback function called when a device is found. If this callback function returns a value <0 the bus scan stops immedialety and the value is used as return value by i2c_scan(). | |
| context | A user defined value or a pointer passed to the callback function. |
Definition at line 219 of file i2ccom.c.
References I2C_ADDR_DEV_HIGH, I2C_ADDR_DEV_LOW, and i2c_exists().
Referenced by execScan().
| int i2c_transfer | ( | i2c_t * | i2c, |
| i2c_addr_t | addr, | ||
| const byte_t * | write_buf, | ||
| uint_t | write_len, | ||
| byte_t * | read_buf, | ||
| uint_t | read_len | ||
| ) |
Perform a transfer with an I2C device.
The i2c_transfer() primitive writes data to and then reads data from a device at the given address on the given I2C Bus. It is optimize to reduce start/stop sequences.
| [in] | i2c | Pointer to I2C Bus handle. |
| addr | I2C device's 7/10-bit address. | |
| write_buf | Pointer to the buffer that contains the data to be written. | |
| write_len | Number of bytes to write. The data are in the write buffer. | |
| [out] | read_buf | Pointer to the buffer that will receive the data. |
| read_len | Size of the read buffer in bytes. |
Definition at line 171 of file i2ccom.c.
References i2c_msg_struct::addr, i2c_msg_struct::buf, i2c_struct::fd, i2c_msg_struct::flags, I2C_M_NOFLAGS, I2C_M_RD, I2C_RDWR, i2c_msg_struct::len, i2c_rdwr_ioctl_data_struct::msgs, and i2c_rdwr_ioctl_data_struct::nmsgs.
Referenced by execTrans(), execTransaction(), and i2ccore_transfer().
| int i2c_write | ( | i2c_t * | i2c, |
| i2c_addr_t | addr, | ||
| const byte_t * | buf, | ||
| uint_t | len | ||
| ) |
Write to an I2C device.
The i2c_write() primitive writes data to a device at the given address on the given I2C Bus.
| [in,out] | i2c | Pointer to I2C Bus handle. |
| addr | I2C device's 7/10-bit address. | |
| buf | Pointer to the buffer that will be written. | |
| len | Number of bytes to write. |
Definition at line 159 of file i2ccom.c.
References i2c_struct::fd, and i2c_select_device().
Referenced by execWrite(), and i2ccore_write().