diff --git a/src/at42qt1070/at42qt1070.cxx b/src/at42qt1070/at42qt1070.cxx index 53ffa0cf..fed9f382 100644 --- a/src/at42qt1070/at42qt1070.cxx +++ b/src/at42qt1070/at42qt1070.cxx @@ -98,13 +98,21 @@ AT42QT1070::writeWord(uint8_t reg, uint16_t word) uint8_t AT42QT1070::readByte(uint8_t reg) { - return mraa_i2c_read_byte_data(m_i2c, reg); + int x = mraa_i2c_read_byte_data(m_i2c, reg); + if (x != -1) { + return (uint8_t) x; + } + return 0; } uint16_t AT42QT1070::readWord(uint8_t reg) { - return mraa_i2c_read_word_data(m_i2c, reg); + int x = mraa_i2c_read_word_data(m_i2c, reg); + if (x != -1) { + return (uint16_t) x; + } + return 0; } uint8_t diff --git a/src/mma7660/mma7660.cxx b/src/mma7660/mma7660.cxx index a0a87738..012fa2d1 100644 --- a/src/mma7660/mma7660.cxx +++ b/src/mma7660/mma7660.cxx @@ -80,7 +80,11 @@ bool MMA7660::writeByte(uint8_t reg, uint8_t byte) uint8_t MMA7660::readByte(uint8_t reg) { - return mraa_i2c_read_byte_data(m_i2c, reg); + int x = mraa_i2c_read_byte_data(m_i2c, reg); + if (x != -1) { + return (uint8_t) x; + } + return 0; } void MMA7660::getRawValues(int *x, int *y, int *z) diff --git a/src/pca9685/pca9685.cxx b/src/pca9685/pca9685.cxx index c9a1a2ce..79745983 100644 --- a/src/pca9685/pca9685.cxx +++ b/src/pca9685/pca9685.cxx @@ -107,12 +107,20 @@ bool PCA9685::writeWord(uint8_t reg, uint16_t word) uint8_t PCA9685::readByte(uint8_t reg) { - return mraa_i2c_read_byte_data(m_i2c, reg); + int x = mraa_i2c_read_byte_data(m_i2c, reg); + if (x != -1) { + return (uint8_t) x; + } + return 0; } uint16_t PCA9685::readWord(uint8_t reg) { - return mraa_i2c_read_word_data(m_i2c, reg); + int x = mraa_i2c_read_word_data(m_i2c, reg); + if (x != -1) { + return (uint16_t) x; + } + return 0; } bool PCA9685::setModeSleep(bool sleep) diff --git a/src/si114x/si114x.cxx b/src/si114x/si114x.cxx index e1b17182..7d75445b 100644 --- a/src/si114x/si114x.cxx +++ b/src/si114x/si114x.cxx @@ -91,12 +91,20 @@ bool SI114X::writeByte(uint8_t reg, uint8_t byte) uint8_t SI114X::readByte(uint8_t reg) { - return mraa_i2c_read_byte_data(m_i2c, reg); + int x = mraa_i2c_read_byte_data(m_i2c, reg); + if (x != -1) { + return (uint8_t) x; + } + return 0; } uint16_t SI114X::readWord(uint8_t reg) { - return mraa_i2c_read_word_data(m_i2c, reg); + int x = mraa_i2c_read_word_data(m_i2c, reg); + if (x != -1) { + return (uint16_t) x; + } + return 0; } void SI114X::setUVCalibration(uint8_t uvcoeff0, uint8_t uvcoeff1,