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 |