From 4e26a3b42cb49974f63d1b8727d7b1d1830c9c81 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Tue, 17 Aug 2010 13:23:41 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@2133 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/src/i2c.c | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) (limited to 'os/hal/src') diff --git a/os/hal/src/i2c.c b/os/hal/src/i2c.c index 03d882446..cc48c4147 100644 --- a/os/hal/src/i2c.c +++ b/os/hal/src/i2c.c @@ -104,19 +104,24 @@ void i2cStop(I2CDriver *i2cp) { } /** - * @brief Initiates a master bus transaction. + * @brief Initiates a master bus transaction. + * @details This function sends a start bit followed by an one or two bytes + * header. * * @param[in] i2cp pointer to the @p I2CDriver object + * @param[in] header transaction header * @param[in] callback operation complete callback */ -void i2cMasterStartI(I2CDriver *i2cp, i2ccallback_t callback) { +void i2cMasterStartI(I2CDriver *i2cp, + uint16_t header, + i2ccallback_t callback) { chDbgCheck((i2cp != NULL) && (callback != NULL), "i2cMasterStartI"); - chDbgAssert((i2cp->i2c_state == I2C_READY) || (i2cp->i2c_state == I2C_MREADY), + chDbgAssert(i2cp->i2c_state == I2C_READY, "i2cMasterStartI(), #1", "invalid state"); i2cp->id_callback = callback; - i2c_lld_master_start(i2cp); + i2c_lld_master_start(i2cp, header); } /** @@ -135,6 +140,24 @@ void i2cMasterStopI(I2CDriver *i2cp, i2ccallback_t callback) { i2c_lld_master_stop(i2cp); } + +/** + * @brief Sends a restart bit. + * @details Restart bits are required by some types of I2C transactions. + * + * @param[in] i2cp pointer to the @p I2CDriver object + * @param[in] callback operation complete callback + */ +void i2cMasterRestartI(I2CDriver *i2cp, i2ccallback_t callback) { + + chDbgCheck((i2cp != NULL) && (callback != NULL), "i2cMasterRestartI"); + chDbgAssert(i2cp->i2c_state == I2C_MREADY, + "i2cMasterRestartI(), #1", "invalid state"); + + i2cp->id_callback = callback; + i2c_lld_master_restart(i2cp); +} + /** * @brief Master transmission. * -- cgit v1.2.3