Zum Inhalt

AirwaysPage (IPage)

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

Beschreibung

MCDU-Seite zur Eingabe von Airways (Luftstrassen) mit zugehoerigen TO-Fixes. Zeigt den Titel "AIRWAYS FROM {fromFix}" und bis zu 4 Airway/TO-Fix-Eintragspaare. Der Pilot gibt ueber das Scratchpad Airway-Identifier (L1-L4) und TO-Fix-Identifier (R1-R4) ein. Die Klasse haelt temporaeren Zustand in einem privaten _tempAirways-Array (4 AirwayEntry-Objekte). Wenn eine vollstaendige Kette vorliegt (Airway ohne ToFix gefolgt von vorherigem ToFix), wird die Farbe auf gelb (~y) umgeschaltet und INSERT* erscheint. R6 fuehrt INSERT aus, L6 loescht bei vorhandenen Eintraegen (ERASE via ResetEntries) oder navigiert zurueck (RETURN zu LatRev).

Implementierte Methoden

Render

Public Sub Render(ctx As McduContext, buffer As Inet.Arinc429ScreenBuffer) Implements IPage.Render
Name Typ Beschreibung Standard
ctx McduContext MCDU-Zustand mit FlightPlan (fuer fromFix-Ermittlung ueber SelectedLegIndex) und LastMainPage (SEC-Erkennung)
buffer Inet.Arinc429ScreenBuffer Zielpuffer fuer die ARINC-429-Bildschirmausgabe

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-Zustand mit Scratchpad-Inhalt und SelectedLegIndex

Rueckgabewert (HandleLsk)

Typ Beschreibung
McduCommand InsertAirway bei R6 (ersten fertigen Eintrag committen), ClearScratchpad bei L1-L4/R1-R4 (Airway/ToFix setzen oder loeschen), NavigateTo LatRev bei L6 (RETURN), NoOp bei unbelegten Tasten

Ablaufdiagramm

flowchart TD
    A[HandleLsk aufgerufen] --> B{key = R6?}
    B -- Ja --> C[Ersten IsReady-Eintrag suchen]
    C --> D{Gefunden?}
    D -- Ja --> E["InsertAirway(airway, toFix, afterIdx)"]
    D -- Nein --> F[NoOp]
    B -- Nein --> G{key = L6?}
    G -- Ja --> H{"ToFix(0) gesetzt?"}
    H -- Ja --> I[ResetEntries + ClearScratchpad]
    H -- Nein --> J[NavigateTo LatRev]
    G -- Nein --> K{key = L1-L4?}
    K -- Ja --> L{Scratchpad leer?}
    L -- Ja --> M[AirwayIdent loeschen + ClearScratchpad]
    L -- Nein --> N[AirwayIdent setzen + ClearScratchpad]
    K -- Nein --> O{key = R1-R4?}
    O -- Ja --> P{Scratchpad leer?}
    P -- Ja --> Q[ToFix loeschen + ClearScratchpad]
    P -- Nein --> R[ToFix setzen + ClearScratchpad]
    O -- Nein --> S[NoOp]

Aufgerufen von

Modul Sub/Function Kontext
McduActor Seitennavigation Wenn Pilot Airways-Eingabe ueber Lateral Revision oeffnet

Ruft auf

Modul Sub/Function Kontext
McduCommandParser ParseAndRender Render-Befehle in Bildschirmpuffer schreiben
ResetEntries (intern) Alle temporaeren Airway-Eintraege zuruecksetzen (ERASE)
InsertAirway Konstruktor Airway-Einfuegung an McduActor melden
ClearScratchpad Konstruktor Scratchpad nach Eingabe leeren
NavigateTo Konstruktor Seitennavigation (LatRev)
FlightPlan GetAllLegs fromFix-Waypoint aus dem aktuellen Leg ermitteln

Beispiel

' AirwaysPage wird vom McduActor instanziiert:
Dim page As New AirwaysPage()
page.Render(ctx, buffer)

' Pilot gibt Airway "UL607" im Scratchpad ein und drueckt L1:
ctx.Scratchpad = "UL607"
Dim cmd1 = page.HandleLsk(McduLskKey.L1, ctx) ' -> ClearScratchpad, _tempAirways(0).AirwayIdent = "UL607"

' Pilot gibt TO-Fix "ERNAS" im Scratchpad ein und drueckt R1:
ctx.Scratchpad = "ERNAS"
Dim cmd2 = page.HandleLsk(McduLskKey.R1, ctx) ' -> ClearScratchpad, _tempAirways(0).ToFix = "ERNAS"

' Pilot drueckt R6 (INSERT):
Dim cmd3 = page.HandleLsk(McduLskKey.R6, ctx) ' -> InsertAirway("UL607", "ERNAS", afterIdx)

Aenderungshistorie

Version Datum Aenderung
1.0 2026-04-16 Erstdokumentation