diff --git a/libraries/Wire/src/Wire.cpp b/libraries/Wire/src/Wire.cpp index bc580147..3fbd0eb0 100644 --- a/libraries/Wire/src/Wire.cpp +++ b/libraries/Wire/src/Wire.cpp @@ -58,6 +58,17 @@ TwoWire::~TwoWire() } } +bool TwoWire::setPins(int sdaPin, int sclPin) +{ + if(i2c) { + log_e("can not set pins if begin was already called"); + return false; + } + sda = sdaPin; + scl = sclPin; + return true; +} + bool TwoWire::begin(int sdaPin, int sclPin, uint32_t frequency) { if(sdaPin < 0) { // default param passed diff --git a/libraries/Wire/src/Wire.h b/libraries/Wire/src/Wire.h index 37288beb..00f268b7 100644 --- a/libraries/Wire/src/Wire.h +++ b/libraries/Wire/src/Wire.h @@ -67,6 +67,10 @@ protected: public: TwoWire(uint8_t bus_num); ~TwoWire(); + + //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 // calling will attemp to recover hung bus