From dfd4c5a56afdaa3548875f3b07c485367020c252 Mon Sep 17 00:00:00 2001 From: elecpower Date: Sun, 24 Apr 2022 08:32:45 +1000 Subject: [PATCH] Companion save serial port settings even if OFF --- .../firmwares/edgetx/yaml_generalsettings.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/companion/src/firmwares/edgetx/yaml_generalsettings.cpp b/companion/src/firmwares/edgetx/yaml_generalsettings.cpp index 1920d0f22..65fd89da7 100644 --- a/companion/src/firmwares/edgetx/yaml_generalsettings.cpp +++ b/companion/src/firmwares/edgetx/yaml_generalsettings.cpp @@ -214,7 +214,7 @@ Node convert::encode(const GeneralSettings& rhs) Node serialPort; for (int i = 0; i < GeneralSettings::SP_COUNT; i++) { - if (rhs.serialPort[i] != GeneralSettings::AUX_SERIAL_OFF) { + if (rhs.serialPort[i] != GeneralSettings::AUX_SERIAL_OFF || rhs.serialPower[i]) { Node mode = uartModeLut << rhs.serialPort[i]; serialPort[LookupValue(serialPortLut, i)]["mode"] = mode; serialPort[LookupValue(serialPortLut, i)]["power"] = (int)rhs.serialPower[i]; @@ -405,11 +405,13 @@ bool convert::decode(const Node& node, GeneralSettings& rhs) node["varioRepeat"] >> rhs.varioRepeat; node["backgroundVolume"] >> ioffset_int(rhs.backgroundVolume, 2); + // depreciated v2.7 replaced by serialPort if (node["auxSerialMode"]) { node["auxSerialMode"] >> oldUartModeLut >> rhs.serialPort[GeneralSettings::SP_AUX1]; } + // depreciated v2.7 replaced by serialPort if (node["aux2SerialMode"]) { node["aux2SerialMode"] >> oldUartModeLut >> rhs.serialPort[GeneralSettings::SP_AUX2]; @@ -424,9 +426,15 @@ bool convert::decode(const Node& node, GeneralSettings& rhs) int p = port_nr.as(); if (p >= 0 && p < GeneralSettings::SP_COUNT && port.second.IsMap()) { port.second["mode"] >> uartModeLut >> rhs.serialPort[p]; - int pwr = port.second["power"].as(); - if (pwr >= 0 && pwr <= 1) - port.second["power"] >> rhs.serialPower[p]; + // introduced v2.8 + Node port_pwr = port.second["power"]; + if (port_pwr && port_pwr.IsScalar()) { + try { + int pwr = port_pwr.as(); + if (pwr == 0 || pwr == 1) + rhs.serialPower[p] = pwr; + } catch(...) {} + } } } }