diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h
index 2e9f65305..fb23a8b53 100644
--- a/companion/src/eeprominterface.h
+++ b/companion/src/eeprominterface.h
@@ -781,6 +781,7 @@ class FrSkyData {
bool mAhPersistent;
unsigned int storedMah;
int fasOffset;
+ bool rejectNewSensors;
bool ignoreSensorIds;
void clear();
diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp
index c1351fb27..d807005e3 100644
--- a/companion/src/firmwares/opentx/opentxeeprom.cpp
+++ b/companion/src/firmwares/opentx/opentxeeprom.cpp
@@ -3025,7 +3025,13 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne
internalField.Append(new SignedField<8>(modelData.moduleData[0].ppmFrameLength));
}
- internalField.Append(new ConversionField< UnsignedField<8> >(modelData.thrTraceSrc, &throttleSourceConversionTable, "Throttle Source"));
+ if (!IS_ARM(board) || version < 217) {
+ internalField.Append(new ConversionField< UnsignedField<8> >(modelData.thrTraceSrc, &throttleSourceConversionTable, "Throttle Source"));
+ }
+ else {
+ internalField.Append(new ConversionField< UnsignedField<7> >(modelData.thrTraceSrc, &throttleSourceConversionTable, "Throttle Source"));
+ internalField.Append(new BoolField<1>(modelData.frsky.rejectNewSensors));
+ }
if (!afterrelease21March2013) {
internalField.Append(new UnsignedField<8>(modelData.moduleData[0].modelId));
diff --git a/companion/src/modeledit/telemetry.cpp b/companion/src/modeledit/telemetry.cpp
index 5ab8c1210..2861634af 100644
--- a/companion/src/modeledit/telemetry.cpp
+++ b/companion/src/modeledit/telemetry.cpp
@@ -787,11 +787,13 @@ void TelemetryPanel::setup()
ui->telemetryProtocol->addItem(tr("FrSky D (cable)"), 2);
}
ui->telemetryProtocol->setCurrentIndex(model->telemetryProtocol);
+ ui->rejectNewSensors->setField(model->frsky.rejectNewSensors);
ui->ignoreSensorIds->setField(model->frsky.ignoreSensorIds);
}
else {
ui->telemetryProtocolLabel->hide();
ui->telemetryProtocol->hide();
+ ui->rejectNewSensors->hide();
ui->ignoreSensorIds->hide();
}
diff --git a/companion/src/modeledit/telemetry.ui b/companion/src/modeledit/telemetry.ui
index 0709dc70d..0f6914410 100644
--- a/companion/src/modeledit/telemetry.ui
+++ b/companion/src/modeledit/telemetry.ui
@@ -62,7 +62,16 @@
false
-
+
+ 4
+
+
+ 4
+
+
+ 4
+
+
4
-
@@ -269,7 +278,16 @@
false
-
+
+ 4
+
+
+ 4
+
+
+ 4
+
+
4
-
@@ -294,7 +312,16 @@
false
-
+
+ 4
+
+
+ 4
+
+
+ 4
+
+
4
-
@@ -322,7 +349,16 @@
-
+
+ 4
+
+
+ 4
+
+
+ 4
+
+
4
@@ -571,7 +607,16 @@
-
+
+ 4
+
+
+ 4
+
+
+ 4
+
+
4
@@ -642,7 +687,16 @@
-
+
+ 4
+
+
+ 4
+
+
+ 4
+
+
4
@@ -893,7 +947,16 @@
false
-
+
+ 4
+
+
+ 4
+
+
+ 4
+
+
4
-
@@ -909,13 +972,20 @@
- -
+
-
Disable multi sensor handling
+ -
+
+
+ Reject new sensors
+
+
+
diff --git a/radio/src/gui/9X/menu_model_telemetry.cpp b/radio/src/gui/9X/menu_model_telemetry.cpp
index 80f87b938..77ba0cafd 100644
--- a/radio/src/gui/9X/menu_model_telemetry.cpp
+++ b/radio/src/gui/9X/menu_model_telemetry.cpp
@@ -87,7 +87,8 @@ enum menuModelTelemetryItems {
ITEM_TELEMETRY_SENSOR31,
ITEM_TELEMETRY_SENSOR32,
ITEM_TELEMETRY_NEWSENSOR,
- ITEM_TELEMETRY_IGNORE_SENSORID,
+ ITEM_TELEMETRY_REJECT_NEWSENSORS,
+ ITEM_TELEMETRY_IGNORE_SENSOR_INSTANCE,
#endif
#if !defined(CPUARM)
#if defined(FRSKY_HUB) || defined(WS_HOW_HIGH)
@@ -132,30 +133,30 @@ enum menuModelTelemetryItems {
};
#if defined(FRSKY)
- #define TELEM_COL1 INDENT_WIDTH
+ #define TELEM_COL1 INDENT_WIDTH
#if defined(TRANSLATIONS_FR) || defined(TRANSLATIONS_CZ)
- #define TELEM_COL2 (9*FW)
+ #define TELEM_COL2 (9*FW)
#else
- #define TELEM_COL2 (8*FW)
+ #define TELEM_COL2 (8*FW)
#endif
- #define TELEM_BARS_COLMIN (56-3*FW)
- #define TELEM_BARS_COLMAX (14*FW-3)
- #define TELEM_SCRTYPE_COL TELEM_COL2
+ #define TELEM_BARS_COLMIN (56-3*FW)
+ #define TELEM_BARS_COLMAX (14*FW-3)
+ #define TELEM_SCRTYPE_COL TELEM_COL2
-#define IS_RANGE_DEFINED(k) (g_model.frsky.channels[k].ratio > 0)
+#define IS_RANGE_DEFINED(k) (g_model.frsky.channels[k].ratio > 0)
#if defined(CPUARM)
#define CHANNELS_ROWS
- #define SENSOR_ROWS(x) (isTelemetryFieldAvailable(x) ? (uint8_t)0 : HIDDEN_ROW)
- #define SENSORS_ROWS LABEL(Sensors), SENSOR_ROWS(0), SENSOR_ROWS(1), SENSOR_ROWS(2), SENSOR_ROWS(3), SENSOR_ROWS(4), SENSOR_ROWS(5), SENSOR_ROWS(6), SENSOR_ROWS(7), SENSOR_ROWS(8), SENSOR_ROWS(9), SENSOR_ROWS(10), SENSOR_ROWS(11), SENSOR_ROWS(12), SENSOR_ROWS(13), SENSOR_ROWS(14), SENSOR_ROWS(15), SENSOR_ROWS(16), SENSOR_ROWS(17), SENSOR_ROWS(18), SENSOR_ROWS(19), SENSOR_ROWS(20), SENSOR_ROWS(21), SENSOR_ROWS(22), SENSOR_ROWS(23), SENSOR_ROWS(24), SENSOR_ROWS(25), SENSOR_ROWS(26), SENSOR_ROWS(27), SENSOR_ROWS(28), SENSOR_ROWS(29), SENSOR_ROWS(30), SENSOR_ROWS(31), 0, 0,
+ #define SENSOR_ROWS(x) (isTelemetryFieldAvailable(x) ? (uint8_t)0 : HIDDEN_ROW)
+ #define SENSORS_ROWS LABEL(Sensors), SENSOR_ROWS(0), SENSOR_ROWS(1), SENSOR_ROWS(2), SENSOR_ROWS(3), SENSOR_ROWS(4), SENSOR_ROWS(5), SENSOR_ROWS(6), SENSOR_ROWS(7), SENSOR_ROWS(8), SENSOR_ROWS(9), SENSOR_ROWS(10), SENSOR_ROWS(11), SENSOR_ROWS(12), SENSOR_ROWS(13), SENSOR_ROWS(14), SENSOR_ROWS(15), SENSOR_ROWS(16), SENSOR_ROWS(17), SENSOR_ROWS(18), SENSOR_ROWS(19), SENSOR_ROWS(20), SENSOR_ROWS(21), SENSOR_ROWS(22), SENSOR_ROWS(23), SENSOR_ROWS(24), SENSOR_ROWS(25), SENSOR_ROWS(26), SENSOR_ROWS(27), SENSOR_ROWS(28), SENSOR_ROWS(29), SENSOR_ROWS(30), SENSOR_ROWS(31), (g_model.rejectNewSensors ? HIDDEN_ROW : (uint8_t)0), 0, 0,
#else
- #define CHANNEL_ROWS(x) LABEL(CHANNEL), 1, 0, 2, 2
- #define CHANNELS_ROWS CHANNEL_ROWS(0), CHANNEL_ROWS(1),
+ #define CHANNEL_ROWS(x) LABEL(CHANNEL), 1, 0, 2, 2
+ #define CHANNELS_ROWS CHANNEL_ROWS(0), CHANNEL_ROWS(1),
#define SENSORS_ROWS
#endif
#if defined(FAS_OFFSET) || !defined(CPUM64)
- #define IF_FAS_OFFSET(x) x,
+ #define IF_FAS_OFFSET(x) x,
#else
#define IF_FAS_OFFSET(x)
#endif
@@ -163,38 +164,38 @@ enum menuModelTelemetryItems {
#if defined(CPUARM)
#define USRDATA_ROWS
#elif defined(FRSKY_HUB) || defined(WS_HOW_HIGH)
- #define USRDATA_ROWS LABEL(UsrData), 0, 0, 0, 0, IF_FAS_OFFSET(0)
+ #define USRDATA_ROWS LABEL(UsrData), 0, 0, 0, 0, IF_FAS_OFFSET(0)
#else
- #define USRDATA_ROWS 0, 0, IF_FAS_OFFSET(0)
+ #define USRDATA_ROWS 0, 0, IF_FAS_OFFSET(0)
#endif
-#define RSSI_ROWS LABEL(RSSI), 1, 1,
+#define RSSI_ROWS LABEL(RSSI), 1, 1,
#if defined(CPUARM) || defined(GAUGES)
- #define SCREEN_TYPE_ROWS 0
+ #define SCREEN_TYPE_ROWS 0
#else
- #define SCREEN_TYPE_ROWS LABEL(SCREEN)
+ #define SCREEN_TYPE_ROWS LABEL(SCREEN)
#endif
#if defined(PCBSTD)
- #define VARIO_RANGE_ROWS 1
+ #define VARIO_RANGE_ROWS 1
#else
- #define VARIO_RANGE_ROWS 3
+ #define VARIO_RANGE_ROWS 3
#endif
#if defined(CPUARM)
- #define TELEMETRY_TYPE_ROWS 0,
+ #define TELEMETRY_TYPE_ROWS 0,
#else
#define TELEMETRY_TYPE_ROWS
#endif
#if defined(CPUARM)
- #define TELEMETRY_SCREEN_LINE(x) (TELEMETRY_SCREEN_TYPE(x) == TELEMETRY_SCREEN_TYPE_NONE ? HIDDEN_ROW : (uint8_t)2)
- #define TELEMETRY_SCREEN_ROWS(x) SCREEN_TYPE_ROWS, TELEMETRY_SCREEN_LINE(x), TELEMETRY_SCREEN_LINE(x), TELEMETRY_SCREEN_LINE(x), TELEMETRY_SCREEN_LINE(x)
- #define TELEMETRY_CURRENT_EDIT_SCREEN(k) (k < ITEM_TELEMETRY_SCREEN_LABEL2 ? 0 : (k < ITEM_TELEMETRY_SCREEN_LABEL3 ? 1 : (k < ITEM_TELEMETRY_SCREEN_LABEL4 ? 2 : 3)))
+ #define TELEMETRY_SCREEN_LINE(x) (TELEMETRY_SCREEN_TYPE(x) == TELEMETRY_SCREEN_TYPE_NONE ? HIDDEN_ROW : (uint8_t)2)
+ #define TELEMETRY_SCREEN_ROWS(x) SCREEN_TYPE_ROWS, TELEMETRY_SCREEN_LINE(x), TELEMETRY_SCREEN_LINE(x), TELEMETRY_SCREEN_LINE(x), TELEMETRY_SCREEN_LINE(x)
+ #define TELEMETRY_CURRENT_SCREEN(k) (k < ITEM_TELEMETRY_SCREEN_LABEL2 ? 0 : (k < ITEM_TELEMETRY_SCREEN_LABEL3 ? 1 : (k < ITEM_TELEMETRY_SCREEN_LABEL4 ? 2 : 3)))
#else
- #define TELEMETRY_SCREEN_ROWS(x) SCREEN_TYPE_ROWS, 2, 2, 2, 2
- #define TELEMETRY_CURRENT_EDIT_CHANNEL(k) (k >= ITEM_TELEMETRY_A2_LABEL ? TELEM_ANA_A2 : TELEM_ANA_A1)
+ #define TELEMETRY_SCREEN_ROWS(x) SCREEN_TYPE_ROWS, 2, 2, 2, 2
+ #define TELEMETRY_CURRENT_CHANNEL(k) (k >= ITEM_TELEMETRY_A2_LABEL ? TELEM_ANA_A2 : TELEM_ANA_A1)
#endif
#if defined(CPUARM)
@@ -549,7 +550,7 @@ void menuModelTelemetry(uint8_t event)
uint8_t attr = (sub == k ? blink : 0);
#if !defined(CPUARM)
- uint8_t ch = TELEMETRY_CURRENT_EDIT_CHANNEL(k);
+ uint8_t ch = TELEMETRY_CURRENT_CHANNEL(k);
FrSkyChannelData & channel = g_model.frsky.channels[ch];
uint8_t dest = TELEM_A1-1+ch;
#endif
@@ -618,9 +619,13 @@ void menuModelTelemetry(uint8_t event)
}
}
break;
-
- case ITEM_TELEMETRY_IGNORE_SENSORID:
- ON_OFF_MENU_ITEM(g_model.ignoreSensorIds, TELEM_COL2, y, STR_IGNOREIDS, attr, event);
+
+ case ITEM_TELEMETRY_REJECT_NEWSENSORS:
+ ON_OFF_MENU_ITEM(g_model.rejectNewSensors, TELEM_COL2, y, STR_REJECT_NEWSENSORS, attr, event);
+ break;
+
+ case ITEM_TELEMETRY_IGNORE_SENSOR_INSTANCE:
+ ON_OFF_MENU_ITEM(g_model.ignoreSensorIds, TELEM_COL2, y, STR_IGNORE_INSTANCE, attr, event);
break;
#endif
@@ -830,7 +835,7 @@ void menuModelTelemetry(uint8_t event)
case ITEM_TELEMETRY_SCREEN_LABEL3:
case ITEM_TELEMETRY_SCREEN_LABEL4:
{
- uint8_t screenIndex = TELEMETRY_CURRENT_EDIT_SCREEN(k);
+ uint8_t screenIndex = TELEMETRY_CURRENT_SCREEN(k);
putsStrIdx(0*FW, y, STR_SCREEN, screenIndex+1);
TelemetryScreenType oldScreenType = TELEMETRY_SCREEN_TYPE(screenIndex);
TelemetryScreenType newScreenType = (TelemetryScreenType)selectMenuItem(TELEM_SCRTYPE_COL, y, PSTR(""), STR_VTELEMSCREENTYPE, oldScreenType, 0, TELEMETRY_SCREEN_TYPE_MAX, (m_posHorz==0 ? attr : 0), event);
diff --git a/radio/src/gui/Taranis/menu_model_telemetry.cpp b/radio/src/gui/Taranis/menu_model_telemetry.cpp
index 21578d131..4efaad845 100644
--- a/radio/src/gui/Taranis/menu_model_telemetry.cpp
+++ b/radio/src/gui/Taranis/menu_model_telemetry.cpp
@@ -74,7 +74,8 @@ enum menuModelTelemetryItems {
ITEM_TELEMETRY_SENSOR31,
ITEM_TELEMETRY_SENSOR32,
ITEM_TELEMETRY_NEWSENSOR,
- ITEM_TELEMETRY_IGNORE_SENSORID,
+ ITEM_TELEMETRY_REJECT_NEWSENSORS,
+ ITEM_TELEMETRY_IGNORE_SENSOR_INSTANCE,
#if defined(VARIO)
ITEM_TELEMETRY_VARIO_LABEL,
ITEM_TELEMETRY_VARIO_SOURCE,
@@ -110,39 +111,39 @@ enum menuModelTelemetryItems {
ITEM_TELEMETRY_MAX
};
-#define TELEM_COL1 (1*FW)
-#define TELEM_COL2 (16*FW)
-#define TELEM_COL3 (28*FW)
-#define TELEM_BARS_COLMIN TELEM_COL2
-#define TELEM_BARS_COLMAX TELEM_COL3
-#define TELEM_SCRTYPE_COL TELEM_COL2
+#define TELEM_COL1 (1*FW)
+#define TELEM_COL2 (16*FW)
+#define TELEM_COL3 (28*FW)
+#define TELEM_BARS_COLMIN TELEM_COL2
+#define TELEM_BARS_COLMAX TELEM_COL3
+#define TELEM_SCRTYPE_COL TELEM_COL2
-#define IF_FAS_OFFSET(x) x,
-#define IS_RANGE_DEFINED(k) (g_model.frsky.channels[k].ratio > 0)
+#define IF_FAS_OFFSET(x) x,
+#define IS_RANGE_DEFINED(k) (g_model.frsky.channels[k].ratio > 0)
-#define SENSOR_ROWS(x) (isTelemetryFieldAvailable(x) ? (uint8_t)0 : HIDDEN_ROW)
-#define SENSORS_ROWS LABEL(Sensors), SENSOR_ROWS(0), SENSOR_ROWS(1), SENSOR_ROWS(2), SENSOR_ROWS(3), SENSOR_ROWS(4), SENSOR_ROWS(5), SENSOR_ROWS(6), SENSOR_ROWS(7), SENSOR_ROWS(8), SENSOR_ROWS(9), SENSOR_ROWS(10), SENSOR_ROWS(11), SENSOR_ROWS(12), SENSOR_ROWS(13), SENSOR_ROWS(14), SENSOR_ROWS(15), SENSOR_ROWS(16), SENSOR_ROWS(17), SENSOR_ROWS(18), SENSOR_ROWS(19), SENSOR_ROWS(20), SENSOR_ROWS(21), SENSOR_ROWS(22), SENSOR_ROWS(23), SENSOR_ROWS(24), SENSOR_ROWS(25), SENSOR_ROWS(26), SENSOR_ROWS(27), SENSOR_ROWS(28), SENSOR_ROWS(29), SENSOR_ROWS(30), SENSOR_ROWS(31), 0, 0,
+#define SENSOR_ROWS(x) (isTelemetryFieldAvailable(x) ? (uint8_t)0 : HIDDEN_ROW)
+#define SENSORS_ROWS LABEL(Sensors), SENSOR_ROWS(0), SENSOR_ROWS(1), SENSOR_ROWS(2), SENSOR_ROWS(3), SENSOR_ROWS(4), SENSOR_ROWS(5), SENSOR_ROWS(6), SENSOR_ROWS(7), SENSOR_ROWS(8), SENSOR_ROWS(9), SENSOR_ROWS(10), SENSOR_ROWS(11), SENSOR_ROWS(12), SENSOR_ROWS(13), SENSOR_ROWS(14), SENSOR_ROWS(15), SENSOR_ROWS(16), SENSOR_ROWS(17), SENSOR_ROWS(18), SENSOR_ROWS(19), SENSOR_ROWS(20), SENSOR_ROWS(21), SENSOR_ROWS(22), SENSOR_ROWS(23), SENSOR_ROWS(24), SENSOR_ROWS(25), SENSOR_ROWS(26), SENSOR_ROWS(27), SENSOR_ROWS(28), SENSOR_ROWS(29), SENSOR_ROWS(30), SENSOR_ROWS(31), (g_model.rejectNewSensors ? HIDDEN_ROW : (uint8_t)0), 0, 0,
#if defined(VARIO)
- #define VARIO_ROWS LABEL(Vario), 0, 1, 2,
+ #define VARIO_ROWS LABEL(Vario), 0, 1, 2,
#else
#define VARIO_ROWS
#endif
-#define RSSI_ROWS LABEL(RSSI), 0, 0,
+#define RSSI_ROWS LABEL(RSSI), 0, 0,
#if defined(LUA)
- #define SCREEN_TYPE_ROWS 1
+ #define SCREEN_TYPE_ROWS 1
#else
- #define SCREEN_TYPE_ROWS 0
+ #define SCREEN_TYPE_ROWS 0
#endif
-#define VARIO_RANGE_ROWS 3
-#define TELEMETRY_TYPE_ROWS (g_model.moduleData[INTERNAL_MODULE].rfProtocol == RF_PROTO_OFF && g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_PPM) ? (uint8_t)0 : HIDDEN_ROW,
+#define VARIO_RANGE_ROWS 3
+#define TELEMETRY_TYPE_ROWS (g_model.moduleData[INTERNAL_MODULE].rfProtocol == RF_PROTO_OFF && g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_PPM) ? (uint8_t)0 : HIDDEN_ROW,
#if defined(LUA)
- #define TELEMETRY_SCREEN_LINE(x) ((TELEMETRY_SCREEN_TYPE(x) == TELEMETRY_SCREEN_TYPE_NONE || TELEMETRY_SCREEN_TYPE(x) == TELEMETRY_SCREEN_TYPE_SCRIPT) ? HIDDEN_ROW : (uint8_t)2)
+ #define TELEMETRY_SCREEN_LINE(x) ((TELEMETRY_SCREEN_TYPE(x) == TELEMETRY_SCREEN_TYPE_NONE || TELEMETRY_SCREEN_TYPE(x) == TELEMETRY_SCREEN_TYPE_SCRIPT) ? HIDDEN_ROW : (uint8_t)2)
#else
- #define TELEMETRY_SCREEN_LINE(x) (TELEMETRY_SCREEN_TYPE(x) == TELEMETRY_SCREEN_TYPE_NONE ? HIDDEN_ROW : (uint8_t)2)
+ #define TELEMETRY_SCREEN_LINE(x) (TELEMETRY_SCREEN_TYPE(x) == TELEMETRY_SCREEN_TYPE_NONE ? HIDDEN_ROW : (uint8_t)2)
#endif
-#define TELEMETRY_SCREEN_ROWS(x) SCREEN_TYPE_ROWS, TELEMETRY_SCREEN_LINE(x), TELEMETRY_SCREEN_LINE(x), TELEMETRY_SCREEN_LINE(x), TELEMETRY_SCREEN_LINE(x)
-#define TELEMETRY_CURRENT_EDIT_SCREEN(k) (k < ITEM_TELEMETRY_SCREEN_LABEL2 ? 0 : (k < ITEM_TELEMETRY_SCREEN_LABEL3 ? 1 : (k < ITEM_TELEMETRY_SCREEN_LABEL4 ? 2 : 3)))
+#define TELEMETRY_SCREEN_ROWS(x) SCREEN_TYPE_ROWS, TELEMETRY_SCREEN_LINE(x), TELEMETRY_SCREEN_LINE(x), TELEMETRY_SCREEN_LINE(x), TELEMETRY_SCREEN_LINE(x)
+#define TELEMETRY_CURRENT_SCREEN(k) (k < ITEM_TELEMETRY_SCREEN_LABEL2 ? 0 : (k < ITEM_TELEMETRY_SCREEN_LABEL3 ? 1 : (k < ITEM_TELEMETRY_SCREEN_LABEL4 ? 2 : 3)))
enum SensorFields {
SENSOR_FIELD_NAME,
@@ -492,7 +493,7 @@ void onSensorMenu(const char *result)
void onTelemetryScriptFileSelectionMenu(const char *result)
{
int sub = m_posVert;
- int screenIndex = TELEMETRY_CURRENT_EDIT_SCREEN(sub);
+ int screenIndex = TELEMETRY_CURRENT_SCREEN(sub);
if (result == STR_UPDATE_LIST) {
if (!listSdFiles(SCRIPTS_TELEM_PATH, SCRIPTS_EXT, sizeof(g_model.frsky.screens[screenIndex].script.file), NULL)) {
@@ -600,8 +601,12 @@ void menuModelTelemetry(uint8_t event)
}
break;
- case ITEM_TELEMETRY_IGNORE_SENSORID:
- ON_OFF_MENU_ITEM(g_model.ignoreSensorIds, TELEM_COL2, y, STR_IGNOREIDS, attr, event);
+ case ITEM_TELEMETRY_REJECT_NEWSENSORS:
+ ON_OFF_MENU_ITEM(g_model.rejectNewSensors, TELEM_COL2, y, STR_REJECT_NEWSENSORS, attr, event);
+ break;
+
+ case ITEM_TELEMETRY_IGNORE_SENSOR_INSTANCE:
+ ON_OFF_MENU_ITEM(g_model.ignoreSensorIds, TELEM_COL2, y, STR_IGNORE_INSTANCE, attr, event);
break;
case ITEM_TELEMETRY_RSSI_LABEL:
@@ -705,7 +710,7 @@ void menuModelTelemetry(uint8_t event)
case ITEM_TELEMETRY_SCREEN_LABEL3:
case ITEM_TELEMETRY_SCREEN_LABEL4:
{
- uint8_t screenIndex = TELEMETRY_CURRENT_EDIT_SCREEN(k);
+ uint8_t screenIndex = TELEMETRY_CURRENT_SCREEN(k);
putsStrIdx(0*FW, y, STR_SCREEN, screenIndex+1);
TelemetryScreenType oldScreenType = TELEMETRY_SCREEN_TYPE(screenIndex);
TelemetryScreenType newScreenType = (TelemetryScreenType)selectMenuItem(TELEM_SCRTYPE_COL, y, PSTR(""), STR_VTELEMSCREENTYPE, oldScreenType, 0, TELEMETRY_SCREEN_TYPE_MAX, (m_posHorz==0 ? attr : 0), event);
diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h
index 1e14f2ef0..cca4ecdd6 100644
--- a/radio/src/myeeprom.h
+++ b/radio/src/myeeprom.h
@@ -2153,7 +2153,10 @@ PACK(typedef struct {
FlightModeData flightModeData[MAX_FLIGHT_MODES];
AVR_FIELD(int8_t ppmFrameLength) // 0=22.5ms (10ms-30ms) 0.5ms increments
- uint8_t thrTraceSrc;
+ AVR_FIELD(uint8_t thrTraceSrc)
+
+ ARM_FIELD(uint8_t thrTraceSrc:7)
+ ARM_FIELD(uint8_t rejectNewSensors:1)
swarnstate_t switchWarningState;
swarnenable_t switchWarningEnable;
diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp
index 2c85a702d..54d581bdb 100644
--- a/radio/src/telemetry/telemetry.cpp
+++ b/radio/src/telemetry/telemetry.cpp
@@ -491,11 +491,11 @@ void setTelemetryValue(TelemetryProtocol protocol, uint16_t id, uint8_t instance
if (telemetrySensor.type == TELEM_TYPE_CUSTOM && telemetrySensor.id == id && (telemetrySensor.instance == instance || g_model.ignoreSensorIds)) {
telemetryItems[index].setValue(telemetrySensor, value, unit, prec);
available = true;
- // we continue search here, because more than one sensor can have the same id and instance
+ // we continue search here, because sensors can share the same id and instance
}
}
- if (available) {
+ if (available || g_model.rejectNewSensors) {
return;
}
diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp
index febcbb99c..858654f03 100644
--- a/radio/src/translations.cpp
+++ b/radio/src/translations.cpp
@@ -570,7 +570,8 @@ const pm_char STR_BLCOLOR[] PROGMEM = TR_BLCOLOR;
const pm_char STR_ONLYPOSITIVE[] PROGMEM = TR_ONLYPOSITIVE;
const pm_char STR_FILTER[] PROGMEM = TR_FILTER;
const pm_char STR_TELEMETRYFULL[] PROGMEM = TR_TELEMETRYFULL;
- const pm_char STR_IGNOREIDS[] PROGMEM = TR_IGNOREIDS;
+ const pm_char STR_IGNORE_INSTANCE[] PROGMEM = TR_IGNORE_INSTANCE;
+const pm_char STR_REJECT_NEWSENSORS[] PROGMEM = TR_REJECT_NEWSENSORS;
#endif
#if defined(PCBTARANIS)
diff --git a/radio/src/translations.h b/radio/src/translations.h
index 651a0fe13..d48e7dd01 100644
--- a/radio/src/translations.h
+++ b/radio/src/translations.h
@@ -789,7 +789,8 @@ extern const pm_char STR_BLCOLOR[];
extern const pm_char STR_ONLYPOSITIVE[];
extern const pm_char STR_FILTER[];
extern const pm_char STR_TELEMETRYFULL[];
- extern const pm_char STR_IGNOREIDS[];
+ extern const pm_char STR_IGNORE_INSTANCE[];
+extern const pm_char STR_REJECT_NEWSENSORS[];
#endif
#if defined(PCBTARANIS)
diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt
index 909961c47..98bcfa0fa 100644
--- a/radio/src/translations/cz.h.txt
+++ b/radio/src/translations/cz.h.txt
@@ -1079,7 +1079,8 @@
#define TR_ONLYPOSITIVE "Jen kladné"
#define TR_FILTER "Filtr"
#define TR_TELEMETRYFULL "Všechny sloty jsou plné!"
-#define TR_IGNOREIDS INDENT "Ignoruj chyby ID"
+#define TR_IGNORE_INSTANCE INDENT "Ignoruj chyby ID"
+#define TR_REJECT_NEWSENSORS "Reject new sensors"
#define TR_MENU_INPUTS "\314Vstupy"
#define TR_MENU_LUA "\322Lua skripty"
diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt
index 4e6521f3b..ff466aa77 100644
--- a/radio/src/translations/de.h.txt
+++ b/radio/src/translations/de.h.txt
@@ -1083,7 +1083,8 @@
#define TR_ONLYPOSITIVE "Nur Positiv"
#define TR_FILTER "Filter aktiv"
#define TR_TELEMETRYFULL "Telemetriezeilen voll!"
-#define TR_IGNOREIDS INDENT "Ignore instance"
+#define TR_IGNORE_INSTANCE INDENT "Ignore instance"
+#define TR_REJECT_NEWSENSORS "Reject new sensors"
// ----------------------------- Symbole für Auswahlliste----------
#define TR_MENU_INPUTS "\314Inputs"
#define TR_MENU_LUA "\322Lua Scripte"
diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt
index 65e438fef..890df101c 100644
--- a/radio/src/translations/en.h.txt
+++ b/radio/src/translations/en.h.txt
@@ -1078,7 +1078,8 @@
#define TR_ONLYPOSITIVE "Positive"
#define TR_FILTER "Filter"
#define TR_TELEMETRYFULL "All telemetry slots full!"
-#define TR_IGNOREIDS TR(INDENT "No inst.","Ignore instance")
+#define TR_IGNORE_INSTANCE TR(INDENT "No inst.", INDENT "Ignore instance")
+#define TR_REJECT_NEWSENSORS INDENT "Locked"
#define TR_MENU_INPUTS "\314Inputs"
#define TR_MENU_LUA "\322Lua scripts"
diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt
index 0bd39c8a7..21b7a6f36 100644
--- a/radio/src/translations/es.h.txt
+++ b/radio/src/translations/es.h.txt
@@ -1033,7 +1033,8 @@
#define TR_ONLYPOSITIVE "Positive"
#define TR_FILTER "Filter"
#define TR_TELEMETRYFULL "All telemetry slots full!"
-#define TR_IGNOREIDS INDENT "Ignore instance"
+#define TR_IGNORE_INSTANCE INDENT "Ignore instance"
+#define TR_REJECT_NEWSENSORS "Reject new sensors"
#define TR_MENU_INPUTS "\314Inputs"
#define TR_MENU_LUA "\322Lua scripts"
diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt
index 8b30e122a..ebee768cd 100644
--- a/radio/src/translations/fi.h.txt
+++ b/radio/src/translations/fi.h.txt
@@ -1033,7 +1033,8 @@
#define TR_ONLYPOSITIVE "Positive"
#define TR_FILTER "Filter"
#define TR_TELEMETRYFULL "All telemetry slots full!"
-#define TR_IGNOREIDS INDENT "Ignore instance"
+#define TR_IGNORE_INSTANCE INDENT "Ignore instance"
+#define TR_REJECT_NEWSENSORS "Reject new sensors"
#define TR_MENU_INPUTS "\314Inputs"
#define TR_MENU_LUA "\322Lua scripts"
diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt
index 60d906ab9..125555dac 100644
--- a/radio/src/translations/fr.h.txt
+++ b/radio/src/translations/fr.h.txt
@@ -1070,7 +1070,8 @@
#define TR_ONLYPOSITIVE "Positive"
#define TR_FILTER "Filtrage"
#define TR_TELEMETRYFULL "Plus de capteurs libres!"
-#define TR_IGNOREIDS TR(INDENT "Ign. inst.",INDENT "Ignorer instance")
+#define TR_IGNORE_INSTANCE TR(INDENT "Ign. inst.",INDENT "Ignorer instance")
+#define TR_REJECT_NEWSENSORS "Reject new sensors"
#define TR_MENU_INPUTS "\314Entrées"
#define TR_MENU_LUA "\322Scripts Lua"
diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt
index 13acf7941..f82c7e6f2 100644
--- a/radio/src/translations/it.h.txt
+++ b/radio/src/translations/it.h.txt
@@ -1081,7 +1081,8 @@
#define TR_ONLYPOSITIVE "Positivo"
#define TR_FILTER "Filtro"
#define TR_TELEMETRYFULL "Tutti gli slot sono pieni!"
-#define TR_IGNOREIDS TR(INDENT "No inst.","Ignora instanza")
+#define TR_IGNORE_INSTANCE TR(INDENT "No inst.","Ignora instanza")
+#define TR_REJECT_NEWSENSORS "Reject new sensors"
#define TR_MENU_INPUTS "\314Ingressi"
#define TR_MENU_LUA "\322Lua scripts"
diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt
index 67b0801b7..039b3c2be 100755
--- a/radio/src/translations/nl.h.txt
+++ b/radio/src/translations/nl.h.txt
@@ -1088,7 +1088,8 @@
#define TR_ONLYPOSITIVE "Geen Negatief"
#define TR_FILTER "Filter aktief"
#define TR_TELEMETRYFULL "Telemetrie slots vol!"
-#define TR_IGNOREIDS TR(INDENT "Neg. ID ","Negeer ID's")
+#define TR_IGNORE_INSTANCE TR(INDENT "Neg. ID ","Negeer ID's")
+#define TR_REJECT_NEWSENSORS "Reject new sensors"
#define TR_MENU_INPUTS "\314Inputs"
diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt
index 6f3ab30e0..d5882537e 100644
--- a/radio/src/translations/pl.h.txt
+++ b/radio/src/translations/pl.h.txt
@@ -1082,7 +1082,8 @@
#define TR_ONLYPOSITIVE "Dodatni"
#define TR_FILTER "Filtr"
#define TR_TELEMETRYFULL "Wszyskie miejsca zajęte!"
-#define TR_IGNOREIDS INDENT "Ignoruj przypadek"
+#define TR_IGNORE_INSTANCE INDENT "Ignoruj przypadek"
+#define TR_REJECT_NEWSENSORS "Reject new sensors"
#define TR_MENU_INPUTS "\314Wejści"
#define TR_MENU_LUA "\322SkryptyLUA"
diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt
index 773eb1dae..e44b5ce07 100644
--- a/radio/src/translations/pt.h.txt
+++ b/radio/src/translations/pt.h.txt
@@ -1033,7 +1033,8 @@
#define TR_ONLYPOSITIVE "Positive"
#define TR_FILTER "Filter"
#define TR_TELEMETRYFULL "All telemetry slots full!"
-#define TR_IGNOREIDS INDENT "Ignore instance"
+#define TR_IGNORE_INSTANCE INDENT "Ignore instance"
+#define TR_REJECT_NEWSENSORS "Reject new sensors"
#define TR_MENU_INPUTS "\314Inputs"
#define TR_MENU_LUA "\322Lua scripts"
diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt
index 40cd02f78..f57362b7b 100644
--- a/radio/src/translations/se.h.txt
+++ b/radio/src/translations/se.h.txt
@@ -1033,7 +1033,8 @@
#define TR_ONLYPOSITIVE "Positive"
#define TR_FILTER "Filter"
#define TR_TELEMETRYFULL "All telemetry slots full!"
-#define TR_IGNOREIDS INDENT "Ignore instance"
+#define TR_IGNORE_INSTANCE INDENT "Ignore instance"
+#define TR_REJECT_NEWSENSORS "Reject new sensors"
#define TR_MENU_INPUTS "\314Inputs"
#define TR_MENU_LUA "\322Lua scripts"