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 |