Zum Inhalt

FplnPage (IPage)

Eigenschaft Wert
Modul Mcdu/Pages
Klasse FplnPage
Typ IPage Implementation
Sichtbarkeit Public
Datei Mcdu/Pages/FplnPage.vb

Beschreibung

FPLN-Seite — zeigt den aktiven Flugplan mit scrollbaren Legs an. Unterstuetzt zwei Unterseiten: FPLN1 (UTC + IAS/ALT mit Constraint-Markern) und FPLN2 (EFOB + T WIND). Verwendet zirkulaeres Wrapping fuer die Leg-Anzeige (legIdx = (topIndex + slot) Mod count). Farbpfade gemaess VB6: aktiver Waypoint = weiss, TMPY = gelb, MISSAPPR = cyan, Standard = keine Farbpraefixe. Unten werden DEST-Zusammenfassung (UTC, DIST, EFOB) oder TMPY UNDO/ERASE/INSERT angezeigt.

Property LastMissApprVisible wird nach Render vom McduActor gelesen und als INET Register 2607 gesendet.

LSK-Aktionen: L1-L5 oeffnen LatRev (leer) oder fuehren Waypoint-Insert/Delete/Overfly-Toggle aus (Scratchpad-abhaengig). R1-R5 oeffnen VertRev. L6 TMPY Undo/Erase oder Scroll. R6 TMPY Insert oder FPLN1/FPLN2 Umschaltung.

Implementierte Methoden

Render

Public Sub Render(ctx As McduContext, buffer As Inet.Arinc429ScreenBuffer) Implements IPage.Render
Name Typ Beschreibung Standard
ctx McduContext MCDU-Zustandskontext mit FlightPlan, FplnTopIndex, FplnSubPage, TmpyFplnActive
buffer Inet.Arinc429ScreenBuffer ARINC-429-Bildschirmpuffer fuer die MCDU-Anzeige

HandleLsk

Public Function HandleLsk(key As McduLskKey, ctx As McduContext) As McduCommand Implements IPage.HandleLsk
Name Typ Beschreibung Standard
key McduLskKey Gedrueckte LSK-Taste (L1-L6, R1-R6)
ctx McduContext MCDU-Zustandskontext mit Scratchpad, ClearCommand, TmpyFplnActive

Rückgabewert (HandleLsk)

Typ Beschreibung
McduCommand Kommando-Objekt: FplnSelectWaypoint, InsertWaypointFromScratchpad, DeleteWaypointTmpy, ToggleOverflyTmpy, TmpyInsertCommand, TmpyUndoCommand, SetFplnSubPage, ScratchpadError oder NoOp

Ablaufdiagramm

flowchart TD
    A[Render Start] --> B[LISTCLEAR]
    B --> C[McduFplnLegBuilder.BuildMcduFplnLegs]
    C --> D{Legs vorhanden?}
    D -- Nein --> E[NO F-PLN anzeigen]
    D -- Ja --> F[Titel: FROM oder TMPY + Flugnummer]
    F --> G[5 Slots rendern mit zirkulaerem Wrap]
    G --> H{FPLN SubPage?}
    H -- 1 --> I[UTC + SPD/ALT + Constraint-Marker]
    H -- 2 --> J[EFOB + T WIND]
    I --> K{TMPY aktiv?}
    J --> K
    K -- Ja --> L[UNDO/ERASE + INSERT Zeilen]
    K -- Nein --> M[DEST Zusammenfassung: UTC, DIST, EFOB]

    N[HandleLsk] --> O{R6?}
    O -- Ja + TMPY --> P[TmpyInsertCommand]
    O -- Ja --> Q[SetFplnSubPage Toggle]
    N --> R{L1-L5?}
    R --> S{Scratchpad = i?}
    S -- Ja --> T[ToggleOverflyTmpy]
    R --> U{CLR + ClearCommand?}
    U -- Ja --> V[DeleteWaypointTmpy]
    R --> W{Scratchpad nicht leer?}
    W -- Ja --> X[InsertWaypointFromScratchpad]
    R --> Y[FplnSelectWaypoint -> LatRev]

Aufgerufen von

Modul Sub/Function Kontext
McduActor Seitennavigation F-PLN Hardkey-Taste oder Ruecknavigation von LatRev/VertRev
LatRevPage HandleLsk L6 RETURN-Taste navigiert zurueck zu FPLN
VertRevPage HandleLsk L6/R6 RETURN-Taste navigiert zurueck zu FPLN

Ruft auf

Modul Sub/Function Kontext
McduFplnLegBuilder BuildMcduFplnLegs Leg-Liste aus ComputedFlightPlan oder Raw-Legs erstellen
McduCommandParser ParseAndRender Render-Kommandos in Bildschirmpuffer schreiben

Beispiel

' FplnPage wird vom McduActor instanziiert
Dim page As New FplnPage()

' Render: Flugplan anzeigen
page.Render(ctx, screenBuffer)

' Nach Render: MISSAPPR Register pruefen
If page.LastMissApprVisible Then
    ' McduActor sendet INET Register 2607
End If

' HandleLsk: Waypoint einfuegen (z.B. "ROMEO" im Scratchpad, L3 gedrueckt)
Dim cmd As McduCommand = page.HandleLsk(McduLskKey.L3, ctx)
' -> InsertWaypointFromScratchpad("ROMEO", rawIndex)

Änderungshistorie

Version Datum Änderung
1.0 2026-04-16 Erstdokumentation