Merge pull request #9826 from Staars/development

OneWire: silence compiler warning, do not redefine global function
This commit is contained in:
Theo Arends 2020-11-12 19:02:13 +01:00 committed by GitHub
commit 26224b5f0d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 23 additions and 27 deletions

View File

@ -152,9 +152,12 @@ sample code bearing this copyright.
#include "OneWire.h"
#ifdef ARDUINO_ARCH_ESP32
#define noInterrupts() {portMUX_TYPE mux = portMUX_INITIALIZER_UNLOCKED;portENTER_CRITICAL(&mux)
#define interrupts() portEXIT_CRITICAL(&mux);}
#ifdef ESP32
#define t_noInterrupts() {portMUX_TYPE mux = portMUX_INITIALIZER_UNLOCKED;portENTER_CRITICAL(&mux)
#define t_interrupts() portEXIT_CRITICAL(&mux);}
#else
#define t_noInterrupts noInterrupts
#define t_interrupts interrupts
#endif
OneWire::OneWire(uint8_t pin)
@ -184,23 +187,23 @@ uint8_t OneWire::reset(void)
volatile IO_REG_TYPE *reg IO_REG_BASE_ATTR = baseReg;
uint8_t r;
uint8_t retries = 125;
noInterrupts();
t_noInterrupts();
DIRECT_MODE_INPUT(reg, mask);
interrupts();
t_interrupts();
// wait until the wire is high... just in case
do {
if (--retries == 0) return 0;
delayMicroseconds(2);
} while ( !DIRECT_READ(reg, mask));
noInterrupts();
t_noInterrupts();
DIRECT_WRITE_LOW(reg, mask);
DIRECT_MODE_OUTPUT(reg, mask); // drive output low
delayMicroseconds(480);
DIRECT_MODE_INPUT(reg, mask); // allow it to float
delayMicroseconds(70);
r = !DIRECT_READ(reg, mask);
interrupts();
t_interrupts();
delayMicroseconds(410);
return r;
}
@ -219,20 +222,20 @@ void OneWire::write_bit(uint8_t v)
volatile IO_REG_TYPE *reg IO_REG_BASE_ATTR = baseReg;
if (v & 1) {
noInterrupts();
t_noInterrupts();
DIRECT_WRITE_LOW(reg, mask);
DIRECT_MODE_OUTPUT(reg, mask); // drive output low
delayMicroseconds(10);
DIRECT_WRITE_HIGH(reg, mask); // drive output high
interrupts();
t_interrupts();
delayMicroseconds(55);
} else {
noInterrupts();
t_noInterrupts();
DIRECT_WRITE_LOW(reg, mask);
DIRECT_MODE_OUTPUT(reg, mask); // drive output low
delayMicroseconds(65);
DIRECT_WRITE_HIGH(reg, mask); // drive output high
interrupts();
t_interrupts();
delayMicroseconds(5);
}
}
@ -251,14 +254,14 @@ uint8_t OneWire::read_bit(void)
volatile IO_REG_TYPE *reg IO_REG_BASE_ATTR = baseReg;
uint8_t r;
noInterrupts();
t_noInterrupts();
DIRECT_MODE_OUTPUT(reg, mask);
DIRECT_WRITE_LOW(reg, mask);
delayMicroseconds(3);
DIRECT_MODE_INPUT(reg, mask); // let pin float, pull up will raise
delayMicroseconds(10);
r = DIRECT_READ(reg, mask);
interrupts();
t_interrupts();
delayMicroseconds(53);
return r;
}
@ -277,10 +280,10 @@ void OneWire::write(uint8_t v, uint8_t power /* = 0 */) {
OneWire::write_bit( (bitMask & v)?1:0);
}
if ( !power) {
noInterrupts();
t_noInterrupts();
DIRECT_MODE_INPUT(baseReg, bitmask);
DIRECT_WRITE_LOW(baseReg, bitmask);
interrupts();
t_interrupts();
}
}
@ -288,10 +291,10 @@ void OneWire::write_bytes(const uint8_t *buf, uint16_t count, bool power /* = 0
for (uint16_t i = 0 ; i < count ; i++)
write(buf[i]);
if (!power) {
noInterrupts();
t_noInterrupts();
DIRECT_MODE_INPUT(baseReg, bitmask);
DIRECT_WRITE_LOW(baseReg, bitmask);
interrupts();
t_interrupts();
}
}
@ -335,9 +338,9 @@ void OneWire::skip()
void OneWire::depower()
{
noInterrupts();
t_noInterrupts();
DIRECT_MODE_INPUT(baseReg, bitmask);
interrupts();
t_interrupts();
}
#if ONEWIRE_SEARCH
@ -615,11 +618,4 @@ uint16_t OneWire::crc16(const uint8_t* input, uint16_t len, uint16_t crc)
return crc;
}
#endif
#ifdef ARDUINO_ARCH_ESP32
#undef noInterrupts()
#undef interrupts()
#endif
#endif
#endif