From c3192f589131d9466a8dcd1c6107aafd9152b452 Mon Sep 17 00:00:00 2001 From: Rodrigo Garcia <rodrigo.garcia@espressif.com> Date: Sat, 16 Jul 2022 18:26:59 -0300 Subject: [PATCH] Fixes Arduino Wire::begin overload --- cores/esp32/esp32-hal-i2c.c | 1 + libraries/Wire/src/Wire.h | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/cores/esp32/esp32-hal-i2c.c b/cores/esp32/esp32-hal-i2c.c index f01b501a020..4538a7ef076 100644 --- a/cores/esp32/esp32-hal-i2c.c +++ b/cores/esp32/esp32-hal-i2c.c @@ -72,6 +72,7 @@ esp_err_t i2cInit(uint8_t i2c_num, int8_t sda, int8_t scl, uint32_t frequency){ } else if(frequency > 1000000UL){ frequency = 1000000UL; } + log_i("Initialising I2C Master: sda=%d scl=%d freq=%d", sda, scl, frequency); i2c_config_t conf = { }; conf.mode = I2C_MODE_MASTER; diff --git a/libraries/Wire/src/Wire.h b/libraries/Wire/src/Wire.h index ca048bb16c4..3d028f3c3d5 100644 --- a/libraries/Wire/src/Wire.h +++ b/libraries/Wire/src/Wire.h @@ -76,8 +76,21 @@ class TwoWire: public Stream //call setPins() first, so that begin() can be called without arguments from libraries bool setPins(int sda, int scl); - bool begin(int sda=-1, int scl=-1, uint32_t frequency=0); // returns true, if successful init of i2c bus - bool begin(uint8_t slaveAddr, int sda=-1, int scl=-1, uint32_t frequency=0); + bool begin(int sda, int scl, uint32_t frequency=0); // returns true, if successful init of i2c bus + bool begin(uint8_t slaveAddr, int sda, int scl, uint32_t frequency); + // Explicit Overload for Arduino MainStream API compatibility + inline bool begin() + { + return begin(-1, -1, static_cast<uint32_t>(0)); + } + inline bool begin(uint8_t addr) + { + return begin(addr, -1, -1, 0); + } + inline bool begin(int addr) + { + return begin(static_cast<uint8_t>(addr), -1, -1, 0); + } bool end(); void setTimeOut(uint16_t timeOutMillis); // default timeout of i2c transactions is 50ms