diff --git a/src/frsky.cpp b/src/frsky.cpp index 72fbc51ef..ce85a7796 100644 --- a/src/frsky.cpp +++ b/src/frsky.cpp @@ -167,9 +167,9 @@ int16_t applyChannelRatio(uint8_t channel, int16_t val) return ((int32_t)val+g_model.frsky.channels[channel].offset) * (g_model.frsky.channels[channel].ratio << g_model.frsky.channels[channel].multiplier) * 2 / 51; } -inline void evalVario(int16_t altitude_bp, uint8_t altitude_ap) +inline void evalVario(int16_t altitude_bp, uint16_t altitude_ap) { - int16_t varioAltitude_cm = altitude_bp * 100 + (altitude_bp > 0 ? altitude_ap : -altitude_ap); + int32_t varioAltitude_cm = (int32_t)altitude_bp * 100 + (altitude_bp > 0 ? altitude_ap : -altitude_ap); uint8_t varioAltitudeQueuePointer = frskyHubData.varioAltitudeQueuePointer + 1; if (varioAltitudeQueuePointer == VARIO_QUEUE_LENGTH) @@ -276,7 +276,7 @@ void parseTelemHubByte(uint8_t byte) case offsetof(FrskyHubData, baroAltitude_ap): if (g_model.varioSource == VARIO_SOURCE_BARO) { - evalVario(frskyHubData.baroAltitude_bp, frskyHubData.baroAltitude_ap); + evalVario(frskyHubData.baroAltitude_bp-frskyHubData.baroAltitudeOffset, frskyHubData.baroAltitude_ap); } break;