From 3fb853c8b8bde6a1f2fd5d08153f6ee6c007eb53 Mon Sep 17 00:00:00 2001 From: Damjan Adamic Date: Mon, 2 May 2016 19:38:57 +0200 Subject: [PATCH] Re #3454: sensor persistent fixes (ported from master) * Only clear sensor.persistentValue when the sensor.persistent is disabled and not on every shutdown. * Only show persistent option for calculated type sensors (only these actually get saved in EEPROM) --- companion/src/modeledit/telemetry.cpp | 2 +- radio/src/gui/9x/menu_model_telemetry.cpp | 2 +- radio/src/gui/horus/menu_model_telemetry.cpp | 2 +- radio/src/gui/taranis/menu_model_telemetry.cpp | 5 ++++- radio/src/opentx.cpp | 12 +++--------- 5 files changed, 10 insertions(+), 13 deletions(-) diff --git a/companion/src/modeledit/telemetry.cpp b/companion/src/modeledit/telemetry.cpp index 925f1e0c7..9f997a47b 100644 --- a/companion/src/modeledit/telemetry.cpp +++ b/companion/src/modeledit/telemetry.cpp @@ -619,7 +619,7 @@ void TelemetrySensorPanel::update() ui->source4->setVisible(sources34FieldsDisplayed); ui->autoOffset->setVisible(sensor.unit != SensorData::UNIT_RPMS && isConfigurable); ui->filter->setVisible(isConfigurable); - ui->persistent->setVisible((sensor.type == SensorData::TELEM_TYPE_CALCULATED && sensor.formula == SensorData::TELEM_FORMULA_CONSUMPTION) || isConfigurable); + ui->persistent->setVisible(sensor.type == SensorData::TELEM_TYPE_CALCULATED); lock = false; } diff --git a/radio/src/gui/9x/menu_model_telemetry.cpp b/radio/src/gui/9x/menu_model_telemetry.cpp index 8d26418ed..7b6883b1c 100644 --- a/radio/src/gui/9x/menu_model_telemetry.cpp +++ b/radio/src/gui/9x/menu_model_telemetry.cpp @@ -220,7 +220,7 @@ enum SensorFields { #define SENSOR_PARAM4_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW #define SENSOR_AUTOOFFSET_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) #define SENSOR_FILTER_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) -#define SENSOR_PERSISTENT_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) +#define SENSOR_PERSISTENT_ROWS (sensor->type == TELEM_TYPE_CALCULATED ? (uint8_t)0 : HIDDEN_ROW) void menuModelSensor(uint8_t event) { diff --git a/radio/src/gui/horus/menu_model_telemetry.cpp b/radio/src/gui/horus/menu_model_telemetry.cpp index 3f7cb3b08..d74e7bd06 100644 --- a/radio/src/gui/horus/menu_model_telemetry.cpp +++ b/radio/src/gui/horus/menu_model_telemetry.cpp @@ -121,7 +121,7 @@ enum SensorFields { #define SENSOR_AUTOOFFSET_ROWS (sensor->unit != UNIT_RPMS && sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) #define SENSOR_ONLYPOS_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) #define SENSOR_FILTER_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) -#define SENSOR_PERSISTENT_ROWS ((sensor->type == TELEM_TYPE_CALCULATED && sensor->formula == TELEM_FORMULA_CONSUMPTION) || sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) +#define SENSOR_PERSISTENT_ROWS (sensor->type == TELEM_TYPE_CALCULATED ? (uint8_t)0 : HIDDEN_ROW) bool menuModelSensor(evt_t event) { diff --git a/radio/src/gui/taranis/menu_model_telemetry.cpp b/radio/src/gui/taranis/menu_model_telemetry.cpp index f43aac4c6..389bf922b 100644 --- a/radio/src/gui/taranis/menu_model_telemetry.cpp +++ b/radio/src/gui/taranis/menu_model_telemetry.cpp @@ -156,7 +156,7 @@ enum SensorFields { #define SENSOR_AUTOOFFSET_ROWS (sensor->unit != UNIT_RPMS && sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) #define SENSOR_ONLYPOS_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) #define SENSOR_FILTER_ROWS (sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) -#define SENSOR_PERSISTENT_ROWS ((sensor->type == TELEM_TYPE_CALCULATED && sensor->formula == TELEM_FORMULA_CONSUMPTION) || sensor->isConfigurable() ? (uint8_t)0 : HIDDEN_ROW) +#define SENSOR_PERSISTENT_ROWS (sensor->type == TELEM_TYPE_CALCULATED ? (uint8_t)0 : HIDDEN_ROW) void menuModelSensor(uint8_t event) { @@ -376,6 +376,9 @@ void menuModelSensor(uint8_t event) case SENSOR_FIELD_PERSISTENT: ON_OFF_MENU_ITEM(sensor->persistent, SENSOR_2ND_COLUMN, y, NO_INDENT(STR_PERSISTENT), attr, event); + if (checkIncDec_Ret && !sensor->persistent) { + sensor->persistentValue = 0; + } break; case SENSOR_FIELD_LOGS: diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 6f3fe13bf..b87b1a1be 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -1982,15 +1982,9 @@ void opentxClose() #if defined(CPUARM) for (int i=0; i