diff --git a/companion/src/firmwares/edgetx/yaml_modeldata.cpp b/companion/src/firmwares/edgetx/yaml_modeldata.cpp index b754c760d19..66b4f87f78d 100644 --- a/companion/src/firmwares/edgetx/yaml_modeldata.cpp +++ b/companion/src/firmwares/edgetx/yaml_modeldata.cpp @@ -337,7 +337,6 @@ struct convert { node["offset"] = YamlWriteLimitValue(rhs.offset); node["ppmCenter"] = rhs.ppmCenter; node["symetrical"] = (int)rhs.symetrical; - node["failsafe"] = rhs.failsafe; node["name"] = rhs.name; node["curve"] = rhs.curve.value; return node; @@ -357,7 +356,6 @@ struct convert { node["revert"] >> rhs.revert; node["ppmCenter"] >> rhs.ppmCenter; node["symetrical"] >> rhs.symetrical; - node["failsafe"] >> rhs.failsafe; node["name"] >> rhs.name; node["curve"] >> rhs.curve.value; return true; @@ -873,6 +871,12 @@ Node convert::encode(const ModelData& rhs) } } + for (int i=0; i 0) { node["scriptData"][std::to_string(i)] = rhs.scriptData[i]; @@ -1046,6 +1050,15 @@ bool convert::decode(const Node& node, ModelData& rhs) rhs.moduleData[i].modelId = modelIds[i]; } + if (node["failsafeChannels"]) { + int failsafeChans[CPN_MAX_CHNOUT]; + memset(failsafeChans, 0, sizeof(failsafeChans)); + node["failsafeChannels"] >> failsafeChans; + for (int i=0; i> rhs.scriptData; node["telemetrySensors"] >> rhs.sensorData; diff --git a/radio/src/gui/colorlcd/model_setup.cpp b/radio/src/gui/colorlcd/model_setup.cpp index 3ede21a88d4..168dd170264 100644 --- a/radio/src/gui/colorlcd/model_setup.cpp +++ b/radio/src/gui/colorlcd/model_setup.cpp @@ -113,7 +113,8 @@ class FailSafeBody : public FormGroup { grid.setLabelWidth(60); grid.spacer(8); - const int lim = (g_model.extendedLimits ? (512 * LIMIT_EXT_PERCENT / 100) : 512) * 2; + const int lim = calcRESXto1000( + (g_model.extendedLimits ? (512 * LIMIT_EXT_PERCENT / 100) : 512) * 2); for (int ch=0; ch < maxModuleChannels(moduleIdx); ch++) { // Channel name @@ -122,8 +123,11 @@ class FailSafeBody : public FormGroup { // Channel numeric value new NumberEdit(this, grid.getFieldSlot(8, 0), -lim, lim, - GET_DEFAULT(g_model.failsafeChannels[ch]), - SET_VALUE(g_model.failsafeChannels[ch], newValue), + [=]() { return calcRESXto1000(g_model.failsafeChannels[ch]); }, + [=](int32_t newValue) { + g_model.failsafeChannels[ch] = calc1000toRESX(newValue); + SET_DIRTY(); + }, 0, PREC1 | RIGHT); // Channel bargraph @@ -136,7 +140,7 @@ class FailSafeBody : public FormGroup { out2fail->setPressHandler([=]() { setCustomFailsafe(moduleIdx); AUDIO_WARNING1(); - storageDirty(EE_MODEL); + SET_DIRTY(); return 0; }); @@ -1401,7 +1405,7 @@ void ModelSetupPage::build(FormWindow * window) for (auto &flightModeData : g_model.flightModeData) { memclear(&flightModeData, TRIMS_ARRAY_SIZE); } - storageDirty(EE_MODEL); + SET_DIRTY(); AUDIO_WARNING1(); return 0; });