From a9094d3e8609dd56e61126a501d33b23f6301509 Mon Sep 17 00:00:00 2001 From: codepam Date: Fri, 24 Sep 2021 10:09:00 +0300 Subject: [PATCH] Fix 'rtc_gpio_desc was not declared' compile error with arduino-esp32 v2.0.0 --- util/OneWire_direct_gpio.h | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/util/OneWire_direct_gpio.h b/util/OneWire_direct_gpio.h index 5b18439..8df13c8 100644 --- a/util/OneWire_direct_gpio.h +++ b/util/OneWire_direct_gpio.h @@ -158,6 +158,18 @@ void directModeInput(IO_REG_TYPE pin) { if ( digitalPinIsValid(pin) ) { + #if defined(ESP_ARDUINO_VERSION) + #if ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(2, 0, 0) + int pin_io = rtc_io_number_get((gpio_num_t)pin); + uint32_t rtc_reg(rtc_io_desc[pin_io].reg); + + if ( rtc_reg ) // RTC pins PULL settings + { + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_io_desc[pin_io].mux); + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_io_desc[pin_io].pullup | rtc_io_desc[pin_io].pulldown); + } + #endif + #else uint32_t rtc_reg(rtc_gpio_desc[pin].reg); if ( rtc_reg ) // RTC pins PULL settings @@ -165,6 +177,7 @@ void directModeInput(IO_REG_TYPE pin) ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].mux); ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].pullup | rtc_gpio_desc[pin].pulldown); } + #endif if ( pin < 32 ) GPIO.enable_w1tc = ((uint32_t)1 << pin); @@ -186,6 +199,18 @@ void directModeOutput(IO_REG_TYPE pin) { if ( digitalPinIsValid(pin) && pin <= 33 ) // pins above 33 can be only inputs { + #if defined(ESP_ARDUINO_VERSION) + #if ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(2, 0, 0) + int pin_io = rtc_io_number_get((gpio_num_t)pin); + uint32_t rtc_reg(rtc_io_desc[pin_io].reg); + + if ( rtc_reg ) // RTC pins PULL settings + { + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_io_desc[pin_io].mux); + ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_io_desc[pin_io].pullup | rtc_io_desc[pin_io].pulldown); + } + #endif + #else uint32_t rtc_reg(rtc_gpio_desc[pin].reg); if ( rtc_reg ) // RTC pins PULL settings @@ -193,6 +218,7 @@ void directModeOutput(IO_REG_TYPE pin) ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].mux); ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_gpio_desc[pin].pullup | rtc_gpio_desc[pin].pulldown); } + #endif if ( pin < 32 ) GPIO.enable_w1ts = ((uint32_t)1 << pin);