From cd4060a99cb11b8cb0915294bb91ea427f89ff33 Mon Sep 17 00:00:00 2001 From: ellensp Date: Tue, 24 Mar 2020 11:55:21 +1300 Subject: [PATCH] Add USB serial support to SERIAL_PORT_2 on DUE (#17245) Co-authored-by: Scott Lahteine --- Marlin/src/HAL/DUE/HAL.h | 1 - Marlin/src/HAL/DUE/MarlinSerial.cpp | 20 +++++--------------- Marlin/src/HAL/DUE/MarlinSerial.h | 8 ++------ Marlin/src/HAL/DUE/MarlinSerialUSB.cpp | 12 ++++++++---- Marlin/src/HAL/DUE/MarlinSerialUSB.h | 12 +++++++++--- Marlin/src/inc/Conditionals_LCD.h | 4 ++++ 6 files changed, 28 insertions(+), 29 deletions(-) diff --git a/Marlin/src/HAL/DUE/HAL.h b/Marlin/src/HAL/DUE/HAL.h index 97b94b5db2..90b6fabc05 100644 --- a/Marlin/src/HAL/DUE/HAL.h +++ b/Marlin/src/HAL/DUE/HAL.h @@ -94,7 +94,6 @@ #endif #endif - #include "MarlinSerial.h" #include "MarlinSerialUSB.h" diff --git a/Marlin/src/HAL/DUE/MarlinSerial.cpp b/Marlin/src/HAL/DUE/MarlinSerial.cpp index d827def422..d114c75989 100644 --- a/Marlin/src/HAL/DUE/MarlinSerial.cpp +++ b/Marlin/src/HAL/DUE/MarlinSerial.cpp @@ -629,23 +629,13 @@ void MarlinSerial::printFloat(double number, uint8_t digits) { // If not using the USB port as serial port #if SERIAL_PORT >= 0 - - // Preinstantiate - template class MarlinSerial>; - - // Instantiate - MarlinSerial> customizedSerial1; - + template class MarlinSerial>; // Define + MarlinSerial> customizedSerial1; // Instantiate #endif -#ifdef SERIAL_PORT_2 - - // Preinstantiate - template class MarlinSerial>; - - // Instantiate - MarlinSerial> customizedSerial2; - +#if defined(SERIAL_PORT_2) && SERIAL_PORT_2 >= 0 + template class MarlinSerial>; // Define + MarlinSerial> customizedSerial2; // Instantiate #endif #endif // ARDUINO_ARCH_SAM diff --git a/Marlin/src/HAL/DUE/MarlinSerial.h b/Marlin/src/HAL/DUE/MarlinSerial.h index eb26a5644d..fa6a2c7d15 100644 --- a/Marlin/src/HAL/DUE/MarlinSerial.h +++ b/Marlin/src/HAL/DUE/MarlinSerial.h @@ -172,13 +172,9 @@ struct MarlinSerialCfg { }; #if SERIAL_PORT >= 0 - extern MarlinSerial> customizedSerial1; +#endif -#endif // SERIAL_PORT >= 0 - -#ifdef SERIAL_PORT_2 - +#if defined(SERIAL_PORT_2) && SERIAL_PORT_2 >= 0 extern MarlinSerial> customizedSerial2; - #endif diff --git a/Marlin/src/HAL/DUE/MarlinSerialUSB.cpp b/Marlin/src/HAL/DUE/MarlinSerialUSB.cpp index 41ffb52ba1..7a020bbaf0 100644 --- a/Marlin/src/HAL/DUE/MarlinSerialUSB.cpp +++ b/Marlin/src/HAL/DUE/MarlinSerialUSB.cpp @@ -29,7 +29,7 @@ #include "../../inc/MarlinConfig.h" -#if SERIAL_PORT == -1 +#if HAS_USB_SERIAL #include "MarlinSerialUSB.h" @@ -283,8 +283,12 @@ void MarlinSerialUSB::printFloat(double number, uint8_t digits) { } // Preinstantiate -MarlinSerialUSB customizedSerial1; - -#endif // SERIAL_PORT == -1 +#if SERIAL_PORT == -1 + MarlinSerialUSB customizedSerial1; +#endif +#if SERIAL_PORT_2 == -1 + MarlinSerialUSB customizedSerial2; +#endif +#endif // HAS_USB_SERIAL #endif // ARDUINO_ARCH_SAM diff --git a/Marlin/src/HAL/DUE/MarlinSerialUSB.h b/Marlin/src/HAL/DUE/MarlinSerialUSB.h index d8b051d37e..9aece901b1 100644 --- a/Marlin/src/HAL/DUE/MarlinSerialUSB.h +++ b/Marlin/src/HAL/DUE/MarlinSerialUSB.h @@ -28,7 +28,7 @@ #include "../../inc/MarlinConfig.h" -#if SERIAL_PORT == -1 +#if HAS_USB_SERIAL #include @@ -88,6 +88,12 @@ private: static void printFloat(double, uint8_t); }; -extern MarlinSerialUSB customizedSerial1; +#if SERIAL_PORT == -1 + extern MarlinSerialUSB customizedSerial1; +#endif + +#if SERIAL_PORT_2 == -1 + extern MarlinSerialUSB customizedSerial2; +#endif -#endif // SERIAL_PORT == -1 +#endif // HAS_USB_SERIAL diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h index 2907694fb4..dd1f13fae0 100644 --- a/Marlin/src/inc/Conditionals_LCD.h +++ b/Marlin/src/inc/Conditionals_LCD.h @@ -683,6 +683,10 @@ #define SPI_SPEED SPI_FULL_SPEED #endif +#if SERIAL_PORT == -1 || SERIAL_PORT_2 == -1 + #define HAS_USB_SERIAL 1 +#endif + /** * This setting is also used by M109 when trying to calculate * a ballpark safe margin to prevent wait-forever situation.