From aaa87a037a113dd7b4b006500d545a57bf85bbeb Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sat, 25 Dec 2021 11:34:58 +0100 Subject: [PATCH] Revert "Merge pull request #14153 from wir3z/development" This reverts commit d9ab90a2f93167bcccf68558449c10df9f6c3743, reversing changes made to 7bf6e5a77328d8f06248eb0747611995a94fa96e. --- .../TasmotaSerial-3.3.0/src/TasmotaSerial.cpp | 3 ++- .../TasmotaSerial-3.3.0/src/TasmotaSerial.h | 21 ------------------- tasmota/support.ino | 6 +++--- tasmota/tasmota.h | 21 +++++++++++++++++++ tasmota/xdrv_08_serial_bridge.ino | 10 ++------- tasmota/xdrv_10_scripter.ino | 10 ++++++++- 6 files changed, 37 insertions(+), 34 deletions(-) diff --git a/lib/default/TasmotaSerial-3.3.0/src/TasmotaSerial.cpp b/lib/default/TasmotaSerial-3.3.0/src/TasmotaSerial.cpp index a0087d0f4..07754719e 100644 --- a/lib/default/TasmotaSerial-3.3.0/src/TasmotaSerial.cpp +++ b/lib/default/TasmotaSerial-3.3.0/src/TasmotaSerial.cpp @@ -28,6 +28,7 @@ extern "C" { #include #ifdef ESP8266 + void IRAM_ATTR callRxRead(void *self) { ((TasmotaSerial*)self)->rxRead(); }; // As the Arduino attachInterrupt has no parameter, lists of objects @@ -139,7 +140,7 @@ bool TasmotaSerial::begin(uint32_t speed, uint32_t config) { if (m_hardserial) { #ifdef ESP8266 Serial.flush(); - Serial.begin(speed, (SerialConfig)pgm_read_byte(kTasmotaSerialConfig + config)); + Serial.begin(speed, (SerialConfig)config); if (m_hardswap) { Serial.swap(); } diff --git a/lib/default/TasmotaSerial-3.3.0/src/TasmotaSerial.h b/lib/default/TasmotaSerial-3.3.0/src/TasmotaSerial.h index f2af363f1..3a90626fe 100644 --- a/lib/default/TasmotaSerial-3.3.0/src/TasmotaSerial.h +++ b/lib/default/TasmotaSerial-3.3.0/src/TasmotaSerial.h @@ -35,27 +35,6 @@ #include #endif -#ifdef ESP8266 -const uint8_t kTasmotaSerialConfig[] PROGMEM = { - SERIAL_5N1, SERIAL_6N1, SERIAL_7N1, SERIAL_8N1, - SERIAL_5N2, SERIAL_6N2, SERIAL_7N2, SERIAL_8N2, - SERIAL_5E1, SERIAL_6E1, SERIAL_7E1, SERIAL_8E1, - SERIAL_5E2, SERIAL_6E2, SERIAL_7E2, SERIAL_8E2, - SERIAL_5O1, SERIAL_6O1, SERIAL_7O1, SERIAL_8O1, - SERIAL_5O2, SERIAL_6O2, SERIAL_7O2, SERIAL_8O2 -}; -#endif // ESP8266 -#ifdef ESP32 -const uint32_t kTasmotaSerialConfig[] PROGMEM = { - SERIAL_5N1, SERIAL_6N1, SERIAL_7N1, SERIAL_8N1, - SERIAL_5N2, SERIAL_6N2, SERIAL_7N2, SERIAL_8N2, - SERIAL_5E1, SERIAL_6E1, SERIAL_7E1, SERIAL_8E1, - SERIAL_5E2, SERIAL_6E2, SERIAL_7E2, SERIAL_8E2, - SERIAL_5O1, SERIAL_6O1, SERIAL_7O1, SERIAL_8O1, - SERIAL_5O2, SERIAL_6O2, SERIAL_7O2, SERIAL_8O2 -}; -#endif // ESP32 - class TasmotaSerial : public Stream { public: TasmotaSerial(int receive_pin, int transmit_pin, int hardware_fallback = 0, int nwmode = 0, int buffer_size = TM_SERIAL_BUFFER_SIZE); diff --git a/tasmota/support.ino b/tasmota/support.ino index b1b61a799..303a66e87 100644 --- a/tasmota/support.ino +++ b/tasmota/support.ino @@ -28,7 +28,6 @@ bool knx_started = false; /*********************************************************************************************\ * Watchdog extension (https://github.com/esp8266/Arduino/issues/1532) \*********************************************************************************************/ -#include #ifdef ESP8266 #include @@ -1886,14 +1885,15 @@ void SetSerialBegin(void) { AddLog(LOG_LEVEL_INFO, PSTR(D_LOG_SERIAL "Set to %s %d bit/s"), GetSerialConfig().c_str(), TasmotaGlobal.baudrate); Serial.flush(); #ifdef ESP8266 - Serial.begin(TasmotaGlobal.baudrate, (SerialConfig)ConvertSerialConfig(Settings->serial_config)); + Serial.begin(TasmotaGlobal.baudrate, (SerialConfig)pgm_read_byte(kTasmotaSerialConfig + Settings->serial_config)); SetSerialSwap(); #endif // ESP8266 #ifdef ESP32 delay(10); // Allow time to cleanup queues - if not used hangs ESP32 Serial.end(); delay(10); // Allow time to cleanup queues - if not used hangs ESP32 - Serial.begin(TasmotaGlobal.baudrate, ConvertSerialConfig(Settings->serial_config)); + uint32_t config = pgm_read_dword(kTasmotaSerialConfig + Settings->serial_config); + Serial.begin(TasmotaGlobal.baudrate, config); #endif // ESP32 } diff --git a/tasmota/tasmota.h b/tasmota/tasmota.h index c71f910ec..9aa5c1b27 100644 --- a/tasmota/tasmota.h +++ b/tasmota/tasmota.h @@ -431,6 +431,27 @@ enum TasmotaSerialConfig { TS_SERIAL_5O1, TS_SERIAL_6O1, TS_SERIAL_7O1, TS_SERIAL_8O1, TS_SERIAL_5O2, TS_SERIAL_6O2, TS_SERIAL_7O2, TS_SERIAL_8O2 }; +#ifdef ESP8266 +const SerConfu8 kTasmotaSerialConfig[] PROGMEM = { + SERIAL_5N1, SERIAL_6N1, SERIAL_7N1, SERIAL_8N1, + SERIAL_5N2, SERIAL_6N2, SERIAL_7N2, SERIAL_8N2, + SERIAL_5E1, SERIAL_6E1, SERIAL_7E1, SERIAL_8E1, + SERIAL_5E2, SERIAL_6E2, SERIAL_7E2, SERIAL_8E2, + SERIAL_5O1, SERIAL_6O1, SERIAL_7O1, SERIAL_8O1, + SERIAL_5O2, SERIAL_6O2, SERIAL_7O2, SERIAL_8O2 +}; +#endif // ESP8266 +#ifdef ESP32 +const uint32_t kTasmotaSerialConfig[] PROGMEM = { + SERIAL_5N1, SERIAL_6N1, SERIAL_7N1, SERIAL_8N1, + SERIAL_5N2, SERIAL_6N2, SERIAL_7N2, SERIAL_8N2, + SERIAL_5E1, SERIAL_6E1, SERIAL_7E1, SERIAL_8E1, + SERIAL_5E2, SERIAL_6E2, SERIAL_7E2, SERIAL_8E2, + SERIAL_5O1, SERIAL_6O1, SERIAL_7O1, SERIAL_8O1, + SERIAL_5O2, SERIAL_6O2, SERIAL_7O2, SERIAL_8O2 +}; +#endif // ESP32 + enum TuyaSupportedFunctions { TUYA_MCU_FUNC_NONE, TUYA_MCU_FUNC_SWT1 = 1, TUYA_MCU_FUNC_SWT2, TUYA_MCU_FUNC_SWT3, TUYA_MCU_FUNC_SWT4, TUYA_MCU_FUNC_REL1 = 11, TUYA_MCU_FUNC_REL2, TUYA_MCU_FUNC_REL3, TUYA_MCU_FUNC_REL4, TUYA_MCU_FUNC_REL5, diff --git a/tasmota/xdrv_08_serial_bridge.ino b/tasmota/xdrv_08_serial_bridge.ino index 9073cb610..aac2c1bea 100644 --- a/tasmota/xdrv_08_serial_bridge.ino +++ b/tasmota/xdrv_08_serial_bridge.ino @@ -25,7 +25,7 @@ #define XDRV_08 8 #define HARDWARE_FALLBACK 2 -const uint16_t SERIAL_BRIDGE_BUFFER_SIZE = 256; +const uint8_t SERIAL_BRIDGE_BUFFER_SIZE = 130; const char kSerialBridgeCommands[] PROGMEM = "|" // No prefix D_CMND_SSERIALSEND "|" D_CMND_SBAUDRATE; @@ -106,13 +106,7 @@ void SerialBridgeInit(void) serial_bridge_active = false; if (PinUsed(GPIO_SBR_RX) && PinUsed(GPIO_SBR_TX)) { SerialBridgeSerial = new TasmotaSerial(Pin(GPIO_SBR_RX), Pin(GPIO_SBR_TX), HARDWARE_FALLBACK); -#ifdef ESP8266 - if (SerialBridgeSerial->begin(Settings->sbaudrate * 300, (SerialConfig)ConvertSerialConfig(Settings->serial_config))) // Baud rate is stored div 300 so it fits into 16 bits -#endif // ESP8266 -#ifdef ESP32 - if (SerialBridgeSerial->begin(Settings->sbaudrate * 300, ConvertSerialConfig(Settings->serial_config))) // Baud rate is stored div 300 so it fits into 16 bits -#endif // ESP32 - { + if (SerialBridgeSerial->begin(Settings->sbaudrate * 300)) { // Baud rate is stored div 300 so it fits into 16 bits if (SerialBridgeSerial->hardwareSerial()) { ClaimSerial(); serial_bridge_buffer = TasmotaGlobal.serial_in_buffer; // Use idle serial buffer to save RAM diff --git a/tasmota/xdrv_10_scripter.ino b/tasmota/xdrv_10_scripter.ino index 64de0f425..b567864c1 100755 --- a/tasmota/xdrv_10_scripter.ino +++ b/tasmota/xdrv_10_scripter.ino @@ -3620,7 +3620,15 @@ chknext: glob_script_mem.sp = new TasmotaSerial(rxpin, txpin, 1, 0, rxbsiz); if (glob_script_mem.sp) { - fvar = glob_script_mem.sp->begin(br, ConvertSerialConfig(sconfig)); + uint32_t config; +#ifdef ESP8266 + config = pgm_read_byte(kTasmotaSerialConfig + sconfig); +#endif // ESP8266 + +#ifdef ESP32 + config = pgm_read_dword(kTasmotaSerialConfig + sconfig); +#endif // ESP32 + fvar = glob_script_mem.sp->begin(br, config); uint32_t savc = Settings->serial_config; //setRxBufferSize(TMSBSIZ);