From 385536ab737d6d551acb109fbd84948fa2a4fe0f Mon Sep 17 00:00:00 2001 From: bsongis Date: Mon, 13 Jul 2015 08:35:10 +0200 Subject: [PATCH] Fixes #2460 --- companion/src/eeprominterface.h | 3 ++- companion/src/firmwares/opentx/opentxeeprom.cpp | 9 +++++---- companion/src/modeledit/telemetry.cpp | 1 + companion/src/modeledit/telemetry_sensor.ui | 14 ++++++++++++-- 4 files changed, 20 insertions(+), 7 deletions(-) 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 + + +