Preserver custom pin assigments ()

This code allows Wire.begin() to assign the default values of SDA, and SCL only if they have not been previously configured.  Arduino libraries that use Wire() usually re-init the I2C interface in their initialization code with a call to Wire.begin().  If a user app sets custom pins assignment in setup(); These assignments will be overwritten with the default values  whenever Wire.begin() is called.
This commit is contained in:
chuck todd 2018-04-06 10:05:48 -06:00 committed by Me No Dev
parent 5abe49e8eb
commit 7998e2321d

@ -46,19 +46,27 @@ TwoWire::TwoWire(uint8_t bus_num)
void TwoWire::begin(int sdaPin, int sclPin, uint32_t frequency)
{
if(sdaPin < 0) {
if(sdaPin < 0) { // default param passed
if(num == 0) {
sdaPin = SDA;
if(sda==-1) sdaPin = SDA; //use Default Pin
else sdaPin = sda; // reuse prior pin
} else {
return;
if(sda==-1) {
log_e("no Default SDA Pin for Second Peripheral");
return; //no Default pin for Second Peripheral
} else sdaPin = sda; // reuse prior pin
}
}
if(sclPin < 0) {
if(sclPin < 0) { // default param passed
if(num == 0) {
sclPin = SCL;
if(scl==-1) sclPin = SCL; // use Default pin
else sclPin = scl; // reuse prior pin
} else {
return;
if(scl==-1){
log_e("no Default SCL Pin for Second Peripheral");
return; //no Default pin for Second Peripheral
} else sclPin = scl; // reuse prior pin
}
}