diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h
index 907f75076..270c447a0 100644
--- a/companion/src/eeprominterface.h
+++ b/companion/src/eeprominterface.h
@@ -951,10 +951,11 @@ class SensorData {
bool filter;
bool logs;
bool persistent;
+ bool onlyPositive;
// for custom sensors
unsigned int ratio;
- unsigned int offset;
+ int offset;
// for consumption
unsigned int amps;
diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp
index a963f47f5..f12982230 100644
--- a/companion/src/firmwares/opentx/opentxeeprom.cpp
+++ b/companion/src/firmwares/opentx/opentxeeprom.cpp
@@ -2801,7 +2801,8 @@ class SensorField: public TransformedField {
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>());
+ internalField.Append(new BoolField<1>(sensor.onlyPositive));
+ internalField.Append(new SpareBitsField<3>());
internalField.Append(new UnsignedField<32>(_param, "param"));
}
@@ -2810,7 +2811,7 @@ class SensorField: public TransformedField {
if (sensor.type == SensorData::TELEM_TYPE_CUSTOM) {
_id = sensor.id;
_instance = sensor.instance;
- _param = (sensor.ratio) + (sensor.offset << 16);
+ _param = (sensor.ratio) + ((unsigned int)sensor.offset << 16);
}
else {
_id = sensor.persistentValue;
@@ -2831,8 +2832,8 @@ class SensorField: public TransformedField {
if (sensor.type == SensorData::TELEM_TYPE_CUSTOM) {
sensor.id = _id;
sensor.instance = _instance;
- sensor.ratio = _param & 0xFF;
- sensor.offset = (_param >> 16) & 0xFF;
+ sensor.ratio = _param & 0xFFFF;
+ sensor.offset = (_param >> 16) & 0xFFFF;
}
else {
sensor.persistentValue = _id;
diff --git a/companion/src/modeledit/telemetry.cpp b/companion/src/modeledit/telemetry.cpp
index aa4ffa3c3..4742a6ee7 100644
--- a/companion/src/modeledit/telemetry.cpp
+++ b/companion/src/modeledit/telemetry.cpp
@@ -481,6 +481,7 @@ TelemetrySensorPanel::TelemetrySensorPanel(QWidget *parent, SensorData & sensor,
ui->filter->setField(sensor.filter);
ui->logs->setField(sensor.logs);
ui->persistent->setField(sensor.persistent);
+ ui->onlyPositive->setField(sensor.onlyPositive);
ui->gpsSensor->setField(sensor.gps);
ui->altSensor->setField(sensor.alt);
ui->ampsSensor->setField(sensor.amps);
diff --git a/companion/src/modeledit/telemetry_sensor.ui b/companion/src/modeledit/telemetry_sensor.ui
index 46fcf2fba..4bbe159da 100644
--- a/companion/src/modeledit/telemetry_sensor.ui
+++ b/companion/src/modeledit/telemetry_sensor.ui
@@ -13,7 +13,7 @@
Form
-
+
0
@@ -541,7 +541,7 @@
0.000000000000000
- 3000.000000000000000
+ 65535.000000000000000
@@ -617,6 +617,16 @@
+ -
+
+
+ Qt::LeftToRight
+
+
+ Positive
+
+
+
-