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
@@ -185,7 +185,7 @@ class _DroneStatusMessagesPanelState extends ConsumerState<DroneStatusMessagesPa
: '—',
),
_statusRow('Heading', frame != null ? '${frame.headingDeg.round()}°' : '—'),
_statusRow('Altitude', frame != null ? '${frame.altitudeM.toStringAsFixed(0)} m' : '—'),
_statusRow('Altitude', _formatAltitude(frame)),
_statusRow('Speed', frame != null ? '${frame.speedMs.toStringAsFixed(1)} m/s' : '—'),
// Ans Ende der Liste (Doku: "ans ende der liste noch die
// steig/sinkrate hinzufuegen") - bildet mit "Speed" das letzte
@@ -347,6 +347,18 @@ class _DroneStatusMessagesPanelState extends ConsumerState<DroneStatusMessagesPa
);
}
// Rohe GPS-Hoehe im selben Feld wie die barometrisch/GPS-fusionierte
// Schaetzung (Doku: "GPS Höhe auch anzeigen im gleichen Feld wie die
// normale Höhe") statt einer eigenen Kachel - nur bei hasFix angehaengt,
// da die GPS-Hoehe ohne Fix bedeutungslos/veraltet ist (analog zu GPS
// coordinates/HDOP oben).
String _formatAltitude(TelemetryFrame? frame) {
if (frame == null) return '—';
final estimated = '${frame.altitudeM.toStringAsFixed(0)} m';
if (!frame.hasFix) return estimated;
return '$estimated (GPS ${frame.gpsAltitudeM.toStringAsFixed(0)} m)';
}
String _formatTemperatures(TelemetryFrame? frame) {
if (frame == null) return '—';
return frame.temperaturesC.map((t) => t == null ? '—' : '${t.round()}°').join(' / ');