From d8736bfe94eccaa343bbd5c9d4f263bb50d6b27f Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sat, 30 Apr 2016 19:33:00 +0200 Subject: [PATCH] [FrSky] Support of old FAS prototypes (different resistors) --- radio/src/CMakeLists.txt | 5 +++++ radio/src/telemetry/frsky_d.cpp | 6 +++--- radio/src/telemetry/frsky_d_arm.cpp | 4 ++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/radio/src/CMakeLists.txt b/radio/src/CMakeLists.txt index 8302e22fe..9493239a8 100644 --- a/radio/src/CMakeLists.txt +++ b/radio/src/CMakeLists.txt @@ -22,6 +22,7 @@ option(JITTER_FILTER "Enable ADC jitter filtering" ON) option(WATCHDOG_DISABLED "Disable hardware Watchdog on Horus" OFF) # TODO remove it when it's OK option(SIMU_AUDIO "Enable simulator audio" OFF) option(SIMU_DISKIO "Enable disk IO simulation in simulator. Simulator will use FatFs module and simulated IO layer that uses \"./sdcard.image\" file as image of SD card. This file must contain whole SD card from first to last sector" OFF) +option(FAS_PROTOTYPE "Support of old FAS prototypes (different resistors)" OFF) enable_language(ASM) set(OPT s) @@ -850,6 +851,10 @@ elseif(FAI STREQUAL CHOICE) add_definitions(-DFAI_CHOICE) endif() +if(FAS_PROTOTYPE) + add_definitions(-DFAS_PROTOTYPE) +endif() + if(AUTOSOURCE) add_definitions(-DAUTOSOURCE) endif() diff --git a/radio/src/telemetry/frsky_d.cpp b/radio/src/telemetry/frsky_d.cpp index dd3e9db11..8cc71901e 100644 --- a/radio/src/telemetry/frsky_d.cpp +++ b/radio/src/telemetry/frsky_d.cpp @@ -18,7 +18,7 @@ * GNU General Public License for more details. */ -#include "../opentx.h" +#include "opentx.h" #if (defined(FRSKY_HUB) || defined(WS_HOW_HIGH)) void checkMinMaxAltitude() @@ -130,10 +130,10 @@ void parseTelemHubByte(uint8_t byte) break; case offsetof(FrskyTelemetryData, volts_ap): -#if defined(FAS_BSS) +#if defined(FAS_PROTOTYPE) telemetryData.hub.vfas = (telemetryData.hub.volts_bp * 10 + telemetryData.hub.volts_ap); #else - telemetryData.hub.vfas = ((telemetryData.hub.volts_bp * 100 + telemetryData.hub.volts_ap * 10) * 21) / 110; + telemetryData.hub.vfas = ((telemetryData.hub.volts_bp * 10 + telemetryData.hub.volts_ap) * 21) / 11; #endif /* TODO later if (!telemetryData.hub.minVfas || telemetryData.hub.minVfas > telemetryData.hub.vfas) telemetryData.hub.minVfas = telemetryData.hub.vfas; */ diff --git a/radio/src/telemetry/frsky_d_arm.cpp b/radio/src/telemetry/frsky_d_arm.cpp index b982abeb4..6b4b450f4 100644 --- a/radio/src/telemetry/frsky_d_arm.cpp +++ b/radio/src/telemetry/frsky_d_arm.cpp @@ -207,7 +207,11 @@ void processHubPacket(uint8_t id, int16_t value) } else if (id == VOLTS_AP_ID) { if (lastId == VOLTS_BP_ID) { +#if defined(FAS_PROTOTYPE) + data = lastBPValue * 100 + value * 10; +#else data = ((lastBPValue * 100 + value * 10) * 210) / 110; +#endif unit = UNIT_VOLTS; precision = 2; }