30#if (HAL_USE_I2C == TRUE) || defined(__DOXYGEN__)
76#if I2C_USE_MUTUAL_EXCLUSION == TRUE
80#if defined(I2C_DRIVER_EXT_INIT_HOOK)
81 I2C_DRIVER_EXT_INIT_HOOK(i2cp);
105#if defined(I2C_LLD_ENHANCED_API)
189 const uint8_t *txbuf,
197 (txbytes > 0U) && (txbuf != NULL) &&
198 ((rxbytes == 0U) || ((rxbytes > 0U) && (rxbuf != NULL))) &&
207 rxbuf, rxbytes, timeout);
246 (rxbytes > 0U) && (rxbuf != NULL) &&
265#if (I2C_USE_MUTUAL_EXCLUSION == TRUE) || defined(__DOXYGEN__)
301#if (I2C_ENABLE_SLAVE_MODE == TRUE) || defined(__DOXYGEN__)
321 msg_t result = i2c_lld_match_address(i2cp, addr);
365 rdymsg = i2c_lld_slave_receive_timeout(i2cp, rxbuf, rxbytes, timeout);
399 const uint8_t *txbuf,
415 rdymsg = i2c_lld_slave_transmit_timeout(i2cp, txbuf, txbytes, timeout);
msg_t i2cSlaveTransmitTimeout(I2CDriver *i2cp, const uint8_t *txbuf, size_t txbytes, sysinterval_t timeout)
Transmits data via the I2C bus as slave.
#define i2c_lld_get_errors(i2cp)
Get errors from I2C driver.
msg_t i2cMasterReceiveTimeout(I2CDriver *i2cp, i2caddr_t addr, uint8_t *rxbuf, size_t rxbytes, sysinterval_t timeout)
Receives data from the I2C bus.
void i2cInit(void)
I2C Driver initialization.
void i2c_lld_stop(I2CDriver *i2cp)
Deactivates the I2C peripheral.
void i2cObjectInit(I2CDriver *i2cp)
Initializes the standard part of a I2CDriver structure.
msg_t i2c_lld_master_receive_timeout(I2CDriver *i2cp, i2caddr_t addr, uint8_t *rxbuf, size_t rxbytes, sysinterval_t timeout)
Receives data via the I2C bus as master.
#define I2C_NO_ERROR
No error.
uint32_t i2cflags_t
Type of I2C Driver condition flags.
msg_t i2cStart(I2CDriver *i2cp, const I2CConfig *config)
Configures and activates the I2C peripheral.
struct hal_i2c_config I2CConfig
Type of a structure representing an I2C configuration.
i2cflags_t i2cGetErrors(I2CDriver *i2cp)
Returns the errors mask associated to the previous operation.
msg_t i2cSlaveReceiveTimeout(I2CDriver *i2cp, uint8_t *rxbuf, size_t rxbytes, sysinterval_t timeout)
Receive data via the I2C bus as slave and call handler.
msg_t i2cMasterTransmitTimeout(I2CDriver *i2cp, i2caddr_t addr, const uint8_t *txbuf, size_t txbytes, uint8_t *rxbuf, size_t rxbytes, sysinterval_t timeout)
Sends data via the I2C bus.
void i2c_lld_start(I2CDriver *i2cp)
Configures and activates the I2C peripheral.
void i2cReleaseBus(I2CDriver *i2cp)
Releases exclusive access to the I2C bus.
uint16_t i2caddr_t
Type representing an I2C address.
void i2cStop(I2CDriver *i2cp)
Deactivates the I2C peripheral.
void i2c_lld_init(void)
Low level I2C driver initialization.
msg_t i2cSlaveMatchAddress(I2CDriver *i2cp, i2caddr_t addr)
Listen I2C bus for address match.
void i2cAcquireBus(I2CDriver *i2cp)
Gains exclusive access to the I2C bus.
msg_t i2c_lld_master_transmit_timeout(I2CDriver *i2cp, i2caddr_t addr, const uint8_t *txbuf, size_t txbytes, uint8_t *rxbuf, size_t rxbytes, sysinterval_t timeout)
Transmits data via the I2C bus as master.
struct hal_i2c_driver I2CDriver
Type of a structure representing an I2C driver.
@ I2C_ACTIVE_TX
Transmitting.
@ I2C_ACTIVE_RX
Receiving.
#define chSysUnlock()
Leaves the kernel lock state.
#define chSysLock()
Enters the kernel lock state.
static void osalSysLock(void)
Enters a critical zone from thread context.
static void osalMutexObjectInit(mutex_t *mp)
Initializes a mutex_t object.
static void osalSysUnlock(void)
Leaves a critical zone from thread context.
void osalMutexLock(mutex_t *mp)
Locks the specified mutex.
#define osalDbgAssert(c, remark)
Condition assertion.
void osalMutexUnlock(mutex_t *mp)
Unlocks the specified mutex.
#define osalDbgCheck(c)
Function parameters check.
#define MSG_TIMEOUT
Wakeup caused by a timeout condition.
#define TIME_IMMEDIATE
Zero interval specification for some functions with a timeout specification.
uint64_t sysinterval_t
Type of time interval.
const I2CConfig * config
Current configuration data.
i2cflags_t errors
Error flags.
i2cstate_t state
Driver state.