Drone Status Menue: rohe GPS-Hoehe im Altitude-Feld ergaenzt

MSP_RAW_GPS liefert bereits eine eigene Hoehe (gpsSol.llh.alt, Offset 10,
u16 Meter) - bislang ungenutzt/uebersprungen. Jetzt als eigenes Feld
(MspGpsReading.altitudeM -> TelemetryFrame.gpsAltitudeM) geparst und im
selben "Altitude"-Feld wie die bisherige barometrisch/GPS-fusionierte
Schaetzung angezeigt ("120 m (GPS 119 m)"), statt einer eigenen Kachel -
nur bei vorhandenem Fix angehaengt, analog zur bestehenden hasFix-Handhabung
bei GPS coordinates/HDOP.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Constantin Leue
2026-08-06 16:06:48 +02:00
co-authored by Claude Sonnet 5
parent 9cece7dbb6
commit 13e2827344
8 changed files with 38 additions and 3 deletions
@@ -9,6 +9,7 @@ class MspGpsReading {
required this.numSat,
required this.lat,
required this.lon,
required this.altitudeM,
required this.speedMs,
required this.headingDeg,
required this.hdop,
@@ -19,6 +20,11 @@ class MspGpsReading {
final int numSat;
final double lat;
final double lon;
/// Rohe GPS-Hoehe (`gpsSol.llh.alt`, bereits in ganzen Metern) - anders
/// als die barometrisch/GPS-fusionierte Schaetzung aus `MSP_ALTITUDE`
/// (siehe [parseMspAltitudeMeters]), typischerweise etwas verrauschter.
final double altitudeM;
final double speedMs;
/// Kurs ueber Grund in Grad (0 = Norden, im Uhrzeigersinn), aus
@@ -43,6 +49,7 @@ MspGpsReading parseMspRawGps(Uint8List payload) {
numSat: data.getUint8(1),
lat: data.getInt32(2, Endian.little) / 1e7,
lon: data.getInt32(6, Endian.little) / 1e7,
altitudeM: data.getUint16(10, Endian.little).toDouble(),
speedMs: data.getUint16(12, Endian.little) / 100.0,
headingDeg: data.getUint16(14, Endian.little) / 10.0,
hdop: data.getUint16(16, Endian.little) / 100.0,