diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp
index f13881149..a81457e23 100644
--- a/companion/src/firmwares/opentx/opentxeeprom.cpp
+++ b/companion/src/firmwares/opentx/opentxeeprom.cpp
@@ -1935,16 +1935,25 @@ class SensorField: public TransformedField {
void afterImport() override
{
if (sensor.type == SensorData::TELEM_TYPE_CUSTOM) {
- sensor.id = _id;
- sensor.subid = _subid;
- if (model.moduleData[0].isPxx1Module() || model.moduleData[1].isPxx1Module())
- sensor.instance = (_instance & 0x1F) + (version <= 218 ? -1 : 0); // 5 bits instance
- else
- sensor.instance = _instance & 0x1F;
- sensor.rxIdx = (_instance >> 5) & 0x03; // 2 bits Rx idx
- sensor.moduleIdx = (_instance >> 7) & 0x1; // 1 bit module idx
- sensor.ratio = _ratio;
- sensor.offset = _offset;
+ if (strlen(sensor.label) == 0) {
+ sensor.clear();
+ }
+ else {
+ sensor.id = _id;
+ sensor.subid = _subid;
+ if (model.moduleData[0].isPxx1Module() || model.moduleData[1].isPxx1Module()) {
+ sensor.instance = (_instance & 0x1F) + (version <= 218 ? -1 : 0); // 5 bits instance
+ sensor.rxIdx = 0x03; // 2 bits Rx idx
+ sensor.moduleIdx = 0x01; // 1 bit module idx
+ }
+ else {
+ sensor.instance = _instance & 0x1F;
+ sensor.rxIdx = (_instance >> 5) & 0x03; // 2 bits Rx idx
+ sensor.moduleIdx = (_instance >> 7) & 0x1; // 1 bit module idx
+ }
+ sensor.ratio = _ratio;
+ sensor.offset = _offset;
+ }
}
else {
sensor.persistentValue = _id;
diff --git a/companion/src/firmwares/sensordata.cpp b/companion/src/firmwares/sensordata.cpp
index a88f3239a..8d677ed50 100644
--- a/companion/src/firmwares/sensordata.cpp
+++ b/companion/src/firmwares/sensordata.cpp
@@ -92,24 +92,16 @@ QString SensorData::nameToString(int index) const
return RadioData::getElementName(tr("TELE"), index + 1, label);
}
-QString SensorData::getRxOrModName(const ModelData* model) const
+QString SensorData::getOrigin(const ModelData * model) const
{
- if ((type != TELEM_TYPE_CUSTOM) || (!id && !instance))
+ if (type != TELEM_TYPE_CUSTOM || !id)
return QString();
- const ModuleData& module = model->moduleData[moduleIdx];
-
- if (module.isPxx2Module()) {
- if (module.access.receivers & (1 << rxIdx)) {
- return QString(module.access.receiverName[rxIdx]);
- }
-
- // receiver does not seem to be active
+ const ModuleData & module = model->moduleData[moduleIdx];
+ if (module.isPxx2Module() && rxIdx <= 2 && module.access.receivers & (1 << rxIdx)) {
+ return QString(module.access.receiverName[rxIdx]);
+ }
+ else {
return QString();
}
-
- if (moduleIdx)
- return tr("Internal");
-
- return tr("External");
}
diff --git a/companion/src/firmwares/sensordata.h b/companion/src/firmwares/sensordata.h
index 8e95aa7f6..a5cdb4957 100644
--- a/companion/src/firmwares/sensordata.h
+++ b/companion/src/firmwares/sensordata.h
@@ -148,7 +148,7 @@ class SensorData {
void updateUnit();
QString unitString() const;
QString nameToString(int index) const;
- QString getRxOrModName(const ModelData* model) const;
+ QString getOrigin(const ModelData* model) const;
void clear() { memset(this, 0, sizeof(SensorData)); }
};
diff --git a/companion/src/modeledit/telemetry.cpp b/companion/src/modeledit/telemetry.cpp
index 39a314fa7..68be10638 100644
--- a/companion/src/modeledit/telemetry.cpp
+++ b/companion/src/modeledit/telemetry.cpp
@@ -653,9 +653,8 @@ void TelemetrySensorPanel::update()
ui->id->hide();
ui->instanceLabel->hide();
ui->instance->hide();
- ui->rxLabel->hide();
- ui->moduleLabel->hide();
- ui->rxOrMod->hide();
+ ui->originLabel->hide();
+ ui->origin->hide();
ui->formula->show();
ui->formula->setCurrentIndex(sensor.formula);
isConfigurable = (sensor.formula < SensorData::TELEM_FORMULA_CELL);
@@ -679,13 +678,10 @@ void TelemetrySensorPanel::update()
ui->id->show();
ui->instanceLabel->show();
ui->instance->show();
-
- bool is_pxx2 = model->moduleData[sensor.moduleIdx].isPxx2Module();
- ui->rxLabel->setVisible(is_pxx2);
- ui->moduleLabel->setVisible(!is_pxx2);
-
- ui->rxOrMod->setText(sensor.getRxOrModName(model));
- ui->rxOrMod->show();
+ QString origin = sensor.getOrigin(model);
+ ui->originLabel->setVisible(!origin.isEmpty());
+ ui->origin->setVisible(!origin.isEmpty());
+ ui->origin->setText(origin);
ui->formula->hide();
isConfigurable = sensor.unit < SensorData::UNIT_FIRST_VIRTUAL;
@@ -755,7 +751,7 @@ void populateTelemetrySourcesComboBox(AutoComboBox * cb, const ModelData * model
const SensorData& sensor = model->sensorData[-i-1];
if (sensor.isAvailable()) {
if (sensor.type == SensorData::TELEM_TYPE_CUSTOM)
- cb->addItem(QString("-%1 (%2)").arg(sensor.label, sensor.getRxOrModName(model)), i);
+ cb->addItem(QString("-%1 (%2)").arg(sensor.label, sensor.getOrigin(model)), i);
else
cb->addItem(QString("-%1").arg(sensor.label), i);
}
@@ -766,7 +762,7 @@ void populateTelemetrySourcesComboBox(AutoComboBox * cb, const ModelData * model
const SensorData& sensor = model->sensorData[i-1];
if (sensor.isAvailable()) {
if (sensor.type == SensorData::TELEM_TYPE_CUSTOM)
- cb->addItem(QString("%1 (%2)").arg(sensor.label, sensor.getRxOrModName(model)), i);
+ cb->addItem(QString("%1 (%2)").arg(sensor.label, sensor.getOrigin(model)), i);
else
cb->addItem(QString("%1").arg(sensor.label), i);
}
diff --git a/companion/src/modeledit/telemetry_sensor.ui b/companion/src/modeledit/telemetry_sensor.ui
index f6007f6d6..7d08243e0 100644
--- a/companion/src/modeledit/telemetry_sensor.ui
+++ b/companion/src/modeledit/telemetry_sensor.ui
@@ -13,7 +13,7 @@
Form
-
+
0
@@ -121,21 +121,14 @@
-
-
+
Rx
-
-
-
- Mod.
-
-
-
- -
-
+
0
diff --git a/radio/src/storage/conversions/conversions_218_219.cpp b/radio/src/storage/conversions/conversions_218_219.cpp
index 0f2c6de9c..f6076917d 100644
--- a/radio/src/storage/conversions/conversions_218_219.cpp
+++ b/radio/src/storage/conversions/conversions_218_219.cpp
@@ -290,7 +290,7 @@ void convertModelData_218_to_219(ModelData &model)
for (uint8_t i=0; i 0 && (isModuleTypePXX1(oldModel.moduleData[0].type) || isModuleTypePXX1(oldModel.moduleData[1].type)))
newModel.telemetrySensors[i].instance = 0xE0 + (oldModel.telemetrySensors[i].instance & 0x1F) - 1;
else
newModel.telemetrySensors[i].instance = oldModel.telemetrySensors[i].instance;