From 09209bc0f80ac91f9180ff2b5a9e9d55d3a79c00 Mon Sep 17 00:00:00 2001 From: ratio-x <78367155+ratio-x@users.noreply.github.com> Date: Wed, 2 Mar 2022 13:12:29 +0100 Subject: [PATCH] Wire.endTransmission() uses write() to enable I2C scanning Revert PR #214, as discussed in issue 414. --- libraries/Wire/Wire.cpp | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/libraries/Wire/Wire.cpp b/libraries/Wire/Wire.cpp index ac4945f72..cea6e3603 100644 --- a/libraries/Wire/Wire.cpp +++ b/libraries/Wire/Wire.cpp @@ -69,16 +69,9 @@ void arduino::MbedI2C::beginTransmission(uint8_t address) { } uint8_t arduino::MbedI2C::endTransmission(bool stopBit) { - #ifndef TARGET_PORTENTA_H7 - if (usedTxBuffer == 0) { - // we are scanning, return 0 if the addresed device responds with an ACK - char buf[1]; - int ret = master->read(_address, buf, 1, !stopBit); - return ret; - } - #endif if (master->write(_address, (const char *) txBuffer, usedTxBuffer, !stopBit) == 0) return 0; - return 2; + if (usedTxBuffer == 0) return 2; // received NAK on transmit of address (without data) + return 3; // received NAK on transmit of data } uint8_t arduino::MbedI2C::endTransmission(void) { @@ -188,4 +181,4 @@ arduino::MbedI2C Wire(I2C_SDA, I2C_SCL); #endif #if WIRE_HOWMANY > 1 arduino::MbedI2C Wire1(I2C_SDA1, I2C_SCL1); -#endif \ No newline at end of file +#endif