diff --git a/src/i2c/i2c.c b/src/i2c/i2c.c index a870c4f..ed57d2d 100644 --- a/src/i2c/i2c.c +++ b/src/i2c/i2c.c @@ -215,8 +215,9 @@ mraa_i2c_read(mraa_i2c_context dev, uint8_t* data, int length) uint8_t mraa_i2c_read_byte(mraa_i2c_context dev) { + if (IS_FUNC_DEFINED(dev, i2c_read_replace)) + return dev->advance_func->i2c_read_byte_replace(dev); i2c_smbus_data_t d; - if (mraa_i2c_smbus_access(dev->fh, I2C_SMBUS_READ, I2C_NOCMD, I2C_SMBUS_BYTE, &d) < 0) { syslog(LOG_ERR, "i2c: Failed to write"); return 0; @@ -240,8 +241,9 @@ mraa_i2c_read_byte_data(mraa_i2c_context dev, uint8_t command) uint16_t mraa_i2c_read_word_data(mraa_i2c_context dev, uint8_t command) { + if (IS_FUNC_DEFINED(dev, i2c_read_word_data_replace)) + return dev->advance_func->i2c_read_word_data_replace(dev, command); i2c_smbus_data_t d; - if (mraa_i2c_smbus_access(dev->fh, I2C_SMBUS_READ, command, I2C_SMBUS_WORD_DATA, &d) < 0) { syslog(LOG_ERR, "i2c: Failed to write"); return 0; @@ -252,6 +254,8 @@ mraa_i2c_read_word_data(mraa_i2c_context dev, uint8_t command) int mraa_i2c_read_bytes_data(mraa_i2c_context dev, uint8_t command, uint8_t* data, int length) { + if (IS_FUNC_DEFINED(dev, i2c_read_bytes_data_replace)) + return dev->advance_func->i2c_read_bytes_data_replace(dev, command, data, length); struct i2c_rdwr_ioctl_data d; struct i2c_msg m[2]; @@ -273,6 +277,8 @@ mraa_i2c_read_bytes_data(mraa_i2c_context dev, uint8_t command, uint8_t* data, i mraa_result_t mraa_i2c_write(mraa_i2c_context dev, const uint8_t* data, int length) { + if (IS_FUNC_DEFINED(dev, i2c_write_replace)) + return dev->advance_func->i2c_write_replace(dev, data, length); i2c_smbus_data_t d; int i; uint8_t command = data[0];