Skip to content

Commit

Permalink
fix: Companion read/write of failsafe settings, how displayed on radio (
Browse files Browse the repository at this point in the history
#1399)

* Fix failsafe settings

Resolve #1393

* trigger save if failsafe numbers changed + cleanup

Co-authored-by: Peter Feerick <peter.feerick@gmail.com>
  • Loading branch information
raphaelcoeffic and pfeerick authored Jan 11, 2022
1 parent 71b0e72 commit 7a628d4
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 7 deletions.
17 changes: 15 additions & 2 deletions companion/src/firmwares/edgetx/yaml_modeldata.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,6 @@ struct convert<LimitData> {
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;
Expand All @@ -357,7 +356,6 @@ struct convert<LimitData> {
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;
Expand Down Expand Up @@ -873,6 +871,12 @@ Node convert<ModelData>::encode(const ModelData& rhs)
}
}

for (int i=0; i<CPN_MAX_CHNOUT; i++) {
if (rhs.limitData[i].failsafe != 0) {
node["failsafeChannels"][std::to_string(i)]["val"] = rhs.limitData[i].failsafe;
}
}

for (int i=0; i<CPN_MAX_SCRIPTS; i++) {
if (strlen(rhs.scriptData[i].filename) > 0) {
node["scriptData"][std::to_string(i)] = rhs.scriptData[i];
Expand Down Expand Up @@ -1046,6 +1050,15 @@ bool convert<ModelData>::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<CPN_MAX_CHNOUT; i++) {
rhs.limitData[i].failsafe = failsafeChans[i];
}
}

node["scriptData"] >> rhs.scriptData;
node["telemetrySensors"] >> rhs.sensorData;

Expand Down
14 changes: 9 additions & 5 deletions radio/src/gui/colorlcd/model_setup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -136,7 +140,7 @@ class FailSafeBody : public FormGroup {
out2fail->setPressHandler([=]() {
setCustomFailsafe(moduleIdx);
AUDIO_WARNING1();
storageDirty(EE_MODEL);
SET_DIRTY();
return 0;
});

Expand Down Expand Up @@ -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;
});
Expand Down

0 comments on commit 7a628d4

Please sign in to comment.