diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h
index 9b6d6c898..ca4ad74d8 100644
--- a/companion/src/eeprominterface.h
+++ b/companion/src/eeprominterface.h
@@ -775,6 +775,7 @@ class FrSkyData {
bool mAhPersistent;
unsigned int storedMah;
int fasOffset;
+ bool ignoreSensorIds;
void clear();
};
diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp
index 2656329ec..b129174c7 100644
--- a/companion/src/firmwares/opentx/opentxeeprom.cpp
+++ b/companion/src/firmwares/opentx/opentxeeprom.cpp
@@ -2949,7 +2949,7 @@ OpenTxModelData::OpenTxModelData(ModelData & modelData, BoardEnum board, unsigne
if (IS_ARM(board) && version >= 217) {
internalField.Append(new BoolField<1>(modelData.noGlobalFunctions));
internalField.Append(new UnsignedField<2>(modelData.trimsDisplay));
- internalField.Append(new SpareBitsField<1>());
+ internalField.Append(new BoolField<1>(modelData.frsky.ignoreSensorIds));
}
else if (IS_TARANIS(board) || (IS_ARM(board) && version >= 216)) {
internalField.Append(new SpareBitsField<4>());
diff --git a/companion/src/modeledit/telemetry.cpp b/companion/src/modeledit/telemetry.cpp
index 407cb9796..8c3c2770b 100644
--- a/companion/src/modeledit/telemetry.cpp
+++ b/companion/src/modeledit/telemetry.cpp
@@ -795,10 +795,12 @@ void TelemetryPanel::setup()
ui->telemetryProtocol->addItem(tr("FrSky D (cable)"), 2);
}
ui->telemetryProtocol->setCurrentIndex(model->telemetryProtocol);
+ ui->ignoreSensorIds->setField(model->frsky.ignoreSensorIds);
}
else {
ui->telemetryProtocolLabel->hide();
ui->telemetryProtocol->hide();
+ ui->ignoreSensorIds->hide();
}
ui->rssiAlarm1SB->setValue(model->frsky.rssiAlarms[0].value);
diff --git a/companion/src/modeledit/telemetry.ui b/companion/src/modeledit/telemetry.ui
index 4305d6892..0709dc70d 100644
--- a/companion/src/modeledit/telemetry.ui
+++ b/companion/src/modeledit/telemetry.ui
@@ -896,7 +896,7 @@
4
- -
+
-
@@ -909,6 +909,13 @@
+ -
+
+
+ Disable multi sensor handling
+
+
+
diff --git a/companion/src/shared/autocheckbox.h b/companion/src/shared/autocheckbox.h
index 1c0a98b4c..5b38d20ac 100644
--- a/companion/src/shared/autocheckbox.h
+++ b/companion/src/shared/autocheckbox.h
@@ -29,7 +29,7 @@ class AutoCheckBox: public QCheckBox
{
lock = true;
if (field) {
- setChecked((int)*field);
+ setChecked(*field);
}
lock = false;
}
diff --git a/radio/src/gui/Taranis/menu_model_telemetry.cpp b/radio/src/gui/Taranis/menu_model_telemetry.cpp
index cb5808dae..05135c3a0 100644
--- a/radio/src/gui/Taranis/menu_model_telemetry.cpp
+++ b/radio/src/gui/Taranis/menu_model_telemetry.cpp
@@ -74,6 +74,7 @@ enum menuModelTelemetryItems {
ITEM_TELEMETRY_SENSOR31,
ITEM_TELEMETRY_SENSOR32,
ITEM_TELEMETRY_NEWSENSOR,
+ ITEM_TELEMETRY_IGNORE_SENSORID,
#if defined(VARIO)
ITEM_TELEMETRY_VARIO_LABEL,
ITEM_TELEMETRY_VARIO_SOURCE,
@@ -120,7 +121,7 @@ enum menuModelTelemetryItems {
#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,
+#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,
#if defined(VARIO)
#define VARIO_ROWS LABEL(Vario), 0, 1, 2,
#else
@@ -535,7 +536,7 @@ void menuModelTelemetry(uint8_t event)
lcd_putsAtt(TELEM_COL2, y, "---", 0); // TODO shortcut
}
TelemetrySensor * sensor = & g_model.telemetrySensors[index];
- if (sensor->type == TELEM_TYPE_CUSTOM) {
+ if (sensor->type == TELEM_TYPE_CUSTOM && !g_model.ignoreSensorIds) {
lcd_outdezAtt(TELEM_COL3, y, sensor->instance, LEFT);
}
if (attr) {
@@ -561,8 +562,10 @@ void menuModelTelemetry(uint8_t event)
case ITEM_TELEMETRY_SENSORS_LABEL:
lcd_putsLeft(y, STR_TELEMETRY_SENSORS);
- lcd_putsAtt(TELEM_COL2, y, STR_VALUE, 0);
- lcd_putsAtt(TELEM_COL3, y, STR_ID, 0);
+ if (!g_model.ignoreSensorIds) {
+ lcd_putsAtt(TELEM_COL2, y, STR_VALUE, 0);
+ lcd_putsAtt(TELEM_COL3, y, STR_ID, 0);
+ }
break;
case ITEM_TELEMETRY_NEWSENSOR:
@@ -580,6 +583,10 @@ void menuModelTelemetry(uint8_t event)
}
break;
+ case ITEM_TELEMETRY_IGNORE_SENSORID:
+ ON_OFF_MENU_ITEM(g_model.ignoreSensorIds, TELEM_COL2, y, INDENT "Ignore IDs", attr, event);
+ break;
+
case ITEM_TELEMETRY_RSSI_LABEL:
lcd_putsLeft(y, PSTR("RSSI"));
break;
diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h
index 267d9f96b..a1d5b5171 100644
--- a/radio/src/myeeprom.h
+++ b/radio/src/myeeprom.h
@@ -1272,7 +1272,7 @@ enum TelemetrySensorFormula
PACK(typedef struct {
union {
- uint16_t id; // data identifier, for FrSky we can reuse existing ones. Source unit is derived from type.
+ uint16_t id; // data identifier, for FrSky we can reuse existing ones. Source unit is derived from type.
uint16_t persistentValue;
};
union {
@@ -2130,7 +2130,7 @@ PACK(typedef struct {
AVR_FIELD(int8_t ppmNCH:4)
ARM_FIELD(uint8_t noGlobalFunctions:1)
ARM_FIELD(uint8_t displayTrims:2)
- ARM_FIELD(uint8_t spare2:1)
+ ARM_FIELD(uint8_t ignoreSensorIds:1)
int8_t trimInc:3; // Trim Increments
uint8_t disableThrottleWarning:1;
ARM_FIELD(uint8_t displayChecklist:1)
diff --git a/radio/src/telemetry/telemetry.cpp b/radio/src/telemetry/telemetry.cpp
index 13d02b38d..0097ec5d5 100644
--- a/radio/src/telemetry/telemetry.cpp
+++ b/radio/src/telemetry/telemetry.cpp
@@ -179,7 +179,9 @@ void TelemetryItem::setValue(const TelemetrySensor & sensor, int32_t val, uint32
newVal = 0;
}
else if (unit == UNIT_RPMS) {
- newVal = (newVal * sensor.custom.offset) / sensor.custom.ratio;
+ if (sensor.custom.ratio != 0) {
+ newVal = (newVal * sensor.custom.offset) / sensor.custom.ratio;
+ }
}
else {
newVal = sensor.getValue(newVal, unit, prec);
@@ -486,7 +488,7 @@ void setTelemetryValue(TelemetryProtocol protocol, uint16_t id, uint8_t instance
for (int index=0; index