Cleaned up the output of the altitude estimation.
This commit is contained in:
parent
6bada9c5e9
commit
88e8842a17
|
@ -1189,11 +1189,7 @@ static bool mspProcessOutCommand(int16_t cmdMSP, sbuf_t *dst)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MSP_ALTITUDE:
|
case MSP_ALTITUDE:
|
||||||
#if defined(USE_BARO) || defined(USE_RANGEFINDER)
|
|
||||||
sbufWriteU32(dst, getEstimatedAltitudeCm());
|
sbufWriteU32(dst, getEstimatedAltitudeCm());
|
||||||
#else
|
|
||||||
sbufWriteU32(dst, 0);
|
|
||||||
#endif
|
|
||||||
#ifdef USE_VARIO
|
#ifdef USE_VARIO
|
||||||
sbufWriteU16(dst, getEstimatedVario());
|
sbufWriteU16(dst, getEstimatedVario());
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -237,10 +237,7 @@ void hottPrepareGPSResponse(HOTT_GPS_MSG_t *hottGPSMessage)
|
||||||
hottGPSMessage->home_distance_L = GPS_distanceToHome & 0x00FF;
|
hottGPSMessage->home_distance_L = GPS_distanceToHome & 0x00FF;
|
||||||
hottGPSMessage->home_distance_H = GPS_distanceToHome >> 8;
|
hottGPSMessage->home_distance_H = GPS_distanceToHome >> 8;
|
||||||
|
|
||||||
int32_t altitudeM = gpsSol.llh.altCm / 100;
|
int32_t altitudeM = getEstimatedAltitudeCm() / 100;
|
||||||
if (!STATE(GPS_FIX)) {
|
|
||||||
altitudeM = getEstimatedAltitudeCm() / 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
const uint16_t hottGpsAltitude = constrain(altitudeM + HOTT_GPS_ALTITUDE_OFFSET, 0 , UINT16_MAX); // gpsSol.llh.alt in m ; offset = 500 -> O m
|
const uint16_t hottGpsAltitude = constrain(altitudeM + HOTT_GPS_ALTITUDE_OFFSET, 0 , UINT16_MAX); // gpsSol.llh.alt in m ; offset = 500 -> O m
|
||||||
|
|
||||||
|
|
|
@ -146,12 +146,7 @@ static void ltm_gframe(void)
|
||||||
ltm_serialise_32(gpsSol.llh.lat);
|
ltm_serialise_32(gpsSol.llh.lat);
|
||||||
ltm_serialise_32(gpsSol.llh.lon);
|
ltm_serialise_32(gpsSol.llh.lon);
|
||||||
ltm_serialise_8((uint8_t)(gpsSol.groundSpeed / 100));
|
ltm_serialise_8((uint8_t)(gpsSol.groundSpeed / 100));
|
||||||
|
ltm_alt = getEstimatedAltitudeCm();
|
||||||
#if defined(USE_BARO) || defined(USE_RANGEFINDER)
|
|
||||||
ltm_alt = (sensors(SENSOR_RANGEFINDER) || sensors(SENSOR_BARO)) ? getEstimatedAltitudeCm() : gpsSol.llh.altCm;
|
|
||||||
#else
|
|
||||||
ltm_alt = gpsSol.llh.altCm;
|
|
||||||
#endif
|
|
||||||
ltm_serialise_32(ltm_alt);
|
ltm_serialise_32(ltm_alt);
|
||||||
ltm_serialise_8((gpsSol.numSat << 2) | gps_fix_type);
|
ltm_serialise_8((gpsSol.numSat << 2) | gps_fix_type);
|
||||||
ltm_finalise();
|
ltm_finalise();
|
||||||
|
|
|
@ -353,11 +353,7 @@ void mavlinkSendPosition(void)
|
||||||
// alt Altitude in 1E3 meters (millimeters) above MSL
|
// alt Altitude in 1E3 meters (millimeters) above MSL
|
||||||
gpsSol.llh.altCm * 10,
|
gpsSol.llh.altCm * 10,
|
||||||
// relative_alt Altitude above ground in meters, expressed as * 1000 (millimeters)
|
// relative_alt Altitude above ground in meters, expressed as * 1000 (millimeters)
|
||||||
#if defined(USE_BARO) || defined(USE_RANGEFINDER)
|
getEstimatedAltitudeCm() * 10,
|
||||||
(sensors(SENSOR_RANGEFINDER) || sensors(SENSOR_BARO)) ? getEstimatedAltitudeCm() * 10 : gpsSol.llh.altCm * 10,
|
|
||||||
#else
|
|
||||||
gpsSol.llh.altCm * 10,
|
|
||||||
#endif
|
|
||||||
// Ground X Speed (Latitude), expressed as m/s * 100
|
// Ground X Speed (Latitude), expressed as m/s * 100
|
||||||
0,
|
0,
|
||||||
// Ground Y Speed (Longitude), expressed as m/s * 100
|
// Ground Y Speed (Longitude), expressed as m/s * 100
|
||||||
|
@ -419,24 +415,7 @@ void mavlinkSendHUDAndHeartbeat(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// select best source for altitude
|
mavAltitude = getEstimatedAltitudeCm() / 100.0;
|
||||||
#if defined(USE_BARO) || defined(USE_RANGEFINDER)
|
|
||||||
if (sensors(SENSOR_RANGEFINDER) || sensors(SENSOR_BARO)) {
|
|
||||||
// Baro or sonar generally is a better estimate of altitude than GPS MSL altitude
|
|
||||||
mavAltitude = getEstimatedAltitudeCm() / 100.0;
|
|
||||||
}
|
|
||||||
#if defined(USE_GPS)
|
|
||||||
else if (sensors(SENSOR_GPS)) {
|
|
||||||
// No sonar or baro, just display altitude above MLS
|
|
||||||
mavAltitude = gpsSol.llh.altCm / 100.0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#elif defined(USE_GPS)
|
|
||||||
if (sensors(SENSOR_GPS)) {
|
|
||||||
// No sonar or baro, just display altitude above MLS
|
|
||||||
mavAltitude = gpsSol.llh.altCm / 100.0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
mavlink_msg_vfr_hud_pack(0, 200, &mavMsg,
|
mavlink_msg_vfr_hud_pack(0, 200, &mavMsg,
|
||||||
// airspeed Current airspeed in m/s
|
// airspeed Current airspeed in m/s
|
||||||
|
|
Loading…
Reference in New Issue