From c565c72dd174da5dd15a1f1b5cd3372e8c73d90d Mon Sep 17 00:00:00 2001 From: Wim Date: Tue, 3 Feb 2015 21:49:50 +0100 Subject: [PATCH] Update I2C Slave for lpc812 The dedicated I2C Slave byte read and byte write functions need to be called from 'common' mbed I2CSlave API for devices that have separate Master and Slave engines such as the lpc812 and lpc1549. --- libraries/mbed/common/I2CSlave.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/libraries/mbed/common/I2CSlave.cpp b/libraries/mbed/common/I2CSlave.cpp index 43940939c4..9543a63b73 100644 --- a/libraries/mbed/common/I2CSlave.cpp +++ b/libraries/mbed/common/I2CSlave.cpp @@ -43,7 +43,16 @@ int I2CSlave::read(char *data, int length) { } int I2CSlave::read(void) { +// The dedicated I2C Slave byte read and byte write functions need to be called +// from 'common' mbed I2CSlave API for devices that have separate Master and +// Slave engines such as the lpc812 and lpc1549. +// +//#if defined (TARGET_LPC812) || defined (TARGET_LPC824) || defined (TARGET_LPC1549) +#if defined (TARGET_LPC812) + return i2c_slave_byte_read(&_i2c, 0); +#else return i2c_byte_read(&_i2c, 0); +#endif } int I2CSlave::write(const char *data, int length) { @@ -51,7 +60,16 @@ int I2CSlave::write(const char *data, int length) { } int I2CSlave::write(int data) { +// The dedicated I2C Slave byte read and byte write functions need to be called +// from 'common' mbed I2CSlave API for devices that have separate Master and +// Slave engines such as the lpc812 and lpc1549. +// +//#if defined (TARGET_LPC812) || defined (TARGET_LPC824) || defined (TARGET_LPC1549) +#if defined (TARGET_LPC812) + return i2c_slave_byte_write(&_i2c, data); +#else return i2c_byte_write(&_i2c, data); +#endif } void I2CSlave::stop(void) {