telemetry fix gate for telemetry stream removed
This commit is contained in:
@@ -17,10 +17,19 @@ class FcCapabilities {
|
||||
}
|
||||
|
||||
/// Normalisiertes Telemetrie-Frame, das an die UI weitergereicht wird (Doku 3.4).
|
||||
///
|
||||
/// Der Strom wird bewusst NICHT auf einen gueltigen GPS-Fix gegated (frueher
|
||||
/// wurde ohne Fix gar kein Frame gesendet) - jeder Konsument entscheidet
|
||||
/// selbst anhand von [hasFix], ob/wie er [lat]/[lon] verwendet. Der
|
||||
/// Kartenmarker (FlyScreen) faellt bei fehlendem Fix weiterhin auf den
|
||||
/// ersten Wegpunkt zurueck, das Settings-Diagnosepanel zeigt Hoehe/
|
||||
/// Geschwindigkeit/Armed-Status dagegen auch ohne Fix an.
|
||||
class TelemetryFrame {
|
||||
const TelemetryFrame({
|
||||
required this.lat,
|
||||
required this.lon,
|
||||
required this.hasFix,
|
||||
required this.numSat,
|
||||
required this.altitudeM,
|
||||
required this.speedMs,
|
||||
required this.headingDeg,
|
||||
@@ -28,8 +37,12 @@ class TelemetryFrame {
|
||||
this.activeWaypointIndex,
|
||||
});
|
||||
|
||||
/// Nur aussagekraeftig, wenn [hasFix] - ohne Fix meldet der FC oft (0,0)
|
||||
/// oder eine veraltete Position.
|
||||
final double lat;
|
||||
final double lon;
|
||||
final bool hasFix;
|
||||
final int numSat;
|
||||
final double altitudeM;
|
||||
final double speedMs;
|
||||
|
||||
|
||||
@@ -31,6 +31,8 @@ class MockFlightControllerLink implements FlightControllerLink {
|
||||
_telemetryController?.add(TelemetryFrame(
|
||||
lat: 52.5,
|
||||
lon: 13.4,
|
||||
hasFix: true,
|
||||
numSat: 12,
|
||||
altitudeM: 120,
|
||||
speedMs: 18,
|
||||
headingDeg: _heading,
|
||||
|
||||
@@ -21,6 +21,12 @@ import 'msp_telemetry_codec.dart';
|
||||
/// hat aktuell keine Felder dafuer; sobald die UI das braucht, ist ein
|
||||
/// dritter, noch selteners abgefragter Zweig (`MSP2_INAV_ANALOG`) trivial
|
||||
/// ergaenzt.
|
||||
///
|
||||
/// Der Strom wird NICHT auf einen gueltigen GPS-Fix gegated - jeder Zyklus
|
||||
/// emittiert ein [TelemetryFrame], auch ohne Fix (dann mit `hasFix: false`
|
||||
/// und der vom FC gemeldeten, ggf. bedeutungslosen Position). Konsumenten
|
||||
/// wie FlyScreen entscheiden selbst anhand von [TelemetryFrame.hasFix], ob
|
||||
/// sie die Position anzeigen.
|
||||
class MspTelemetryPoller {
|
||||
MspTelemetryPoller(this._client);
|
||||
|
||||
@@ -77,17 +83,12 @@ class MspTelemetryPoller {
|
||||
);
|
||||
}
|
||||
|
||||
// Sicherheitsrelevante Anzeigen nie mit Platzhaltern fuellen (Doku 9):
|
||||
// ohne GPS-Fix gibt es keine sinnvolle Position - dann lieber gar kein
|
||||
// Telemetrie-Frame senden, statt (0,0) oder einen eingefrorenen alten
|
||||
// Wert zu zeigen. Die bestehende Fly-Anzeige zeigt ohne Frame ohnehin
|
||||
// keinen Drohnen-Marker (siehe telemetryProvider/FlyScreen).
|
||||
if (!gps.hasFix) return;
|
||||
|
||||
if (!_framesController.isClosed) {
|
||||
_framesController.add(TelemetryFrame(
|
||||
lat: gps.lat,
|
||||
lon: gps.lon,
|
||||
hasFix: gps.hasFix,
|
||||
numSat: gps.numSat,
|
||||
altitudeM: altitudeM,
|
||||
speedMs: gps.speedMs,
|
||||
headingDeg: gps.headingDeg,
|
||||
|
||||
Reference in New Issue
Block a user