From 3a63c9edead81988c49b7b7905e2f472e14b2ec5 Mon Sep 17 00:00:00 2001 From: Arne Schwabe Date: Tue, 31 May 2016 19:04:49 +0200 Subject: [PATCH] Fixes #3510: Fix heli inversion not correctly shown/saved from Companion on Radios without virtual inputs (#3517) --- .../src/firmwares/opentx/opentxeeprom.cpp | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/companion/src/firmwares/opentx/opentxeeprom.cpp b/companion/src/firmwares/opentx/opentxeeprom.cpp index b52428830..9a399397f 100644 --- a/companion/src/firmwares/opentx/opentxeeprom.cpp +++ b/companion/src/firmwares/opentx/opentxeeprom.cpp @@ -742,6 +742,14 @@ class CurveReferenceField: public TransformedField { int _curve_value; }; +static int exportHeliInversionWeight(int source) { + return (source < 0) ? 1 : 0; +} + +static int importHeliInversionWeight(int source) { + return source ? -100: 100; +} + class HeliField: public StructField { public: HeliField(SwashRingData & heli, BoardEnum board, unsigned int version, unsigned int variant) @@ -757,22 +765,15 @@ class HeliField: public StructField { Append(new SignedField<8>(heli.elevatorWeight)); } else { - Append(new BoolField<1>(invertELE)); - Append(new BoolField<1>(invertAIL)); - Append(new BoolField<1>(invertCOL)); + Append(new ConversionField< SignedField<1> >(heli.elevatorWeight, exportHeliInversionWeight, importHeliInversionWeight)); + Append(new ConversionField< SignedField<1> >(heli.aileronWeight, exportHeliInversionWeight, importHeliInversionWeight)); + Append(new ConversionField< SignedField<1> >(heli.collectiveWeight, exportHeliInversionWeight, importHeliInversionWeight)); Append(new UnsignedField<5>(heli.type)); Append(new SourceField<8>(heli.collectiveSource, board, version, variant)); //, FLAG_NOSWITCHES)); Fix shift in collective Append(new UnsignedField<8>(heli.value)); } } - - // TODO before + after - - protected: - bool invertELE; - bool invertAIL; - bool invertCOL; }; class FlightModeField: public TransformedField {