drone status menue: fixed empty display bug without active telemetry stream

This commit is contained in:
Constantin Leue
2026-08-05 21:23:43 +02:00
parent c7e4e5bf63
commit 5fa55ac67d
2 changed files with 78 additions and 57 deletions
@@ -43,6 +43,15 @@ SignalLevel _levelLowerIsBetter(double value, double greenMax, double redMax) {
/// Reine Ableitung aus normalisierten Telemetriewerten + den
/// Ampel-Schwellwerten des aktiven Drohnenprofils - kein MSP-/
/// Protokollwissen, siehe computeDroneStatus-Doku.
///
/// [hasData] ist false, solange noch gar kein Telemetrie-Frame vorliegt
/// (Doku: "Felder auch anzeigen koennen, bevor Daten empfangen wurden") -
/// erzwingt dann fuer ALLE Felder rot, unabhaengig von den uebergebenen
/// Platzhalterwerten. Ohne das wuerde z.B. "Current draw" (ein Feld, bei dem
/// ein NIEDRIGER Wert gut ist) mit dem neutralen Platzhalter 0 faelschlich
/// gruen erscheinen ("sehr niedriger Verbrauch" statt "keine Daten") - anders
/// als bei den "hoeher ist besser"-Feldern, wo ein 0/negativer Platzhalter
/// zufaellig schon unter der Rot-Schwelle liegt.
TelemetryFieldStatus computeTelemetryFieldStatus({
required int numSat,
required bool hasFix,
@@ -52,7 +61,18 @@ TelemetryFieldStatus computeTelemetryFieldStatus({
required int linkQuality,
required int snrDb,
required DroneProfile profile,
bool hasData = true,
}) {
if (!hasData) {
return const TelemetryFieldStatus(
numSat: SignalLevel.red,
hdop: SignalLevel.red,
currentA: SignalLevel.red,
batteryVoltage: SignalLevel.red,
rxQuality: SignalLevel.red,
rxSnr: SignalLevel.red,
);
}
return TelemetryFieldStatus(
numSat: _levelHigherIsBetter(
numSat.toDouble(),