Zum Inhalt

FlightPlan.UpdatePposLegPosition

Eigenschaft Wert
Modul FlightPlan
Klasse FlightPlan
Typ Function
Sichtbarkeit Public
Datei FlightPlan/FlightPlanModels.vb

Beschreibung

Aktualisiert die Position des PPOS-Legs (Present Position), falls das erste EnRoute-Leg vom Typ PresentPosition ist. Gibt den unveraenderten FlightPlan zurueck, wenn kein PPOS-Plan vorliegt oder die Position identisch ist. Der Gleichheitsguard (Toleranz < 0.0000001 Grad) verhindert unnoetige Allokationen bei hochfrequenten Register-Updates mit unveraenderten Werten (T-24-02 DoS-Schutz).

Signatur

Public Function UpdatePposLegPosition(lat As Double, lon As Double, elevFt As Integer) As FlightPlan

Parameter

Name Typ Beschreibung Standard
lat Double Neuer Breitengrad der aktuellen Flugzeugposition in Dezimalgrad
lon Double Neuer Laengengrad der aktuellen Flugzeugposition in Dezimalgrad
elevFt Integer Aktuelle Elevation in Fuss (derzeit nicht im Leg gespeichert, fuer zukuenftige Nutzung)

Rückgabewert

Typ Beschreibung
FlightPlan Neuer FlightPlan mit aktualisierter PPOS-Position; oder Me falls kein PPOS-Plan oder Position unveraendert

Ablaufdiagramm

flowchart TD
    A[Start] --> B{EnRoute leer oder erstes Leg nicht PresentPosition?}
    B -- Ja --> C[Me zurueckgeben - kein PPOS-Plan]
    B -- Nein --> D{Position unveraendert? Toleranz < 0.0000001}
    D -- Ja --> E[Me zurueckgeben - keine Aenderung]
    D -- Nein --> F[Neues PPOS-Leg mit aktualisierter Lat/Lon erstellen]
    F --> G[EnRoute-Legs kopieren und erstes Leg ersetzen]
    G --> H[WithEnRouteSegment mit neuen Legs aufrufen]
    H --> I[Neuen FlightPlan zurueckgeben]

Aufgerufen von

Modul Sub/Function Kontext
FlightPlanActor Receive(Of UpdatePposPosition) Periodische Positionsaktualisierung ueber Actor-Message

Ruft auf

Modul Sub/Function Kontext
FlightPlanModels FlightPlanLeg.New Erzeugt neues PPOS-Leg mit aktualisierter Position
FlightPlanModels EnRouteSegment.WithReplacedLegs Ersetzt die Leg-Liste im EnRoute-Segment
FlightPlanModels FlightPlan.WithEnRouteSegment Erzeugt neuen FlightPlan mit aktualisiertem EnRoute-Segment

Beispiel

' PPOS-Plan erstellen
Dim plan = FlightPlan.WithPposInitialLegs(48.0, 11.0, 1500)

' Position aktualisieren
Dim updated = plan.UpdatePposLegPosition(48.1, 11.1, 1600)
' updated.EnRouteSegment.Legs(0).Latitude = 48.1
' updated.EnRouteSegment.Legs(0).Longitude = 11.1

' Gleiche Position nochmal: gibt Me zurueck (keine neue Allokation)
Dim same = updated.UpdatePposLegPosition(48.1, 11.1, 1600)
' Object.ReferenceEquals(same, updated) = True

Änderungshistorie

Version Datum Änderung
1.0 2026-04-16 Erstdokumentation