From 92287b870d8f8020f7cc1fc24ba37e01e82511ff Mon Sep 17 00:00:00 2001 From: Mark Haslinghuis Date: Tue, 23 Apr 2024 21:04:52 +0200 Subject: [PATCH] Fix smartport over softserial using override (#13540) * Fix smartport over softserial * Constrain baudrateIndex does not work * Reapply 57600 for SmartPort * Use custom define for baudrate override * Return when baudrate requested is above set limit of softserial * Thanks ledvinap * Fix macro name * Cloud Build API does not allow define size > 32 --- src/main/io/serial.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/io/serial.c b/src/main/io/serial.c index bf7a229f83..ddfbd87418 100644 --- a/src/main/io/serial.c +++ b/src/main/io/serial.c @@ -346,13 +346,14 @@ bool isSerialConfigValid(serialConfig_t *serialConfigToCheck) (portConfig->identifier == SERIAL_PORT_SOFTSERIAL2)) { // Ensure MSP or serial RX is not enabled on soft serial ports serialConfigToCheck->portConfigs[index].functionMask &= ~(FUNCTION_MSP | FUNCTION_RX_SERIAL); - // Ensure that the baud rate on soft serial ports is limited to 19200 +#ifndef USE_OVERRIDE_SOFTSERIAL_BAUDRATE serialConfigToCheck->portConfigs[index].gps_baudrateIndex = constrain(portConfig->gps_baudrateIndex, BAUD_AUTO, BAUD_19200); serialConfigToCheck->portConfigs[index].blackbox_baudrateIndex = constrain(portConfig->blackbox_baudrateIndex, BAUD_AUTO, BAUD_19200); serialConfigToCheck->portConfigs[index].telemetry_baudrateIndex = constrain(portConfig->telemetry_baudrateIndex, BAUD_AUTO, BAUD_19200); - } #endif + } +#endif // USE_SOFTSERIAL if (portConfig->functionMask & FUNCTION_MSP) { mspPortCount++; @@ -436,10 +437,10 @@ serialPort_t *openSerialPort( serialPort_t *serialPort = NULL; -#ifdef USE_SOFTSERIAL +#if defined(USE_SOFTSERIAL) && !defined(USE_OVERRIDE_SOFTSERIAL_BAUDRATE) if (((identifier == SERIAL_PORT_SOFTSERIAL1) || (identifier == SERIAL_PORT_SOFTSERIAL2)) && (baudRate > 19200)) { - // Limit baud rate on soft serial ports - baudRate = 19200; + // Don't continue if baud rate requested is higher then the limit set on soft serial ports + return NULL; } #endif