WSHH bug (conversion from meters to feet when source was feet!)

This commit is contained in:
bsongis
2012-04-29 13:23:17 +00:00
parent 94d344765d
commit 9bc161e4b1
3 changed files with 26 additions and 4 deletions
+21 -2
View File
@@ -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;
+2 -2
View File
@@ -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 {
+3
View File
@@ -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