diff --git a/libraries/Wire/src/Wire.cpp b/libraries/Wire/src/Wire.cpp index 9935af00..3acea70a 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 8617d614..2d98d4db 100644 --- a/libraries/Wire/src/Wire.h +++ b/libraries/Wire/src/Wire.h @@ -67,8 +67,11 @@ 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=100000); // returns true, if successful init of i2c bus - // calling will attemp to recover hung bus void setClock(uint32_t frequency); // change bus clock without initing hardware size_t getClock(); // current bus clock rate in hz