From 4227fcf75d33e45ed038726fd29f8713b5559d32 Mon Sep 17 00:00:00 2001 From: Lee Leahy Date: Sat, 2 Apr 2022 07:29:28 -1000 Subject: [PATCH 1/2] Don't send I2C restart --- src/qwiic_i2c.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/qwiic_i2c.cpp b/src/qwiic_i2c.cpp index f669492..a48dc15 100644 --- a/src/qwiic_i2c.cpp +++ b/src/qwiic_i2c.cpp @@ -146,9 +146,9 @@ int QwI2C::writeRegisterRegion(uint8_t i2c_address, uint8_t offset, uint8_t *dat data += nSent; // move up to remaining data in buffer // only release bus if we've sent all data - if(_i2cPort->endTransmission(nRemaining <= 0)) + if(_i2cPort->endTransmission()) return -1; // the client didn't ACK } return length - nRemaining; -} \ No newline at end of file +} From 24a573d865613a5183d9bb1808b3d56dd11bb65f Mon Sep 17 00:00:00 2001 From: Nathan Seidle Date: Tue, 12 Apr 2022 10:54:49 -0600 Subject: [PATCH 2/2] Add platform gate for ESP32 --- src/qwiic_i2c.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/qwiic_i2c.cpp b/src/qwiic_i2c.cpp index 1927d79..5b992d9 100644 --- a/src/qwiic_i2c.cpp +++ b/src/qwiic_i2c.cpp @@ -145,8 +145,13 @@ int QwI2C::writeRegisterRegion(uint8_t i2c_address, uint8_t offset, uint8_t* dat nRemaining -= nToWrite; // Note - use nToWrite, not nSent, or lock on esp32 data += nSent; // move up to remaining data in buffer +#if defined(ARDUINO_ARCH_ESP32) + // if we are on ESP32, release bus no matter what + if (m_i2cPort->endTransmission()) +#else // only release bus if we've sent all data - if (m_i2cPort->endTransmission()) + if (m_i2cPort->endTransmission(nRemaining <= 0)) +#endif return -1; // the client didn't ACK }