1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-24 00:35:39 +03:00

attempt to fix no altitude in GPS only mode

This commit is contained in:
ctzsnooze 2022-09-15 10:35:18 +10:00
parent da02aff97e
commit a930481dc3

View file

@ -184,18 +184,14 @@ void calculateEstimatedAltitude()
} }
// eg if discrepancy is 3m and GPS trust was 0.9, it would now be 0.3 // eg if discrepancy is 3m and GPS trust was 0.9, it would now be 0.3
// *** If we have a GPS with 3D fix and a Baro signal, blend them if (haveGpsAlt && !(positionConfig()->altitude_source == BARO_ONLY)) {
if (haveGpsAlt && haveBaroAlt && positionConfig()->altitude_source == DEFAULT) { if (haveBaroAlt) { // have a baro signal, and are in GPS_ONLY or DEFAULT modes, so mix GPS and Baro
if (ARMING_FLAG(ARMED)) {
altitudeToFilterCm = altitudeToFilterCm * gpsTrustModifier + baroAltCm * (1 - gpsTrustModifier); altitudeToFilterCm = altitudeToFilterCm * gpsTrustModifier + baroAltCm * (1 - gpsTrustModifier);
// if we have no Baro signal, then altitudeToFilterCm and baroAltCm carry existing GPS altitude values through
} }
// *** if we only have a Baro, use it if in Default or Baro Only modes, but not if in GPS_only mode
} else if (haveBaroAlt && (positionConfig()->altitude_source == BARO_ONLY || positionConfig()->altitude_source == DEFAULT)) { } else if (haveBaroAlt && (positionConfig()->altitude_source == BARO_ONLY || positionConfig()->altitude_source == DEFAULT)) {
altitudeToFilterCm = baroAltCm; altitudeToFilterCm = baroAltCm; // ignore GPS altitude because we want Baro only
gpsAltCm = baroAltCm; // gpsAltCm will be shown in OSD or sensors while disarmed. If no GPS it will show baro. gpsAltCm = baroAltCm; // it's the gpsAltCm value that is shown in OSD before arming, so with no GPS we show Baro values
// we only have a Baro, but settings say don't use it, or, we have neither GPS nor Baro data; lock altitude solid at zero so the user knows
} else { } else {
altitudeToFilterCm = 0.0f; altitudeToFilterCm = 0.0f;
gpsAltCm = 0.0f; gpsAltCm = 0.0f;