Zum Inhalt

HoldPage (IPage)

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

Beschreibung

HOLD-Seite — Eingabe eines Holding Patterns am ausgewaehlten Waypoint. Zeigt INB CRS (Inbound Course), TURN (L/R), TIME/DIST und LAST EXIT Informationen an. Verwaltet lokalen veraenderbaren Zustand (_tempInbCrs, _tempTurn, _tempTime) fuer die laufende Piloteneingabe — wird bei Wechsel des SelectedLegIndex zurueckgesetzt. Titel verwendet Inline-Font-Wechsel: "HOLD AT {ident}". Bei INB CRS >= 0 wird ERASE/INSERT angezeigt, sonst RETURN.

LSK-Aktionen: L1 INB CRS Eingabe (beliebiger Integer), R1 TURN Eingabe ("L" oder "R" aus Scratchpad), L2 TIME Eingabe (positive Dezimalzahl), L6 RETURN (zu FPLN), R6 INSERT (SetHolding mit aktuellen Temp-Werten).

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 SelectedLegIndex, FlightPlan (inkl. Holdings Dictionary)
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, SelectedLegIndex, FlightPlan

Rückgabewert (HandleLsk)

Typ Beschreibung
McduCommand Kommando-Objekt: SetHolding, ClearScratchpad, ShowScratchpadMessage, NavigateTo (Fpln) oder NoOp

Ablaufdiagramm

flowchart TD
    A[Render Start] --> B{SelectedLegIndex gueltig?}
    B -- Nein --> C[NO FIX SELECTED anzeigen]
    B -- Ja --> D[Titel: HOLD AT ident]
    D --> E{SelectedLeg geaendert?}
    E -- Ja --> F{Holding bereits vorhanden?}
    F -- Ja --> G[Temp-Werte aus bestehendem Holding laden]
    F -- Nein --> H[Defaults: InbCrs=-1, Turn=R, Time=1.0]
    E -- Nein --> I[Aktuelle Temp-Werte verwenden]
    G --> J[INB CRS: Bracket oder 3-stellig mit Gradsymbol]
    H --> J
    I --> J
    J --> K[TURN: L oder R]
    K --> L[TIME/DIST: Zeit + Dashes fuer Distanz]
    L --> M[LAST EXIT: UTC + FUEL immer mit Dashes]
    M --> N{InbCrs >= 0?}
    N -- Ja --> O[ERASE / INSERT Zeile]
    N -- Nein --> P[RETURN Zeile]

    Q[HandleLsk] --> R{Taste?}
    R -- L1 --> S[INB CRS: Integer aus Scratchpad]
    R -- R1 --> T[TURN: L oder R aus Scratchpad]
    R -- L2 --> U[TIME: Positive Dezimalzahl]
    R -- L6 --> V[NavigateTo Fpln]
    R -- R6 --> W[SetHolding mit Temp-Werten]

Aufgerufen von

Modul Sub/Function Kontext
McduActor Seitennavigation Von LatRevPage L4 HOLD-Taste
LatRevPage HandleLsk L4 NavigateTo McduPageType.Hold

Ruft auf

Modul Sub/Function Kontext
McduCommandParser ParseAndRender Render-Kommandos in Bildschirmpuffer schreiben

Beispiel

' HoldPage wird ueber LatRevPage HOLD-Button aufgerufen
Dim page As New HoldPage()

' Render: Holding-Eingabeseite anzeigen
page.Render(ctx, screenBuffer)

' HandleLsk: INB CRS setzen (z.B. "270" im Scratchpad, L1)
Dim cmd As McduCommand = page.HandleLsk(McduLskKey.L1, ctx)
' -> ClearScratchpad (INB CRS intern auf 270 gesetzt)

' HandleLsk: Holding einfuegen (R6 INSERT)
Dim insertCmd As McduCommand = page.HandleLsk(McduLskKey.R6, ctx)
' -> SetHolding(waypointIdent, 270, "R", 1.0)

Änderungshistorie

Version Datum Änderung
1.0 2026-04-16 Erstdokumentation