From aced02f2bb90ce66db795d42c066a419f63ee91d Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sun, 22 Mar 2015 17:58:14 +0400 Subject: [PATCH 1/8] Reset SF can now reset individual telemetry items (fix #161) --- radio/src/functions.cpp | 7 +++++++ .../gui/Taranis/menu_model_custom_functions.cpp | 14 ++++++++++++-- radio/src/myeeprom.h | 16 ++++++++++------ radio/src/telemetry/telemetry.cpp | 17 +++++++++++++++++ radio/src/telemetry/telemetry.h | 2 ++ 5 files changed, 48 insertions(+), 8 deletions(-) diff --git a/radio/src/functions.cpp b/radio/src/functions.cpp index 5ec076707..802b96094 100644 --- a/radio/src/functions.cpp +++ b/radio/src/functions.cpp @@ -41,6 +41,7 @@ CustomFunctionsContext modelFunctionsContext = { 0 }; #if defined(CPUARM) CustomFunctionsContext globalFunctionsContext = { 0 }; +extern TelemetryItem telemetryItems[]; #endif @@ -355,6 +356,12 @@ void evalFunctions() break; #endif } +#if defined(CPUARM) + if (CFN_PARAM(cfn)>=FUNC_RESET_PARAM_FIRST_TELEM) { + TelemetryItem * telemetryItem = & telemetryItems[CFN_PARAM(cfn)-FUNC_RESET_PARAM_FIRST_TELEM]; + telemetryItem->clear(); + } +#endif break; #if defined(CPUARM) diff --git a/radio/src/gui/Taranis/menu_model_custom_functions.cpp b/radio/src/gui/Taranis/menu_model_custom_functions.cpp index 7e142c888..f246762e6 100644 --- a/radio/src/gui/Taranis/menu_model_custom_functions.cpp +++ b/radio/src/gui/Taranis/menu_model_custom_functions.cpp @@ -211,8 +211,18 @@ void menuCustomFunctions(uint8_t event, CustomFunctionData * functions, CustomFu int16_t val_min = 0; int16_t val_max = 255; if (func == FUNC_RESET) { - val_max = FUNC_RESET_PARAM_LAST; - lcd_putsiAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, STR_VFSWRESET, CFN_PARAM(cfn), attr); + val_max = FUNC_RESET_PARAM_FIRST_TELEM+lastUsedTelemetryIndex(); + int param = CFN_PARAM(cfn); + if (param < FUNC_RESET_PARAM_FIRST_TELEM) { + lcd_putsiAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, STR_VFSWRESET, param, attr); + } + else { + if (param > FUNC_RESET_PARAM_FIRST_TELEM) { + INCDEC_ENABLE_CHECK(isSensorAvailableInResetSpecialFunction); + } + TelemetrySensor * sensor = & g_model.telemetrySensors[param-FUNC_RESET_PARAM_FIRST_TELEM]; + lcd_putsnAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, sensor->label, TELEM_LABEL_LEN, attr|ZCHAR); + } } #if defined(OVERRIDE_CHANNEL_FUNCTION) else if (func == FUNC_OVERRIDE_CHANNEL) { diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index 93e079c50..4e7f3f2d0 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -130,6 +130,7 @@ #define NUM_POTS 5 #define NUM_XPOTS 3 #endif + #define TELEM_VALUES_MAX 32 #elif defined(CPUARM) #define MAX_MODELS 60 #define NUM_CHNOUT 32 // number of real output channels CH1-CH32 @@ -141,6 +142,7 @@ #define NUM_TRAINER 16 #define NUM_POTS 3 #define NUM_XPOTS 0 + #define TELEM_VALUES_MAX 16 #elif defined(CPUM2560) || defined(CPUM2561) #define MAX_MODELS 30 #define NUM_CHNOUT 16 // number of real output channels CH1-CH16 @@ -152,6 +154,7 @@ #define NUM_TRAINER 8 #define NUM_POTS 3 #define NUM_XPOTS 0 + #define TELEM_VALUES_MAX 0 #elif defined(CPUM128) #define MAX_MODELS 30 #define NUM_CHNOUT 16 // number of real output channels CH1-CH16 @@ -163,6 +166,7 @@ #define NUM_TRAINER 8 #define NUM_POTS 3 #define NUM_XPOTS 0 + #define TELEM_VALUES_MAX 0 #else #define MAX_MODELS 16 #define NUM_CHNOUT 16 // number of real output channels CH1-CH16 @@ -174,6 +178,7 @@ #define NUM_TRAINER 8 #define NUM_POTS 3 #define NUM_XPOTS 0 + #define TELEM_VALUES_MAX 0 #endif #if defined(CPUARM) @@ -584,9 +589,13 @@ enum ResetFunctionParam { #endif #if ROTARY_ENCODERS > 1 FUNC_RESET_ROTENC2, +#endif +#if defined(CPUARM) + FUNC_RESET_PARAM_FIRST_TELEM, + FUNC_RESET_PARAM_LAST_TELEM = FUNC_RESET_PARAM_FIRST_TELEM + TELEM_VALUES_MAX, #endif FUNC_RESET_PARAMS_COUNT, - FUNC_RESET_PARAM_LAST = FUNC_RESET_PARAMS_COUNT-1 + FUNC_RESET_PARAM_LAST = FUNC_RESET_PARAMS_COUNT-1, }; enum AdjustGvarFunctionParam { @@ -1211,11 +1220,6 @@ PACK(typedef struct { #endif #if defined(CPUARM) -#if defined(PCBTARANIS) - #define TELEM_VALUES_MAX 32 -#else - #define TELEM_VALUES_MAX 16 -#endif #define TELEM_LABEL_LEN 4 //#define TELEM_FLAG_TIMEOUT 0x01 #define TELEM_FLAG_LOG 0x02 diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index 1a3101b3f..8008fefcb 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -453,6 +453,23 @@ int availableTelemetryIndex() return -1; } +int lastUsedTelemetryIndex() +{ + for (int index=TELEM_VALUES_MAX-1; index>=0; index--) { + TelemetrySensor & telemetrySensor = g_model.telemetrySensors[index]; + if (telemetrySensor.isAvailable()) { + return index; + } + } + return -1; +} + +bool isSensorAvailableInResetSpecialFunction(int index) +{ + TelemetrySensor & telemetrySensor = g_model.telemetrySensors[index-FUNC_RESET_PARAM_FIRST_TELEM]; + return telemetrySensor.isAvailable(); +} + void setTelemetryValue(TelemetryProtocol protocol, uint16_t id, uint8_t instance, int32_t value, uint32_t unit, uint32_t prec) { int index = getTelemetryIndex(protocol, id, instance); diff --git a/radio/src/telemetry/telemetry.h b/radio/src/telemetry/telemetry.h index ddb9160a7..485892aab 100644 --- a/radio/src/telemetry/telemetry.h +++ b/radio/src/telemetry/telemetry.h @@ -185,6 +185,8 @@ inline bool isTelemetryFieldComparisonAvailable(int index) void setTelemetryValue(TelemetryProtocol protocol, uint16_t id, uint8_t instance, int32_t value, uint32_t unit, uint32_t prec); void delTelemetryIndex(uint8_t index); int availableTelemetryIndex(); +int lastUsedTelemetryIndex(); +bool isSensorAvailableInResetSpecialFunction(int index); int32_t getTelemetryValue(uint8_t index, uint8_t & prec); int32_t convertTelemetryValue(int32_t value, uint8_t unit, uint8_t prec, uint8_t destUnit, uint8_t destPrec); From f7355972109432af30d2715335e852d3119be474 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sun, 22 Mar 2015 18:33:40 +0400 Subject: [PATCH 2/8] Support for multiple items with the same value (allows different units/flags) --- radio/src/telemetry/telemetry.cpp | 70 +++++++++++++------------------ 1 file changed, 30 insertions(+), 40 deletions(-) diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index 8008fefcb..687804852 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -401,40 +401,6 @@ void TelemetryItem::eval(const TelemetrySensor & sensor) } } -int getTelemetryIndex(TelemetryProtocol protocol, uint16_t id, uint8_t instance) -{ - int available = -1; - - for (int index=0; index= 0) { - switch (protocol) { -#if defined(FRSKY_SPORT) - case TELEM_PROTO_FRSKY_SPORT: - frskySportSetDefault(available, id, instance); - break; -#endif -#if defined(FRSKY) - case TELEM_PROTO_FRSKY_D: - frskyDSetDefault(available, id); - break; -#endif - default: - break; - } - } - - return available; -} - void delTelemetryIndex(uint8_t index) { memclear(&g_model.telemetrySensors[index], sizeof(TelemetrySensor)); @@ -472,13 +438,37 @@ bool isSensorAvailableInResetSpecialFunction(int index) void setTelemetryValue(TelemetryProtocol protocol, uint16_t id, uint8_t instance, int32_t value, uint32_t unit, uint32_t prec) { - int index = getTelemetryIndex(protocol, id, instance); - - if (index >= 0) { - telemetryItems[index].setValue(g_model.telemetrySensors[index], value, unit, prec); + bool available = false; + + for (int index=0; index= 0) { + switch (protocol) { +#if defined(FRSKY_SPORT) + case TELEM_PROTO_FRSKY_SPORT: + frskySportSetDefault(index, id, instance); + break; +#endif +#if defined(FRSKY) + case TELEM_PROTO_FRSKY_D: + frskyDSetDefault(index, id); + break; +#endif + default: + break; + } + } + else { + // TODO error too many sensors + } } } From 91f5205c4ff6f9ad69974c67f2c844182e46853d Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sun, 22 Mar 2015 20:13:18 +0400 Subject: [PATCH 3/8] Auto Offset / Filter now independent --- radio/src/gui/9X/menu_model_telemetry.cpp | 40 +++++++++++++------ .../src/gui/Taranis/menu_model_telemetry.cpp | 24 ++++++++--- radio/src/myeeprom.h | 11 +---- radio/src/telemetry/frsky_d.cpp | 4 +- radio/src/telemetry/frsky_sport.cpp | 2 +- radio/src/telemetry/telemetry.cpp | 18 ++++----- radio/src/telemetry/telemetry.h | 6 ++- radio/src/translations.cpp | 2 + radio/src/translations.h | 2 + radio/src/translations/cz.h.txt | 2 + radio/src/translations/de.h.txt | 2 + radio/src/translations/en.h.txt | 2 + radio/src/translations/es.h.txt | 2 + radio/src/translations/fi.h.txt | 2 + radio/src/translations/fr.h.txt | 4 +- radio/src/translations/it.h.txt | 2 + radio/src/translations/pl.h.txt | 2 + radio/src/translations/pt.h.txt | 2 + radio/src/translations/se.h.txt | 2 + 19 files changed, 89 insertions(+), 42 deletions(-) diff --git a/radio/src/gui/9X/menu_model_telemetry.cpp b/radio/src/gui/9X/menu_model_telemetry.cpp index bbfbaba1b..aca7fa13d 100644 --- a/radio/src/gui/9X/menu_model_telemetry.cpp +++ b/radio/src/gui/9X/menu_model_telemetry.cpp @@ -192,7 +192,9 @@ enum SensorFields { SENSOR_FIELD_PARAM2, SENSOR_FIELD_PARAM3, SENSOR_FIELD_PARAM4, - SENSOR_FIELD_INPUT_FLAGS, + SENSOR_FIELD_AUTOOFFSET, + SENSOR_FIELD_FILTER, + SENSOR_FIELD_PERSISTENT, SENSOR_FIELD_LOGS, SENSOR_FIELD_MAX }; @@ -249,12 +251,15 @@ bool isSensorAvailable(int sensor) #define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && sensor->formula==TELEM_FORMULA_CONSUMPTION)) ? HIDDEN_ROW : (uint8_t)0 #define SENSOR_PARAM3_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW #define SENSOR_PARAM4_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW +#define SENSOR_AUTOOFFSET_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) +#define SENSOR_FILTER_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) +#define SENSOR_PERSISTENT_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) void menuModelSensor(uint8_t event) { TelemetrySensor * sensor = & g_model.telemetrySensors[s_currIdx]; - SUBMENU(STR_MENUSENSOR, SENSOR_FIELD_MAX, {0, 0, sensor->type == TELEM_TYPE_CALCULATED ? (uint8_t)0 : (uint8_t)1, SENSOR_UNIT_ROWS, SENSOR_PREC_ROWS, SENSOR_PARAM1_ROWS, SENSOR_PARAM2_ROWS, SENSOR_PARAM3_ROWS, SENSOR_PARAM4_ROWS, 0 }); + SUBMENU(STR_MENUSENSOR, SENSOR_FIELD_MAX, {0, 0, sensor->type == TELEM_TYPE_CALCULATED ? (uint8_t)0 : (uint8_t)1, SENSOR_UNIT_ROWS, SENSOR_PREC_ROWS, SENSOR_PARAM1_ROWS, SENSOR_PARAM2_ROWS, SENSOR_PARAM3_ROWS, SENSOR_PARAM4_ROWS, SENSOR_AUTOOFFSET_ROWS, SENSOR_FILTER_ROWS, SENSOR_PERSISTENT_ROWS, 0 }); lcd_outdezAtt(PSIZE(TR_MENUSENSOR)*FW+1, 0, s_currIdx+1, INVERS|LEFT); putsTelemetryChannelValue(SENSOR_2ND_COLUMN, 0, s_currIdx, getValue(MIXSRC_FIRST_TELEM+3*s_currIdx), LEFT); @@ -284,7 +289,8 @@ void menuModelSensor(uint8_t event) sensor->instance = 0; if (sensor->type == TELEM_TYPE_CALCULATED) { sensor->param = 0; - sensor->inputFlags = 0; + sensor->autoOffset = 0; + sensor->filter = 0; } } break; @@ -348,7 +354,7 @@ void menuModelSensor(uint8_t event) case SENSOR_FIELD_PARAM1: if (sensor->type == TELEM_TYPE_CALCULATED) { if (sensor->formula == TELEM_FORMULA_CELL) { - lcd_putsLeft(y, "Cells sensor"); + lcd_putsLeft(y, STR_CELLSENSOR); putsMixerSource(SENSOR_2ND_COLUMN, y, sensor->cell.source ? MIXSRC_FIRST_TELEM+3*(sensor->cell.source-1) : 0, attr); if (attr) { sensor->cell.source = checkIncDec(event, sensor->cell.source, 0, TELEM_VALUES_MAX, EE_MODEL|NO_INCDEC_MARKS, isCellsSensor); @@ -356,7 +362,7 @@ void menuModelSensor(uint8_t event) break; } else if (sensor->formula == TELEM_FORMULA_DIST) { - lcd_putsLeft(y, "GPS sensor"); + lcd_putsLeft(y, STR_GPSSENSOR); putsMixerSource(SENSOR_2ND_COLUMN, y, sensor->dist.gps ? MIXSRC_FIRST_TELEM+3*(sensor->dist.gps-1) : 0, attr); if (attr) { sensor->dist.gps = checkIncDec(event, sensor->dist.gps, 0, TELEM_VALUES_MAX, EE_MODEL|NO_INCDEC_MARKS, isGPSSensor); @@ -364,7 +370,7 @@ void menuModelSensor(uint8_t event) break; } else if (sensor->formula == TELEM_FORMULA_CONSUMPTION) { - lcd_putsLeft(y, "Amps sensor"); + lcd_putsLeft(y, STR_CURRENTSENSOR); putsMixerSource(SENSOR_2ND_COLUMN, y, sensor->consumption.source ? MIXSRC_FIRST_TELEM+3*(sensor->consumption.source-1) : 0, attr); if (attr) { sensor->consumption.source = checkIncDec(event, sensor->consumption.source, 0, TELEM_VALUES_MAX, EE_MODEL|NO_INCDEC_MARKS, isCurrentSensor); @@ -373,7 +379,7 @@ void menuModelSensor(uint8_t event) } } else { - lcd_putsLeft(y, "Ratio"); + lcd_putsLeft(y, STR_RATIO); if (attr) CHECK_INCDEC_MODELVAR(event, sensor->custom.ratio, 0, 30000); if (sensor->custom.ratio == 0) lcd_putcAtt(SENSOR_2ND_COLUMN, y, '-', attr); @@ -386,11 +392,11 @@ void menuModelSensor(uint8_t event) case SENSOR_FIELD_PARAM2: if (sensor->type == TELEM_TYPE_CALCULATED) { if (sensor->formula == TELEM_FORMULA_CELL) { - sensor->cell.index = selectMenuItem(SENSOR_2ND_COLUMN, y, "Cell index", "\007Lowest\0001\0 2\0 3\0 4\0 5\0 6\0 HighestDelta\0", sensor->cell.index, 0, 8, attr, event); + sensor->cell.index = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_CELLINDEX, "\007Lowest\0001\0 2\0 3\0 4\0 5\0 6\0 HighestDelta\0", sensor->cell.index, 0, 8, attr, event); break; } else if (sensor->formula == TELEM_FORMULA_DIST) { - lcd_putsLeft(y, "Alt sensor"); + lcd_putsLeft(y, STR_ALTSENSOR); putsMixerSource(SENSOR_2ND_COLUMN, y, sensor->dist.alt ? MIXSRC_FIRST_TELEM+3*(sensor->dist.alt-1) : 0, attr); if (attr) { sensor->dist.alt = checkIncDec(event, sensor->dist.alt, 0, TELEM_VALUES_MAX, EE_MODEL|NO_INCDEC_MARKS, isAltSensor); @@ -412,7 +418,7 @@ void menuModelSensor(uint8_t event) case SENSOR_FIELD_PARAM4: { - putsStrIdx(0, y, "Source", k-SENSOR_FIELD_PARAM1+1); + putsStrIdx(0, y, NO_INDENT(STR_SOURCE), k-SENSOR_FIELD_PARAM1+1); int8_t & source = sensor->calc.sources[k-SENSOR_FIELD_PARAM1]; if (attr) { source = checkIncDec(event, source, -TELEM_VALUES_MAX, TELEM_VALUES_MAX, EE_MODEL|NO_INCDEC_MARKS, isSensorAvailable); @@ -427,12 +433,20 @@ void menuModelSensor(uint8_t event) break; } - case SENSOR_FIELD_INPUT_FLAGS: - sensor->inputFlags = selectMenuItem(SENSOR_2ND_COLUMN, y, "Options", "\013None\0 ""Auto Offset""Filter\0", sensor->inputFlags, 0, TELEM_INPUT_FLAGS_MAX, attr, event); + case SENSOR_FIELD_AUTOOFFSET: + ON_OFF_MENU_ITEM(sensor->autoOffset, SENSOR_2ND_COLUMN, y, STR_AUTOOFFSET, attr, event); + break; + + case SENSOR_FIELD_FILTER: + ON_OFF_MENU_ITEM(sensor->filter, SENSOR_2ND_COLUMN, y, STR_FILTER, attr, event); + break; + + case SENSOR_FIELD_PERSISTENT: + ON_OFF_MENU_ITEM(sensor->persistent, SENSOR_2ND_COLUMN, y, NO_INDENT(STR_PERSISTENT), attr, event); break; case SENSOR_FIELD_LOGS: - ON_OFF_MENU_ITEM(sensor->logs, SENSOR_2ND_COLUMN, y, "Logs", attr, event); + ON_OFF_MENU_ITEM(sensor->logs, SENSOR_2ND_COLUMN, y, STR_LOGS, attr, event); break; } diff --git a/radio/src/gui/Taranis/menu_model_telemetry.cpp b/radio/src/gui/Taranis/menu_model_telemetry.cpp index 1f6bb9860..21c39f3bc 100644 --- a/radio/src/gui/Taranis/menu_model_telemetry.cpp +++ b/radio/src/gui/Taranis/menu_model_telemetry.cpp @@ -149,7 +149,9 @@ enum SensorFields { SENSOR_FIELD_PARAM2, SENSOR_FIELD_PARAM3, SENSOR_FIELD_PARAM4, - SENSOR_FIELD_INPUT_FLAGS, + SENSOR_FIELD_AUTOOFFSET, + SENSOR_FIELD_FILTER, + SENSOR_FIELD_PERSISTENT, SENSOR_FIELD_LOGS, SENSOR_FIELD_MAX }; @@ -206,12 +208,15 @@ bool isSensorAvailable(int sensor) #define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && sensor->formula==TELEM_FORMULA_CONSUMPTION)) ? HIDDEN_ROW : (uint8_t)0 #define SENSOR_PARAM3_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW #define SENSOR_PARAM4_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW +#define SENSOR_AUTOOFFSET_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) +#define SENSOR_FILTER_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) +#define SENSOR_PERSISTENT_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) void menuModelSensor(uint8_t event) { TelemetrySensor * sensor = & g_model.telemetrySensors[s_currIdx]; - SUBMENU(STR_MENUSENSOR, SENSOR_FIELD_MAX, {0, 0, sensor->type == TELEM_TYPE_CALCULATED ? (uint8_t)0 : (uint8_t)1, SENSOR_UNIT_ROWS, SENSOR_PREC_ROWS, SENSOR_PARAM1_ROWS, SENSOR_PARAM2_ROWS, SENSOR_PARAM3_ROWS, SENSOR_PARAM4_ROWS, 0 }); + SUBMENU(STR_MENUSENSOR, SENSOR_FIELD_MAX, {0, 0, sensor->type == TELEM_TYPE_CALCULATED ? (uint8_t)0 : (uint8_t)1, SENSOR_UNIT_ROWS, SENSOR_PREC_ROWS, SENSOR_PARAM1_ROWS, SENSOR_PARAM2_ROWS, SENSOR_PARAM3_ROWS, SENSOR_PARAM4_ROWS, SENSOR_AUTOOFFSET_ROWS, SENSOR_FILTER_ROWS, SENSOR_PERSISTENT_ROWS, 0 }); lcd_outdezAtt(PSIZE(TR_MENUSENSOR)*FW+1, 0, s_currIdx+1, INVERS|LEFT); putsTelemetryChannelValue(SENSOR_2ND_COLUMN, 0, s_currIdx, getValue(MIXSRC_FIRST_TELEM+3*s_currIdx), LEFT); @@ -241,7 +246,8 @@ void menuModelSensor(uint8_t event) sensor->instance = 0; if (sensor->type == TELEM_TYPE_CALCULATED) { sensor->param = 0; - sensor->inputFlags = 0; + sensor->filter = 0; + sensor->autoOffset = 0; } } break; @@ -384,8 +390,16 @@ void menuModelSensor(uint8_t event) break; } - case SENSOR_FIELD_INPUT_FLAGS: - sensor->inputFlags = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_OPTIONS, "\013None\0 ""Auto Offset""Filter\0", sensor->inputFlags, 0, TELEM_INPUT_FLAGS_MAX, attr, event); + case SENSOR_FIELD_AUTOOFFSET: + ON_OFF_MENU_ITEM(sensor->autoOffset, SENSOR_2ND_COLUMN, y, STR_AUTOOFFSET, attr, event); + break; + + case SENSOR_FIELD_FILTER: + ON_OFF_MENU_ITEM(sensor->filter, SENSOR_2ND_COLUMN, y, STR_FILTER, attr, event); + break; + + case SENSOR_FIELD_PERSISTENT: + ON_OFF_MENU_ITEM(sensor->persistent, SENSOR_2ND_COLUMN, y, NO_INDENT(STR_PERSISTENT), attr, event); break; case SENSOR_FIELD_LOGS: diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index 4e7f3f2d0..17cd274b1 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -1247,14 +1247,6 @@ enum TelemetrySensorFormula TELEM_FORMULA_DIST, }; -enum TelemetrySensorInputFlags -{ - TELEM_INPUT_FLAGS_NONE, - TELEM_INPUT_FLAGS_AUTO_OFFSET, - TELEM_INPUT_FLAGS_FILTERING, - TELEM_INPUT_FLAGS_MAX=TELEM_INPUT_FLAGS_FILTERING -}; - PACK(typedef struct { union { uint16_t id; // data identifier, for FrSky we can reuse existing ones. Source unit is derived from type. @@ -1268,7 +1260,8 @@ PACK(typedef struct { uint8_t type:1; // 0=custom / 1=calculated uint8_t unit:5; // user can choose what unit to display each value in uint8_t prec:2; - uint8_t inputFlags:2; + uint8_t autoOffset:1; + uint8_t filter:1; uint8_t logs:1; uint8_t persistent:1; uint8_t spare:4; diff --git a/radio/src/telemetry/frsky_d.cpp b/radio/src/telemetry/frsky_d.cpp index 1565971da..0ddcd133e 100644 --- a/radio/src/telemetry/frsky_d.cpp +++ b/radio/src/telemetry/frsky_d.cpp @@ -643,10 +643,10 @@ void frskyDSetDefault(int index, uint16_t id) if (id >= D_A1_ID && id <= D_A2_ID) { telemetrySensor.prec = 1; telemetrySensor.custom.ratio = 132; - telemetrySensor.inputFlags = TELEM_INPUT_FLAGS_FILTERING; + telemetrySensor.filter = 1; } else if (id == D_RSSI_ID) { - telemetrySensor.inputFlags = TELEM_INPUT_FLAGS_FILTERING; + telemetrySensor.filter = 1; } } else { diff --git a/radio/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp index 6fe757915..b76824d33 100644 --- a/radio/src/telemetry/frsky_sport.cpp +++ b/radio/src/telemetry/frsky_sport.cpp @@ -254,7 +254,7 @@ void frskySportSetDefault(int index, uint16_t id, uint8_t instance) telemetrySensor.init(sensor->name, unit, prec); if (id >= ADC1_ID && id <= BATT_ID) { telemetrySensor.custom.ratio = 132; - telemetrySensor.inputFlags = TELEM_INPUT_FLAGS_FILTERING; + telemetrySensor.filter = 1; } } else { diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index 687804852..923cae585 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -143,28 +143,28 @@ void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t newVal, uin } else { newVal = sensor.getValue(newVal, unit, prec); - if (sensor.inputFlags == TELEM_INPUT_FLAGS_AUTO_OFFSET) { + if (sensor.autoOffset) { if (!isAvailable()) { - offsetAuto = -newVal; + std.offsetAuto = -newVal; } - newVal += offsetAuto; + newVal += std.offsetAuto; } - else if (sensor.inputFlags == TELEM_INPUT_FLAGS_FILTERING) { + else if (sensor.filter) { if (!isAvailable()) { for (int i=0; i Date: Sun, 22 Mar 2015 20:56:03 +0400 Subject: [PATCH 4/8] RPM blades --- radio/src/gui/9X/menu_model_telemetry.cpp | 32 ++++++++++++------- .../src/gui/Taranis/menu_model_telemetry.cpp | 32 ++++++++++++------- radio/src/telemetry/frsky.cpp | 1 + radio/src/telemetry/frsky_sport.cpp | 3 ++ radio/src/telemetry/telemetry.cpp | 3 ++ 5 files changed, 47 insertions(+), 24 deletions(-) diff --git a/radio/src/gui/9X/menu_model_telemetry.cpp b/radio/src/gui/9X/menu_model_telemetry.cpp index aca7fa13d..205a6a5ab 100644 --- a/radio/src/gui/9X/menu_model_telemetry.cpp +++ b/radio/src/gui/9X/menu_model_telemetry.cpp @@ -245,15 +245,15 @@ bool isSensorAvailable(int sensor) #define SENSOR_2ND_COLUMN (12*FW) #define SENSOR_3RD_COLUMN (18*FW) -#define SENSOR_UNIT_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) -#define SENSOR_PREC_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME) ? HIDDEN_ROW : (uint8_t)0) +#define SENSOR_UNIT_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) +#define SENSOR_PREC_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME) ? HIDDEN_ROW : (uint8_t)0) #define SENSOR_PARAM1_ROWS (sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0 -#define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && sensor->formula==TELEM_FORMULA_CONSUMPTION)) ? HIDDEN_ROW : (uint8_t)0 +#define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && sensor->formula==TELEM_FORMULA_CONSUMPTION)) ? HIDDEN_ROW : (uint8_t)0 #define SENSOR_PARAM3_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW #define SENSOR_PARAM4_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW -#define SENSOR_AUTOOFFSET_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) +#define SENSOR_AUTOOFFSET_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) #define SENSOR_FILTER_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) -#define SENSOR_PERSISTENT_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) +#define SENSOR_PERSISTENT_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) void menuModelSensor(uint8_t event) { @@ -379,13 +379,21 @@ void menuModelSensor(uint8_t event) } } else { - lcd_putsLeft(y, STR_RATIO); - if (attr) CHECK_INCDEC_MODELVAR(event, sensor->custom.ratio, 0, 30000); - if (sensor->custom.ratio == 0) - lcd_putcAtt(SENSOR_2ND_COLUMN, y, '-', attr); - else - lcd_outdezAtt(SENSOR_2ND_COLUMN, y, sensor->custom.ratio, LEFT|attr|PREC1); - break; + if (sensor->unit == UNIT_RPMS) { + lcd_putsLeft(y, NO_INDENT(STR_BLADES)); + if (attr) CHECK_INCDEC_MODELVAR(event, sensor->custom.ratio, 1, 30000); + lcd_outdezAtt(SENSOR_2ND_COLUMN, y, sensor->custom.ratio, LEFT|attr); + break; + } + else { + lcd_putsLeft(y, STR_RATIO); + if (attr) CHECK_INCDEC_MODELVAR(event, sensor->custom.ratio, 0, 30000); + if (sensor->custom.ratio == 0) + lcd_putcAtt(SENSOR_2ND_COLUMN, y, '-', attr); + else + lcd_outdezAtt(SENSOR_2ND_COLUMN, y, sensor->custom.ratio, LEFT|attr|PREC1); + break; + } } // no break diff --git a/radio/src/gui/Taranis/menu_model_telemetry.cpp b/radio/src/gui/Taranis/menu_model_telemetry.cpp index 21c39f3bc..d0411c79b 100644 --- a/radio/src/gui/Taranis/menu_model_telemetry.cpp +++ b/radio/src/gui/Taranis/menu_model_telemetry.cpp @@ -202,15 +202,15 @@ bool isSensorAvailable(int sensor) #define SENSOR_2ND_COLUMN (12*FW) #define SENSOR_3RD_COLUMN (18*FW) -#define SENSOR_UNIT_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) -#define SENSOR_PREC_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME) ? HIDDEN_ROW : (uint8_t)0) +#define SENSOR_UNIT_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) +#define SENSOR_PREC_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME) ? HIDDEN_ROW : (uint8_t)0) #define SENSOR_PARAM1_ROWS (sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0 -#define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && sensor->formula==TELEM_FORMULA_CONSUMPTION)) ? HIDDEN_ROW : (uint8_t)0 +#define SENSOR_PARAM2_ROWS (sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS || (sensor->type==TELEM_TYPE_CALCULATED && sensor->formula==TELEM_FORMULA_CONSUMPTION)) ? HIDDEN_ROW : (uint8_t)0 #define SENSOR_PARAM3_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW #define SENSOR_PARAM4_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula < TELEM_FORMULA_MULTIPLY) ? (uint8_t)0 : HIDDEN_ROW -#define SENSOR_AUTOOFFSET_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) +#define SENSOR_AUTOOFFSET_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) #define SENSOR_FILTER_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) -#define SENSOR_PERSISTENT_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) +#define SENSOR_PERSISTENT_ROWS (sensor->type == TELEM_TYPE_CALCULATED && sensor->formula >= TELEM_FORMULA_CELL) ? HIDDEN_ROW : ((sensor->unit == UNIT_RPMS || sensor->unit == UNIT_GPS || sensor->unit == UNIT_DATETIME || sensor->unit == UNIT_CELLS) ? HIDDEN_ROW : (uint8_t)0) void menuModelSensor(uint8_t event) { @@ -336,13 +336,21 @@ void menuModelSensor(uint8_t event) } } else { - lcd_putsLeft(y, STR_RATIO); - if (attr) CHECK_INCDEC_MODELVAR(event, sensor->custom.ratio, 0, 30000); - if (sensor->custom.ratio == 0) - lcd_putcAtt(SENSOR_2ND_COLUMN, y, '-', attr); - else - lcd_outdezAtt(SENSOR_2ND_COLUMN, y, sensor->custom.ratio, LEFT|attr|PREC1); - break; + if (sensor->unit == UNIT_RPMS) { + lcd_putsLeft(y, NO_INDENT(STR_BLADES)); + if (attr) CHECK_INCDEC_MODELVAR(event, sensor->custom.ratio, 1, 30000); + lcd_outdezAtt(SENSOR_2ND_COLUMN, y, sensor->custom.ratio, LEFT|attr); + break; + } + else { + lcd_putsLeft(y, STR_RATIO); + if (attr) CHECK_INCDEC_MODELVAR(event, sensor->custom.ratio, 0, 30000); + if (sensor->custom.ratio == 0) + lcd_putcAtt(SENSOR_2ND_COLUMN, y, '-', attr); + else + lcd_outdezAtt(SENSOR_2ND_COLUMN, y, sensor->custom.ratio, LEFT|attr|PREC1); + break; + } } // no break diff --git a/radio/src/telemetry/frsky.cpp b/radio/src/telemetry/frsky.cpp index 046921ce0..01ffaba5d 100644 --- a/radio/src/telemetry/frsky.cpp +++ b/radio/src/telemetry/frsky.cpp @@ -573,6 +573,7 @@ void telemetryReset() setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, ALT_FIRST_ID, 1, 1000, UNIT_METERS, 2); setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, CELLS_FIRST_ID, 2, 0x80280220, UNIT_CELLS, 0); setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, CURR_FIRST_ID, 3, 100, UNIT_AMPS, 2); + setTelemetryValue(TELEM_PROTO_FRSKY_SPORT, RPM_FIRST_ID, 5, 3600, UNIT_RPMS, 0); #endif } diff --git a/radio/src/telemetry/frsky_sport.cpp b/radio/src/telemetry/frsky_sport.cpp index b76824d33..7dd5e7033 100644 --- a/radio/src/telemetry/frsky_sport.cpp +++ b/radio/src/telemetry/frsky_sport.cpp @@ -256,6 +256,9 @@ void frskySportSetDefault(int index, uint16_t id, uint8_t instance) telemetrySensor.custom.ratio = 132; telemetrySensor.filter = 1; } + if (unit == UNIT_RPMS) { + telemetrySensor.custom.ratio = 1; + } } else { telemetrySensor.init(id); diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index 923cae585..faa90c3d2 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -141,6 +141,9 @@ void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t newVal, uin datetime.timestate = 1; newVal = 0; } + else if (unit == UNIT_RPMS) { + newVal = newVal / sensor.custom.ratio; + } else { newVal = sensor.getValue(newVal, unit, prec); if (sensor.autoOffset) { From 7f6d77e441adf7fdef71c6477c46c1aea00b9723 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sun, 22 Mar 2015 21:38:28 +0400 Subject: [PATCH 5/8] Translations --- radio/src/gui/9X/menu_model_telemetry.cpp | 8 ++++---- radio/src/gui/Taranis/menu_model_telemetry.cpp | 8 ++++---- radio/src/translations.cpp | 4 ++++ radio/src/translations.h | 10 +++++++++- radio/src/translations/cz.h.txt | 12 ++++++++++++ radio/src/translations/de.h.txt | 12 ++++++++++++ radio/src/translations/en.h.txt | 12 ++++++++++++ radio/src/translations/es.h.txt | 12 ++++++++++++ radio/src/translations/fi.h.txt | 12 ++++++++++++ radio/src/translations/fr.h.txt | 12 ++++++++++++ radio/src/translations/it.h.txt | 12 ++++++++++++ radio/src/translations/pl.h.txt | 12 ++++++++++++ radio/src/translations/pt.h.txt | 12 ++++++++++++ radio/src/translations/se.h.txt | 12 ++++++++++++ 14 files changed, 141 insertions(+), 9 deletions(-) diff --git a/radio/src/gui/9X/menu_model_telemetry.cpp b/radio/src/gui/9X/menu_model_telemetry.cpp index 205a6a5ab..0b716626f 100644 --- a/radio/src/gui/9X/menu_model_telemetry.cpp +++ b/radio/src/gui/9X/menu_model_telemetry.cpp @@ -284,7 +284,7 @@ void menuModelSensor(uint8_t event) break; case SENSOR_FIELD_TYPE: - sensor->type = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_TYPE, "\012Custom\0 Calculated", sensor->type, 0, 1, attr, event); + sensor->type = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_TYPE, STR_VSENSORTYPES, sensor->type, 0, 1, attr, event); if (attr && checkIncDec_Ret) { sensor->instance = 0; if (sensor->type == TELEM_TYPE_CALCULATED) { @@ -313,7 +313,7 @@ void menuModelSensor(uint8_t event) } } else { - sensor->formula = selectMenuItem(SENSOR_2ND_COLUMN, y, "Formula", "\010Add\0 Average\0Min\0 Max\0 MultiplyCell\0 ConsumptDistance", sensor->formula, 0, TELEM_FORMULA_DIST, attr, event); + sensor->formula = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_FORMULA, STR_VFORMULAS, sensor->formula, 0, TELEM_FORMULA_DIST, attr, event); if (attr && checkIncDec_Ret) { sensor->param = 0; if (sensor->formula == TELEM_FORMULA_CELL) { @@ -345,7 +345,7 @@ void menuModelSensor(uint8_t event) break; case SENSOR_FIELD_PRECISION: - sensor->prec = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_PRECISION, "\005PREC0PREC1PREC2", sensor->prec, 0, 2, attr, event); + sensor->prec = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_PRECISION, STR_VPREC, sensor->prec, 0, 2, attr, event); if (attr && checkIncDec_Ret) { telemetryItems[s_currIdx].clear(); } @@ -400,7 +400,7 @@ void menuModelSensor(uint8_t event) case SENSOR_FIELD_PARAM2: if (sensor->type == TELEM_TYPE_CALCULATED) { if (sensor->formula == TELEM_FORMULA_CELL) { - sensor->cell.index = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_CELLINDEX, "\007Lowest\0001\0 2\0 3\0 4\0 5\0 6\0 HighestDelta\0", sensor->cell.index, 0, 8, attr, event); + sensor->cell.index = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_CELLINDEX, STR_VCELLINDEX, sensor->cell.index, 0, 8, attr, event); break; } else if (sensor->formula == TELEM_FORMULA_DIST) { diff --git a/radio/src/gui/Taranis/menu_model_telemetry.cpp b/radio/src/gui/Taranis/menu_model_telemetry.cpp index d0411c79b..bcefe709c 100644 --- a/radio/src/gui/Taranis/menu_model_telemetry.cpp +++ b/radio/src/gui/Taranis/menu_model_telemetry.cpp @@ -241,7 +241,7 @@ void menuModelSensor(uint8_t event) break; case SENSOR_FIELD_TYPE: - sensor->type = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_TYPE, "\012Custom\0 Calculated", sensor->type, 0, 1, attr, event); + sensor->type = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_TYPE, STR_VSENSORTYPES, sensor->type, 0, 1, attr, event); if (attr && checkIncDec_Ret) { sensor->instance = 0; if (sensor->type == TELEM_TYPE_CALCULATED) { @@ -270,7 +270,7 @@ void menuModelSensor(uint8_t event) } } else { - sensor->formula = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_FORMULA, "\010Add\0 Average\0Min\0 Max\0 MultiplyCell\0 ConsumptDistance", sensor->formula, 0, TELEM_FORMULA_DIST, attr, event); + sensor->formula = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_FORMULA, STR_VFORMULAS, sensor->formula, 0, TELEM_FORMULA_DIST, attr, event); if (attr && checkIncDec_Ret) { sensor->param = 0; if (sensor->formula == TELEM_FORMULA_CELL) { @@ -302,7 +302,7 @@ void menuModelSensor(uint8_t event) break; case SENSOR_FIELD_PRECISION: - sensor->prec = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_PRECISION, "\005PREC0PREC1PREC2", sensor->prec, 0, 2, attr, event); + sensor->prec = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_PRECISION, STR_VPREC, sensor->prec, 0, 2, attr, event); if (attr && checkIncDec_Ret) { telemetryItems[s_currIdx].clear(); } @@ -357,7 +357,7 @@ void menuModelSensor(uint8_t event) case SENSOR_FIELD_PARAM2: if (sensor->type == TELEM_TYPE_CALCULATED) { if (sensor->formula == TELEM_FORMULA_CELL) { - sensor->cell.index = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_CELLINDEX, "\007Lowest\0001\0 2\0 3\0 4\0 5\0 6\0 HighestDelta\0", sensor->cell.index, 0, 8, attr, event); + sensor->cell.index = selectMenuItem(SENSOR_2ND_COLUMN, y, STR_CELLINDEX, STR_VCELLINDEX, sensor->cell.index, 0, 8, attr, event); break; } else if (sensor->formula == TELEM_FORMULA_DIST) { diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 5299eb80f..d366ccd4b 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -121,6 +121,10 @@ const pm_char STR_OPEN9X[] PROGMEM = ISTR(DSM_PROTOCOLS) ISTR(VOLTSRC) ISTR(CURVE_TYPES) + ISTR(VSENSORTYPES) + ISTR(VFORMULAS) + ISTR(VPREC) + ISTR(VCELLINDEX) #endif #if defined(MAVLINK) ISTR(MAVLINK_BAUDS) diff --git a/radio/src/translations.h b/radio/src/translations.h index 205ed5a25..3efa979b9 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -192,7 +192,11 @@ extern const pm_char STR_OPEN9X[]; #define OFS_DSM_PROTOCOLS (OFS_XJT_PROTOCOLS + sizeof(TR_XJT_PROTOCOLS)) #define OFS_VOLTSRC (OFS_DSM_PROTOCOLS + sizeof(TR_DSM_PROTOCOLS)) #define OFS_CURVE_TYPES (OFS_VOLTSRC + sizeof(TR_VOLTSRC)) - #define OFS_MAVLINK_BAUDS (OFS_CURVE_TYPES + sizeof(TR_CURVE_TYPES)) + #define OFS_VSENSORTYPES (OFS_CURVE_TYPES + sizeof(TR_CURVE_TYPES)) + #define OFS_VFORMULAS (OFS_VSENSORTYPES + sizeof(TR_VSENSORTYPES)) + #define OFS_VPREC (OFS_VFORMULAS + sizeof(TR_VFORMULAS)) + #define OFS_VCELLINDEX (OFS_VPREC + sizeof(TR_VPREC)) + #define OFS_MAVLINK_BAUDS (OFS_VCELLINDEX + sizeof(TR_VCELLINDEX)) #else #define OFS_MAVLINK_BAUDS (OFS_VTRAINERMODES) #endif @@ -298,6 +302,10 @@ extern const pm_char STR_OPEN9X[]; #define STR_XJT_PROTOCOLS (STR_OPEN9X + OFS_XJT_PROTOCOLS) #define STR_DSM_PROTOCOLS (STR_OPEN9X + OFS_DSM_PROTOCOLS) #define STR_CURVE_TYPES (STR_OPEN9X + OFS_CURVE_TYPES) + #define STR_VSENSORTYPES (STR_OPEN9X + OFS_VSENSORTYPES) + #define STR_VFORMULAS (STR_OPEN9X + OFS_VFORMULAS) + #define STR_VPREC (STR_OPEN9X + OFS_VPREC) + #define STR_VCELLINDEX (STR_OPEN9X + OFS_VCELLINDEX) #endif #if defined(MAVLINK) diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 58522fd5d..b11cdc9fd 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -531,6 +531,18 @@ #define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Initialising ""INVALID " #endif +#define LEN_VSENSORTYPES "\012" +#define TR_VSENSORTYPES "Custom\0 ""Calculated" + +#define LEN_VFORMULAS "\010" +#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Cell\0 ""Consumpt""Distance" + +#define LEN_VPREC "\005" +#define TR_VPREC "PREC0""PREC1""PREC2" + +#define LEN_VCELLINDEX "\007" +#define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0" + // ZERO TERMINATED STRINGS #if defined(COLORLCD) #define INDENT "\007" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 6687aa66d..e1b5c5c77 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -530,6 +530,18 @@ #define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Initialising ""INVALID " #endif +#define LEN_VSENSORTYPES "\012" +#define TR_VSENSORTYPES "Custom\0 ""Calculated" + +#define LEN_VFORMULAS "\010" +#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Cell\0 ""Consumpt""Distance" + +#define LEN_VPREC "\005" +#define TR_VPREC "PREC0""PREC1""PREC2" + +#define LEN_VCELLINDEX "\007" +#define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0" + // ZERO TERMINATED STRINGS #if defined(COLORLCD) #define INDENT "\007" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index b0c368252..92686d438 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -530,6 +530,18 @@ #define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Initialising ""INVALID " #endif +#define LEN_VSENSORTYPES "\012" +#define TR_VSENSORTYPES "Custom\0 ""Calculated" + +#define LEN_VFORMULAS "\010" +#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Cell\0 ""Consumpt""Distance" + +#define LEN_VPREC "\005" +#define TR_VPREC "PREC0""PREC1""PREC2" + +#define LEN_VCELLINDEX "\007" +#define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0" + // ZERO TERMINATED STRINGS #if defined(COLORLCD) #define INDENT "\007" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 7cb35b907..4fdf8d2cf 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -491,6 +491,18 @@ #define TR_MAVLINK_AP_MODES "Manual ""Circulo ""Estabilizar ""Entrenamiento""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guiado ""Inicialisando""INVALID " #endif +#define LEN_VSENSORTYPES "\012" +#define TR_VSENSORTYPES "Custom\0 ""Calculated" + +#define LEN_VFORMULAS "\010" +#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Cell\0 ""Consumpt""Distance" + +#define LEN_VPREC "\005" +#define TR_VPREC "PREC0""PREC1""PREC2" + +#define LEN_VCELLINDEX "\007" +#define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0" + // ZERO TERMINATED STRINGS #define INDENT "\001" #define LEN_INDENT 1 diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 85d84c091..6a9198e5c 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -491,6 +491,18 @@ #define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Initialising ""INVALID " #endif +#define LEN_VSENSORTYPES "\012" +#define TR_VSENSORTYPES "Custom\0 ""Calculated" + +#define LEN_VFORMULAS "\010" +#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Cell\0 ""Consumpt""Distance" + +#define LEN_VPREC "\005" +#define TR_VPREC "PREC0""PREC1""PREC2" + +#define LEN_VCELLINDEX "\007" +#define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0" + // ZERO TERMINATED STRINGS #define INDENT "\001" #define LEN_INDENT 1 diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index a8340c2c9..abbb6b355 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -534,6 +534,18 @@ #define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Initialising ""INVALID " #endif +#define LEN_VSENSORTYPES "\012" +#define TR_VSENSORTYPES "Perso\0 ""Calculé\0 " + +#define LEN_VFORMULAS "\010" +#define TR_VFORMULAS "Addition""Moyenne\0""Min\0 ""Max\0 ""Multipl.""Elément\0""Consomm.""Distance" + +#define LEN_VPREC "\005" +#define TR_VPREC "PREC0""PREC1""PREC2" + +#define LEN_VCELLINDEX "\007" +#define TR_VCELLINDEX "Mini.\0 ""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Maxi.\0 ""Diff.\0 " + // ZERO TERMINATED STRINGS #if defined(COLORLCD) #define INDENT "\007" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 16a7642a6..e27d7bc9e 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -491,6 +491,18 @@ #define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Inizializza ""INVALID " #endif +#define LEN_VSENSORTYPES "\012" +#define TR_VSENSORTYPES "Custom\0 ""Calculated" + +#define LEN_VFORMULAS "\010" +#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Cell\0 ""Consumpt""Distance" + +#define LEN_VPREC "\005" +#define TR_VPREC "PREC0""PREC1""PREC2" + +#define LEN_VCELLINDEX "\007" +#define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0" + // ZERO TERMINATED STRINGS #define INDENT "\001" #define LEN_INDENT 1 diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index 31b675f29..c3ee2784f 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -489,6 +489,18 @@ #define TR_MAVLINK_AP_MODES "Ręczny ""Koło ""Stabilizacja ""Trening ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Sterowany ""Inicjalizacja""BŁĘDNY " #endif +#define LEN_VSENSORTYPES "\012" +#define TR_VSENSORTYPES "Custom\0 ""Calculated" + +#define LEN_VFORMULAS "\010" +#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Cell\0 ""Consumpt""Distance" + +#define LEN_VPREC "\005" +#define TR_VPREC "PREC0""PREC1""PREC2" + +#define LEN_VCELLINDEX "\007" +#define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0" + // ZERO TERMINATED STRINGS #define INDENT "\001" #define LEN_INDENT 1 diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 83f080105..5211b5910 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -491,6 +491,18 @@ #define TR_MAVLINK_AP_MODES "Manual ""Circle ""Stabilize ""Training ""Fly by Wire A""Fly by Wire A""Auto ""RTL ""Loiter ""Guided ""Initialising ""INVALID " #endif +#define LEN_VSENSORTYPES "\012" +#define TR_VSENSORTYPES "Custom\0 ""Calculated" + +#define LEN_VFORMULAS "\010" +#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Cell\0 ""Consumpt""Distance" + +#define LEN_VPREC "\005" +#define TR_VPREC "PREC0""PREC1""PREC2" + +#define LEN_VCELLINDEX "\007" +#define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0" + // ZERO TERMINATED STRINGS #define INDENT "\001" #define LEN_INDENT 1 diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index e6535bd70..cf55e4651 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -491,6 +491,18 @@ #define TR_MAVLINK_AP_MODES "Manuell ""Cirkla ""Stabilisera ""Övning ""Fly by Wire A""Fly by Wire A""Automatisk ""Flyg Hem ""Hovra ""Guidad ""Initialiserar""OGILTIG " #endif +#define LEN_VSENSORTYPES "\012" +#define TR_VSENSORTYPES "Custom\0 ""Calculated" + +#define LEN_VFORMULAS "\010" +#define TR_VFORMULAS "Add\0 ""Average\0""Min\0 ""Max\0 ""Multiply""Cell\0 ""Consumpt""Distance" + +#define LEN_VPREC "\005" +#define TR_VPREC "PREC0""PREC1""PREC2" + +#define LEN_VCELLINDEX "\007" +#define TR_VCELLINDEX "Lowest\0""1\0 ""2\0 ""3\0 ""4\0 ""5\0 ""6\0 ""Highest""Delta\0" + // ZERO TERMINATED STRINGS #define INDENT "\001" #define LEN_INDENT 1 From 25a0463d2d1d895f037d4a64cecff2b143031520 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sun, 22 Mar 2015 22:00:04 +0400 Subject: [PATCH 6/8] Warning if all telemetry slots are full --- radio/src/gui/9X/menu_model_telemetry.cpp | 3 +++ radio/src/gui/Taranis/menu_model_telemetry.cpp | 3 +++ radio/src/telemetry/telemetry.cpp | 2 +- radio/src/translations.cpp | 1 + radio/src/translations.h | 1 + radio/src/translations/cz.h.txt | 1 + radio/src/translations/de.h.txt | 1 + radio/src/translations/en.h.txt | 1 + radio/src/translations/es.h.txt | 1 + radio/src/translations/fi.h.txt | 1 + radio/src/translations/fr.h.txt | 1 + radio/src/translations/it.h.txt | 1 + radio/src/translations/pl.h.txt | 1 + radio/src/translations/pt.h.txt | 1 + radio/src/translations/se.h.txt | 1 + 15 files changed, 19 insertions(+), 1 deletion(-) diff --git a/radio/src/gui/9X/menu_model_telemetry.cpp b/radio/src/gui/9X/menu_model_telemetry.cpp index 0b716626f..0750de2f9 100644 --- a/radio/src/gui/9X/menu_model_telemetry.cpp +++ b/radio/src/gui/9X/menu_model_telemetry.cpp @@ -574,6 +574,9 @@ void menuModelTelemetry(uint8_t event) s_currIdx = res; pushMenu(menuModelSensor); } + else { + POPUP_WARNING(STR_TELEMETRYFULL); + } } break; #endif diff --git a/radio/src/gui/Taranis/menu_model_telemetry.cpp b/radio/src/gui/Taranis/menu_model_telemetry.cpp index bcefe709c..409674bcd 100644 --- a/radio/src/gui/Taranis/menu_model_telemetry.cpp +++ b/radio/src/gui/Taranis/menu_model_telemetry.cpp @@ -538,6 +538,9 @@ void menuModelTelemetry(uint8_t event) s_currIdx = res; pushMenu(menuModelSensor); } + else { + POPUP_WARNING(STR_TELEMETRYFULL); + } } break; diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp index faa90c3d2..d11201940 100644 --- a/radio/src/telemetry/telemetry.cpp +++ b/radio/src/telemetry/telemetry.cpp @@ -470,7 +470,7 @@ void setTelemetryValue(TelemetryProtocol protocol, uint16_t id, uint8_t instance } } else { - // TODO error too many sensors + POPUP_WARNING(STR_TELEMETRYFULL); } } } diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index d366ccd4b..2a4f51c29 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -556,6 +556,7 @@ const pm_char STR_BLCOLOR[] PROGMEM = TR_BLCOLOR; const pm_char STR_CURRENTSENSOR[] PROGMEM = TR_CURRENTSENSOR; const pm_char STR_AUTOOFFSET[] PROGMEM = TR_AUTOOFFSET; const pm_char STR_FILTER[] PROGMEM = TR_FILTER; + const pm_char STR_TELEMETRYFULL[] PROGMEM = TR_TELEMETRYFULL; #endif #if defined(PCBTARANIS) diff --git a/radio/src/translations.h b/radio/src/translations.h index 3efa979b9..8d9bd4b64 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -766,6 +766,7 @@ extern const pm_char STR_BLCOLOR[]; extern const pm_char STR_CURRENTSENSOR[]; extern const pm_char STR_AUTOOFFSET[]; extern const pm_char STR_FILTER[]; + extern const pm_char STR_TELEMETRYFULL[]; #endif #if defined(PCBTARANIS) diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index b11cdc9fd..0e2043901 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -1061,6 +1061,7 @@ #define TR_CURRENTSENSOR "Current sensor" #define TR_AUTOOFFSET "Auto Offset" #define TR_FILTER "Filter" +#define TR_TELEMETRYFULL "All telemetry slots full!" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index e1b5c5c77..7c8d3ecc4 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -1060,6 +1060,7 @@ #define TR_CURRENTSENSOR "Current sensor" #define TR_AUTOOFFSET "Auto Offset" #define TR_FILTER "Filter" +#define TR_TELEMETRYFULL "All telemetry slots full!" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 92686d438..cf1bb254e 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -1060,6 +1060,7 @@ #define TR_CURRENTSENSOR "Curr. sensor" #define TR_AUTOOFFSET "Auto Offset" #define TR_FILTER "Filter" +#define TR_TELEMETRYFULL "All telemetry slots full!" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index 4fdf8d2cf..bd066eb93 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -996,6 +996,7 @@ #define TR_CURRENTSENSOR "Current sensor" #define TR_AUTOOFFSET "Auto Offset" #define TR_FILTER "Filter" +#define TR_TELEMETRYFULL "All telemetry slots full!" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 6a9198e5c..13ddc06b2 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -996,6 +996,7 @@ #define TR_CURRENTSENSOR "Current sensor" #define TR_AUTOOFFSET "Auto Offset" #define TR_FILTER "Filter" +#define TR_TELEMETRYFULL "All telemetry slots full!" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index abbb6b355..91fdd3f31 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -1056,6 +1056,7 @@ #define TR_CURRENTSENSOR "Capt courant" #define TR_AUTOOFFSET "Offset auto" #define TR_FILTER "Filtrage" +#define TR_TELEMETRYFULL "Plus de capteurs libres!" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index e27d7bc9e..5535199bd 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -996,6 +996,7 @@ #define TR_CURRENTSENSOR "Current sensor" #define TR_AUTOOFFSET "Auto Offset" #define TR_FILTER "Filter" +#define TR_TELEMETRYFULL "All telemetry slots full!" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index c3ee2784f..7d4fa1b95 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -994,6 +994,7 @@ #define TR_CURRENTSENSOR "Current sensor" #define TR_AUTOOFFSET "Auto Offset" #define TR_FILTER "Filter" +#define TR_TELEMETRYFULL "All telemetry slots full!" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index 5211b5910..f16fa94b6 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -996,6 +996,7 @@ #define TR_CURRENTSENSOR "Current sensor" #define TR_AUTOOFFSET "Auto Offset" #define TR_FILTER "Filter" +#define TR_TELEMETRYFULL "All telemetry slots full!" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index cf55e4651..5abce5aca 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -996,6 +996,7 @@ #define TR_CURRENTSENSOR "Current sensor" #define TR_AUTOOFFSET "Auto Offset" #define TR_FILTER "Filter" +#define TR_TELEMETRYFULL "All telemetry slots full!" #define ZSTR_RSSI "RSSI" #define ZSTR_SWR "SWR" From 11ede465aca542c6a9f9478163b492bbaae8d503 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sun, 22 Mar 2015 22:25:58 +0400 Subject: [PATCH 7/8] Cosmetics --- radio/src/functions.cpp | 1 - radio/src/telemetry/telemetry.h | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/radio/src/functions.cpp b/radio/src/functions.cpp index 802b96094..9e2450ef0 100644 --- a/radio/src/functions.cpp +++ b/radio/src/functions.cpp @@ -41,7 +41,6 @@ CustomFunctionsContext modelFunctionsContext = { 0 }; #if defined(CPUARM) CustomFunctionsContext globalFunctionsContext = { 0 }; -extern TelemetryItem telemetryItems[]; #endif diff --git a/radio/src/telemetry/telemetry.h b/radio/src/telemetry/telemetry.h index f3037c95a..981d623f2 100644 --- a/radio/src/telemetry/telemetry.h +++ b/radio/src/telemetry/telemetry.h @@ -184,6 +184,8 @@ inline bool isTelemetryFieldComparisonAvailable(int index) return (sensor.id != 0); } +extern TelemetryItem telemetryItems[]; + void setTelemetryValue(TelemetryProtocol protocol, uint16_t id, uint8_t instance, int32_t value, uint32_t unit, uint32_t prec); void delTelemetryIndex(uint8_t index); int availableTelemetryIndex(); From 9245d7038ca81298732888aa91554eb26f24a8f0 Mon Sep 17 00:00:00 2001 From: Andre Bernet Date: Sun, 22 Mar 2015 22:40:31 +0400 Subject: [PATCH 8/8] Companion support for new flags --- companion/src/eeprominterface.h | 3 +- .../src/firmwares/opentx/opentxeeprom.cpp | 3 +- companion/src/modeledit/telemetry.cpp | 3 +- companion/src/modeledit/telemetry_sensor.ui | 39 ++++++++----------- 4 files changed, 23 insertions(+), 25 deletions(-) diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h index 1c65c9c5d..b982da9d0 100644 --- a/companion/src/eeprominterface.h +++ b/companion/src/eeprominterface.h @@ -906,7 +906,8 @@ class SensorData { char label[4+1]; unsigned int unit; unsigned int prec; - unsigned int inputFlags; + bool autoOffset; + bool filter; bool logs; bool persistent; diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index a0531d166..139ea6fe9 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -2696,7 +2696,8 @@ class SensorField: public TransformedField { internalField.Append(new UnsignedField<1>(sensor.type, "type")); internalField.Append(new UnsignedField<5>(sensor.unit, "unit")); internalField.Append(new UnsignedField<2>(sensor.prec, "prec")); - internalField.Append(new UnsignedField<2>(sensor.inputFlags, "inputFlags")); + internalField.Append(new BoolField<1>(sensor.autoOffset)); + internalField.Append(new BoolField<1>(sensor.filter)); internalField.Append(new BoolField<1>(sensor.logs)); internalField.Append(new BoolField<1>(sensor.persistent)); internalField.Append(new SpareBitsField<4>()); diff --git a/companion/src/modeledit/telemetry.cpp b/companion/src/modeledit/telemetry.cpp index ee2215640..5eb2fb33f 100644 --- a/companion/src/modeledit/telemetry.cpp +++ b/companion/src/modeledit/telemetry.cpp @@ -486,7 +486,8 @@ TelemetrySensorPanel::TelemetrySensorPanel(QWidget *parent, SensorData & sensor, ui->instance->setField(sensor.instance); ui->ratio->setField(sensor.ratio); ui->offset->setField(sensor.offset); - ui->inputFlags->setField(sensor.inputFlags); + ui->autoOffset->setField(sensor.autoOffset); + ui->filter->setField(sensor.filter); ui->logs->setField(sensor.logs); ui->persistent->setField(sensor.persistent); ui->gpsSensor->setField(sensor.gps); diff --git a/companion/src/modeledit/telemetry_sensor.ui b/companion/src/modeledit/telemetry_sensor.ui index 8d9e03ce1..182159ebb 100644 --- a/companion/src/modeledit/telemetry_sensor.ui +++ b/companion/src/modeledit/telemetry_sensor.ui @@ -13,7 +13,7 @@ Form - + 0 @@ -521,28 +521,23 @@ - - - - 0 - 0 - + + + Qt::LeftToRight + + + Auto Offset + + + + + + + Qt::LeftToRight + + + Filter - - - --- - - - - - Auto Offset - - - - - Filtered - -