diff --git a/companion/src/firmwares/edgetx/yaml_generalsettings.cpp b/companion/src/firmwares/edgetx/yaml_generalsettings.cpp index b54430996..f3036835e 100644 --- a/companion/src/firmwares/edgetx/yaml_generalsettings.cpp +++ b/companion/src/firmwares/edgetx/yaml_generalsettings.cpp @@ -27,6 +27,7 @@ #include "eeprominterface.h" #include "edgetxinterface.h" +#include "version.h" #include @@ -143,11 +144,11 @@ Node convert::encode(const GeneralSettings& rhs) { Node node; + node["semver"] = VERSION; + std::string board = getCurrentFirmware()->getFlavour().toStdString(); node["board"] = board; - node["version"] = CPN_CURRENT_SETTINGS_VERSION; - YamlCalibData calib(rhs.calibMid, rhs.calibSpanNeg, rhs.calibSpanPos); node["calib"] = calib; @@ -282,7 +283,8 @@ bool convert::decode(const Node& node, GeneralSettings& rhs) // qDebug() << QString::fromStdString(n.first.Scalar()); // } - node["version"] >> rhs.version; + node["semver"] >> rhs.semver; + rhs.version = CPN_CURRENT_SETTINGS_VERSION; // depreciated in EdgeTX however data conversions use // Decoding uses profile firmare therefore all conversions are performed on the fly // So set board to firmware board @@ -303,7 +305,7 @@ bool convert::decode(const Node& node, GeneralSettings& rhs) auto fw = getCurrentFirmware(); - qDebug() << "Settings version:" << rhs.version << "File flavour:" << flavour.c_str() << "Firmware flavour:" << fw->getFlavour(); + qDebug() << "Settings version:" << rhs.semver << "File flavour:" << flavour.c_str() << "Firmware flavour:" << fw->getFlavour(); if (flavour.empty()) { QString prmpt = QCoreApplication::translate("YamlGeneralSettings", "Warning: Radio settings file is missing the board entry!\n\nCurrent firmware profile board will be used.\n\nDo you wish to continue?"); diff --git a/companion/src/firmwares/edgetx/yaml_modeldata.cpp b/companion/src/firmwares/edgetx/yaml_modeldata.cpp index fad2ea09d..0419d0a4b 100644 --- a/companion/src/firmwares/edgetx/yaml_modeldata.cpp +++ b/companion/src/firmwares/edgetx/yaml_modeldata.cpp @@ -33,6 +33,7 @@ #include "modeldata.h" #include "output_data.h" #include "eeprominterface.h" +#include "version.h" #include @@ -741,6 +742,8 @@ Node convert::encode(const ModelData& rhs) Node node; auto board = getCurrentBoard(); + node["semver"] = VERSION; + Node header; header["name"] = rhs.name; header["bitmap"] = rhs.bitmap; @@ -980,6 +983,8 @@ bool convert::decode(const Node& node, ModelData& rhs) unsigned int modelIds[CPN_MAX_MODULES]; memset(modelIds, 0, sizeof(modelIds)); + node["semver"] >> rhs.semver; + if (node["header"]) { const auto& header = node["header"]; if (header.IsMap()) { diff --git a/companion/src/firmwares/generalsettings.h b/companion/src/firmwares/generalsettings.h index 3ca8c1e3f..97ace924c 100644 --- a/companion/src/firmwares/generalsettings.h +++ b/companion/src/firmwares/generalsettings.h @@ -163,6 +163,7 @@ class GeneralSettings { RawSource getDefaultSource(unsigned int channel) const; int getDefaultChannel(unsigned int stick) const; + char semver[8 + 1]; unsigned int version; unsigned int variant; int calibMid[CPN_MAX_ANALOGS]; diff --git a/companion/src/firmwares/modeldata.h b/companion/src/firmwares/modeldata.h index 200e67ccf..3d63a65e2 100644 --- a/companion/src/firmwares/modeldata.h +++ b/companion/src/firmwares/modeldata.h @@ -109,6 +109,7 @@ class ModelData { QVector expos(int input) const; QVector mixes(int channel) const; + char semver[8 + 1]; bool used; int category; char name[15+1];