From cac03e976db7a4f765065c69497effa5df1ca13c Mon Sep 17 00:00:00 2001 From: TD-er Date: Fri, 26 May 2023 00:04:51 +0200 Subject: [PATCH] [USBCDC] Remove 2nd USB CDC port + use USB CDC on ESP32-S3 --- boards/esp32s3cdc-qio_opi.json | 2 +- boards/esp32s3cdc-qio_qspi.json | 2 +- lib/ESPEasySerial/ESPEasySerial.cpp | 2 +- lib/ESPEasySerial/ESPEasySerialPort.cpp | 6 +++--- lib/ESPEasySerial/ESPEasySerialPort.h | 2 +- lib/ESPEasySerial/Port_ESPEasySerial_USBCDC.cpp | 4 +++- lib/ESPEasySerial/Port_ESPEasySerial_USBCDC.h | 2 +- .../Port_ESPEasySerial_USB_HWCDC.cpp | 8 ++++---- lib/PZEM-004T-v30-master/PZEM004Tv30.cpp | 17 +++++++++++++---- src/src/CustomBuild/define_plugin_sets.h | 4 ++++ src/src/Helpers/_Plugin_Helper_serial.cpp | 6 +++--- 11 files changed, 35 insertions(+), 20 deletions(-) diff --git a/boards/esp32s3cdc-qio_opi.json b/boards/esp32s3cdc-qio_opi.json index 845b109f6..72252fbb9 100644 --- a/boards/esp32s3cdc-qio_opi.json +++ b/boards/esp32s3cdc-qio_opi.json @@ -5,7 +5,7 @@ "memory_type": "qio_opi" }, "core": "esp32", - "extra_flags": "-DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S3", + "extra_flags": "-DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=0 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S3 -DARDUINO_USB_CDC_ON_BOOT=1", "f_cpu": "240000000L", "f_flash": "80000000L", "flash_mode": "qio", diff --git a/boards/esp32s3cdc-qio_qspi.json b/boards/esp32s3cdc-qio_qspi.json index 75894a374..5e02e5c4e 100644 --- a/boards/esp32s3cdc-qio_qspi.json +++ b/boards/esp32s3cdc-qio_qspi.json @@ -5,7 +5,7 @@ "memory_type": "qio_qspi" }, "core": "esp32", - "extra_flags": "-DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=1 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S3", + "extra_flags": "-DBOARD_HAS_PSRAM -DARDUINO_USB_MODE=0 -DUSE_USB_CDC_CONSOLE -DESP32_4M -DESP32S3 -DARDUINO_USB_CDC_ON_BOOT=1", "f_cpu": "240000000L", "f_flash": "80000000L", "flash_mode": "qio", diff --git a/lib/ESPEasySerial/ESPEasySerial.cpp b/lib/ESPEasySerial/ESPEasySerial.cpp index 4343a3dc5..dc1f9f288 100644 --- a/lib/ESPEasySerial/ESPEasySerial.cpp +++ b/lib/ESPEasySerial/ESPEasySerial.cpp @@ -38,7 +38,7 @@ Port_ESPEasySerial_base * ESPeasySerial::ESPEasySerial_Port_factory(const ESPEas #endif // if USES_HWCDC #if USES_USBCDC case ESPEasySerialPort::usb_cdc_0: - case ESPEasySerialPort::usb_cdc_1: +// case ESPEasySerialPort::usb_cdc_1: { return new (std::nothrow) Port_ESPEasySerial_USBCDC_t(config); } diff --git a/lib/ESPEasySerial/ESPEasySerialPort.cpp b/lib/ESPEasySerial/ESPEasySerialPort.cpp index f50d78967..5854d7ca3 100644 --- a/lib/ESPEasySerial/ESPEasySerialPort.cpp +++ b/lib/ESPEasySerial/ESPEasySerialPort.cpp @@ -24,8 +24,8 @@ const __FlashStringHelper* ESPEasySerialPort_toString(ESPEasySerialPort port) case ESPEasySerialPort::usb_hw_cdc: return F("USB HWCDC"); #endif // if USES_HWCDC #if USES_USBCDC - case ESPEasySerialPort::usb_cdc_0: return F("USB CDC0"); - case ESPEasySerialPort::usb_cdc_1: return F("USB CDC1"); + case ESPEasySerialPort::usb_cdc_0: return F("USB CDC"); +// case ESPEasySerialPort::usb_cdc_1: return F("USB CDC1"); #endif // if USES_USBCDC case ESPEasySerialPort::MAX_SERIAL_TYPE: break; @@ -103,7 +103,7 @@ bool validSerialPort(ESPEasySerialPort port) #endif // if USES_HWCDC #if USES_USBCDC case ESPEasySerialPort::usb_cdc_0: - case ESPEasySerialPort::usb_cdc_1: +// case ESPEasySerialPort::usb_cdc_1: #endif // if USES_USBCDC return true; diff --git a/lib/ESPEasySerial/ESPEasySerialPort.h b/lib/ESPEasySerial/ESPEasySerialPort.h index 4fc6bc3dc..1d66dd3a8 100644 --- a/lib/ESPEasySerial/ESPEasySerialPort.h +++ b/lib/ESPEasySerial/ESPEasySerialPort.h @@ -29,7 +29,7 @@ enum class ESPEasySerialPort : uint8_t { #endif // if USES_HWCDC #if USES_USBCDC usb_cdc_0 = 8, - usb_cdc_1 = 9, +// usb_cdc_1 = 9, // TD-er: Disable 2nd USB CDC port as it doesn't seem to work well #endif // if USES_USBCDC MAX_SERIAL_TYPE diff --git a/lib/ESPEasySerial/Port_ESPEasySerial_USBCDC.cpp b/lib/ESPEasySerial/Port_ESPEasySerial_USBCDC.cpp index dfd2fabaa..5aca52251 100644 --- a/lib/ESPEasySerial/Port_ESPEasySerial_USBCDC.cpp +++ b/lib/ESPEasySerial/Port_ESPEasySerial_USBCDC.cpp @@ -5,7 +5,7 @@ #if !ARDUINO_USB_CDC_ON_BOOT USBCDC ESPEasySerial_USBCDC_port0(0); -USBCDC ESPEasySerial_USBCDC_port1(1); +//USBCDC ESPEasySerial_USBCDC_port1(1); #endif volatile bool usbActive = false; @@ -93,9 +93,11 @@ Port_ESPEasySerial_USBCDC_t::Port_ESPEasySerial_USBCDC_t(const ESPEasySerialConf if (config.port == ESPEasySerialPort::usb_cdc_0) { _serial = &ESPEasySerial_USBCDC_port0; } + /* else if (config.port == ESPEasySerialPort::usb_cdc_1) { _serial = &ESPEasySerial_USBCDC_port1; } + */ #endif if (_serial != nullptr) { diff --git a/lib/ESPEasySerial/Port_ESPEasySerial_USBCDC.h b/lib/ESPEasySerial/Port_ESPEasySerial_USBCDC.h index ac4c2373b..9931063b5 100644 --- a/lib/ESPEasySerial/Port_ESPEasySerial_USBCDC.h +++ b/lib/ESPEasySerial/Port_ESPEasySerial_USBCDC.h @@ -55,7 +55,7 @@ private: #if ARDUINO_USB_CDC_ON_BOOT #else extern USBCDC ESPEasySerial_USBCDC_port0; -extern USBCDC ESPEasySerial_USBCDC_port1; +//extern USBCDC ESPEasySerial_USBCDC_port1; #endif diff --git a/lib/ESPEasySerial/Port_ESPEasySerial_USB_HWCDC.cpp b/lib/ESPEasySerial/Port_ESPEasySerial_USB_HWCDC.cpp index a8c58663e..32a112845 100644 --- a/lib/ESPEasySerial/Port_ESPEasySerial_USB_HWCDC.cpp +++ b/lib/ESPEasySerial/Port_ESPEasySerial_USB_HWCDC.cpp @@ -60,9 +60,7 @@ Port_ESPEasySerial_USB_HWCDC_t::Port_ESPEasySerial_USB_HWCDC_t(const ESPEasySeri _config.rxBuffSize = _hwcdc_serial->setRxBufferSize(_config.rxBuffSize); _config.txBuffSize = _hwcdc_serial->setRxBufferSize(_config.txBuffSize); _hwcdc_serial->begin(); -// delay(10); - _hwcdc_serial->onEvent(hwcdcEventCallback); -// delay(1); +// _hwcdc_serial->onEvent(hwcdcEventCallback); } } @@ -164,7 +162,9 @@ size_t Port_ESPEasySerial_USB_HWCDC_t::write(const uint8_t *buffer, Port_ESPEasySerial_USB_HWCDC_t::operator bool() const { if (_hwcdc_serial != nullptr) { - return usbActive; // _hwcdc_serial->operator bool(); + //return usbActive; + const bool connected = (*_hwcdc_serial); + return connected; } return false; } diff --git a/lib/PZEM-004T-v30-master/PZEM004Tv30.cpp b/lib/PZEM-004T-v30-master/PZEM004Tv30.cpp index aded4ddd4..7fdfef4d4 100644 --- a/lib/PZEM-004T-v30-master/PZEM004Tv30.cpp +++ b/lib/PZEM-004T-v30-master/PZEM004Tv30.cpp @@ -34,18 +34,27 @@ //extern HardwareSerial Serial; ESPeasySerial *swSerial = nullptr; -#define DEBUG +#define PZEM_DEBUG 0 + +#ifndef PZEM_DEBUG_SERIAL_0 +#if defined(ESP32) && !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_SERIAL) && ARDUINO_USB_CDC_ON_BOOT // Serial used for USB CDC + #define PZEM_DEBUG_SERIAL_0 Serial0 +#else + #define PZEM_DEBUG_SERIAL_0 Serial +#endif +#endif + // Debugging function; void printBuf(uint8_t* buffer, uint16_t len){ -#ifdef DEBUG +#if PZEM_DEBUG for(uint16_t i = 0; i < len; i++){ char temp[6]; sprintf(temp, "%.2x ", buffer[i]); - Serial.print(temp); + PZEM_DEBUG_SERIAL_0.print(temp); } - Serial.println(); + PZEM_DEBUG_SERIAL_0.println(); #endif } diff --git a/src/src/CustomBuild/define_plugin_sets.h b/src/src/CustomBuild/define_plugin_sets.h index e254c0383..0d9a9b35e 100644 --- a/src/src/CustomBuild/define_plugin_sets.h +++ b/src/src/CustomBuild/define_plugin_sets.h @@ -2975,8 +2975,12 @@ To create/register a plugin, you have to : #endif #ifndef ESPEASY_SERIAL_0 +#if defined(ESP32) && !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_SERIAL) && ARDUINO_USB_CDC_ON_BOOT // Serial used for USB CDC + #define ESPEASY_SERIAL_0 Serial0 +#else #define ESPEASY_SERIAL_0 Serial #endif +#endif #if FEATURE_MDNS diff --git a/src/src/Helpers/_Plugin_Helper_serial.cpp b/src/src/Helpers/_Plugin_Helper_serial.cpp index 97615b51b..d90d6a6b7 100644 --- a/src/src/Helpers/_Plugin_Helper_serial.cpp +++ b/src/src/Helpers/_Plugin_Helper_serial.cpp @@ -50,8 +50,8 @@ String serialHelper_getGpioDescription(ESPEasySerialPort typeHint, int config_pi #if USES_HWCDC if (porttype == ESPEasySerialPort::usb_hw_cdc) #else - if (porttype == ESPEasySerialPort::usb_cdc_0 || - porttype == ESPEasySerialPort::usb_cdc_1) + if (porttype == ESPEasySerialPort::usb_cdc_0 /*|| + porttype == ESPEasySerialPort::usb_cdc_1*/) #endif { result += getConflictingUse(PIN_USB_D_MIN); @@ -249,7 +249,7 @@ void serialHelper_webformLoad(ESPEasySerialPort port, int rxPinDef, int txPinDef #endif // if USES_HWCDC #if USES_USBCDC ,static_cast(ESPEasySerialPort::usb_cdc_0) - ,static_cast(ESPEasySerialPort::usb_cdc_1) +// ,static_cast(ESPEasySerialPort::usb_cdc_1) #endif // if USES_USBCDC #if USES_I2C_SC16IS752 ,static_cast(ESPEasySerialPort::sc16is752)