From 9bc161e4b162c0d21d262f4f86d285afbc3807dc Mon Sep 17 00:00:00 2001 From: bsongis Date: Sun, 29 Apr 2012 13:23:17 +0000 Subject: [PATCH] WSHH bug (conversion from meters to feet when source was feet!) --- src/frsky.cpp | 23 +++++++++++++++++++++-- src/myeeprom.h | 4 ++-- src/open9x.cpp | 3 +++ 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/frsky.cpp b/src/frsky.cpp index 2dd178153..76b70a9c3 100644 --- a/src/frsky.cpp +++ b/src/frsky.cpp @@ -336,10 +336,20 @@ void parseTelemHubByte(uint8_t byte) #ifdef WS_HOW_HIGH void parseTelemWSHowHighByte(uint8_t byte) { - if (frskyUsrStreaming < (FRSKY_TIMEOUT10ms*3 - 10)) // At least 100mS passed since last data received + if (frskyUsrStreaming < (FRSKY_TIMEOUT10ms*3 - 10)) { ((uint8_t*)&frskyHubData)[offsetof(FrskyHubData, baroAltitude_bp)] = byte; - else +#if 0 + if (g_model.varioSource == VARIO_SOURCE_BARO) { + // the vario will be in feet / second + evalVario(frskyHubData.baroAltitude_bp, 0); + } +#endif + } + else { + // At least 100mS passed since last data received ((uint8_t*)&frskyHubData)[offsetof(FrskyHubData, baroAltitude_bp)+1] = byte; + } + // baroAltitude_bp unit here is feet! frskyUsrStreaming = FRSKY_TIMEOUT10ms*3; // reset counter } #endif @@ -918,6 +928,15 @@ void putsTelemetryChannel(uint8_t x, uint8_t y, uint8_t channel, int16_t val, ui putsTelemetryValue(x, y, val, UNIT_RAW, att); break; +#if defined(IMPERIAL_UNITS) + case TELEM_ALT: + if (g_model.frsky.usrProto == WSHH) { + putsTelemetryValue(x, y, val, UNIT_FEET, att); + break; + } + // no break +#endif + default: putsTelemetryValue(x, y, val, pgm_read_byte(bchunit_ar+channel-6), att); break; diff --git a/src/myeeprom.h b/src/myeeprom.h index f4fbd39ed..5cab40ba2 100644 --- a/src/myeeprom.h +++ b/src/myeeprom.h @@ -316,11 +316,11 @@ enum TelemetryUnit { UNIT_KMH, UNIT_KTS = UNIT_KMH, UNIT_METERS, - UNIT_FEET = UNIT_METERS, UNIT_DEGREES, UNIT_PERCENT, UNIT_MILLIAMPS, - UNIT_MAX + UNIT_MAX, + UNIT_FEET }; PACK(typedef struct t_FrSkyChannelData { diff --git a/src/open9x.cpp b/src/open9x.cpp index 94eec7046..2dc302f8d 100644 --- a/src/open9x.cpp +++ b/src/open9x.cpp @@ -687,6 +687,9 @@ void putsTelemetryValue(uint8_t x, uint8_t y, int16_t val, uint8_t unit, uint8_t // m to ft *105/32 val = val * 3 + ( val >> 2 ) + (val >> 5) ; } + if (unit == UNIT_FEET) { + unit = UNIT_METERS; + } #else if (unit == UNIT_KTS) { // kts to km/h