Unable to use default serial GPIOs by TasmotaSerial regression from v14.5.0 with IDF 5.3.2.250120 (#23775)
This commit is contained in:
parent
66801313aa
commit
ed35bbff84
@ -24,6 +24,7 @@ All notable changes to this project will be documented in this file.
|
|||||||
### Fixed
|
### Fixed
|
||||||
- Syslog RFC5424 compliance (#23509)
|
- Syslog RFC5424 compliance (#23509)
|
||||||
- Berry calling `setmember` with a function (#23825)
|
- Berry calling `setmember` with a function (#23825)
|
||||||
|
- Unable to use default serial GPIOs by TasmotaSerial regression from v14.5.0 with IDF 5.3.2.250120 (#23775)
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
- `user-scalable=no` from HTTP HEADER (#23798)
|
- `user-scalable=no` from HTTP HEADER (#23798)
|
||||||
|
|||||||
@ -152,6 +152,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm
|
|||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
- Syslog RFC5424 compliance [#23509](https://github.com/arendst/Tasmota/issues/23509)
|
- Syslog RFC5424 compliance [#23509](https://github.com/arendst/Tasmota/issues/23509)
|
||||||
|
- Unable to use default serial GPIOs by TasmotaSerial regression from v14.5.0 with IDF 5.3.2.250120 [#23775](https://github.com/arendst/Tasmota/issues/23775)
|
||||||
- AHT30 sensor start with null values after deep sleep [#23624](https://github.com/arendst/Tasmota/issues/23624)
|
- AHT30 sensor start with null values after deep sleep [#23624](https://github.com/arendst/Tasmota/issues/23624)
|
||||||
- NeoPool reset to default settings [#23734](https://github.com/arendst/Tasmota/issues/23734)
|
- NeoPool reset to default settings [#23734](https://github.com/arendst/Tasmota/issues/23734)
|
||||||
- Berry vulnerability in JSON parsing for unicode [#23603](https://github.com/arendst/Tasmota/issues/23603)
|
- Berry vulnerability in JSON parsing for unicode [#23603](https://github.com/arendst/Tasmota/issues/23603)
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "TasmotaSerial",
|
"name": "TasmotaSerial",
|
||||||
"version": "3.6.0",
|
"version": "3.7.0",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"serial", "io", "TasmotaSerial"
|
"serial", "io", "TasmotaSerial"
|
||||||
],
|
],
|
||||||
@ -1,5 +1,5 @@
|
|||||||
name=TasmotaSerial
|
name=TasmotaSerial
|
||||||
version=3.6.0
|
version=3.7.0
|
||||||
author=Theo Arends
|
author=Theo Arends
|
||||||
maintainer=Theo Arends <theo@arends.com>
|
maintainer=Theo Arends <theo@arends.com>
|
||||||
sentence=Implementation of software serial with hardware serial fallback for ESP8266 and ESP32.
|
sentence=Implementation of software serial with hardware serial fallback for ESP8266 and ESP32.
|
||||||
@ -27,6 +27,9 @@ extern "C" {
|
|||||||
|
|
||||||
#include <TasmotaSerial.h>
|
#include <TasmotaSerial.h>
|
||||||
|
|
||||||
|
extern void AddLog(uint32_t loglevel, PGM_P formatP, ...);
|
||||||
|
enum LoggingLevels {LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE};
|
||||||
|
|
||||||
#ifdef ESP8266
|
#ifdef ESP8266
|
||||||
|
|
||||||
void IRAM_ATTR callRxRead(void *self) { ((TasmotaSerial*)self)->rxRead(); };
|
void IRAM_ATTR callRxRead(void *self) { ((TasmotaSerial*)self)->rxRead(); };
|
||||||
@ -152,6 +155,17 @@ void TasmotaSerial::setTransmitEnablePin(int tx_enable_pin) {
|
|||||||
|
|
||||||
#ifdef ESP32
|
#ifdef ESP32
|
||||||
bool TasmotaSerial::freeUart(void) {
|
bool TasmotaSerial::freeUart(void) {
|
||||||
|
// If users selects default serial interface keep using UART0
|
||||||
|
// From cores\esp32\HardwareSerial.cpp: There is always Seria0 for UART0
|
||||||
|
int pin_soc_rx0 = gpioNumberToDigitalPin(SOC_RX0);
|
||||||
|
int pin_soc_tx0 = gpioNumberToDigitalPin(SOC_TX0);
|
||||||
|
if (((pin_soc_rx0 == m_rx_pin) && (pin_soc_tx0 == m_tx_pin)) ||
|
||||||
|
((pin_soc_rx0 == m_tx_pin) && (pin_soc_tx0 == m_rx_pin))) {
|
||||||
|
m_uart = uart_port_t(0);
|
||||||
|
bitSet(tasmota_serial_uart_bitmap, m_uart);
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
// Find a free UART which may end up as UART0
|
||||||
for (uint32_t i = SOC_UART_HP_NUM -1; i >= 0; i--) {
|
for (uint32_t i = SOC_UART_HP_NUM -1; i >= 0; i--) {
|
||||||
if (0 == bitRead(tasmota_serial_uart_bitmap, i)) {
|
if (0 == bitRead(tasmota_serial_uart_bitmap, i)) {
|
||||||
m_uart = uart_port_t(i);
|
m_uart = uart_port_t(i);
|
||||||
@ -159,10 +173,15 @@ bool TasmotaSerial::freeUart(void) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TasmotaSerial::Esp32Begin(void) {
|
void TasmotaSerial::Esp32Begin(void) {
|
||||||
|
// Workaround IDF #14787 introduced in Tasmota v14.5.0, Core 3.1.1, IDF 5.3.2.250120
|
||||||
|
// which kept new Rx low instead of float
|
||||||
|
pinMode(m_rx_pin, INPUT_PULLUP);
|
||||||
|
pinMode(m_tx_pin, INPUT_PULLUP);
|
||||||
TSerial->begin(m_speed, m_config, m_rx_pin, m_tx_pin, m_invert);
|
TSerial->begin(m_speed, m_config, m_rx_pin, m_tx_pin, m_invert);
|
||||||
// For low bit rate, below 9600, set the Full RX threshold at 10 bytes instead of the default 120
|
// For low bit rate, below 9600, set the Full RX threshold at 10 bytes instead of the default 120
|
||||||
if (m_speed <= 9600) {
|
if (m_speed <= 9600) {
|
||||||
@ -251,10 +270,13 @@ bool TasmotaSerial::begin(uint32_t speed, uint32_t config) {
|
|||||||
#if ARDUINO_USB_MODE
|
#if ARDUINO_USB_MODE
|
||||||
TSerial = new HardwareSerial(m_uart);
|
TSerial = new HardwareSerial(m_uart);
|
||||||
#else
|
#else
|
||||||
if (0 == m_uart) {
|
if (0 == m_uart) { // From cores\esp32\HardwareSerial.cpp: There is always Seria0 for UART0
|
||||||
|
/*
|
||||||
|
// Not needed anymore since Core 3.1.0
|
||||||
Serial.flush();
|
Serial.flush();
|
||||||
Serial.end();
|
Serial.end();
|
||||||
delay(10); // Allow time to cleanup queues - if not used hangs ESP32
|
delay(10); // Allow time to cleanup queues - if not used hangs ESP32
|
||||||
|
*/
|
||||||
TSerial = &Serial;
|
TSerial = &Serial;
|
||||||
} else {
|
} else {
|
||||||
TSerial = new HardwareSerial(m_uart);
|
TSerial = new HardwareSerial(m_uart);
|
||||||
Loading…
Reference in New Issue
Block a user