Zum Inhalt

DirPage (IPage)

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

Beschreibung

DIR TO Seite — Direct-To Waypoint-Auswahl mit zwei Zustaenden: Pre-Selection (DirToActive=False, Pilot waehlt Waypoint aus F-PLN Liste) und Post-Selection (DirToActive=True, zeigt gewaehlten Waypoint mit UTC/DIST und Modus-Auswahl). Implementiert vier DIR-Modi: DIRECT, ABEAM, RADIALIN, RADIALOUT. Die F-PLN Slot-Liste zeigt bis zu 4 Waypoints mit Filtern (keine DISC, keine leeren Idents, keine *-Praefix-Idents). Side-Channel: LastFplnIds Array wird nach Render vom McduActor gelesen.

LSK-Aktionen Pre-Selection: L1-L4 Waypoint aus Slot auswaehlen, L6 Scroll Up, R6 Scroll Down. Post-Selection: L1-L4 anderen Waypoint waehlen, R1 DIRECT Modus, R2 ABEAM Modus, R3 RADIAL IN (mit optionaler Radial-Eingabe), R4 RADIAL OUT, R6 INSERT (SetDirectTo ausfuehren), L6 ERASE (abbrechen).

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, DirToActive, DirToIdent, DirToMode
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 DirToActive, DirToFplnIds, Scratchpad

Rückgabewert (HandleLsk)

Typ Beschreibung
McduCommand Kommando-Objekt: SetDirToState, SetDirectTo, ScrollDirUp, ScrollDirDown oder NoOp

Ablaufdiagramm

flowchart TD
    A[Render Start] --> B{FlightPlan vorhanden?}
    B -- Nein --> C[NO F-PLN anzeigen]
    B -- Ja --> D{DirToActive?}
    D -- Nein --> E[Pre-Selection: Slot-Liste + Modus-Labels]
    D -- Ja --> F[Post-Selection: Ident gelb, UTC/DIST, aktiver Modus gelb]
    E --> G[4 F-PLN Slots mit Filter rendern]
    F --> H[ERASE/INSERT Zeile 12-13]
    G --> I[LastFplnIds Array befuellen]

    J[HandleLsk Post-Selection] --> K{Taste?}
    K -- R1 --> L[DIRECT Modus]
    K -- R2 --> M[ABEAM Modus]
    K -- R3 --> N[RADIAL IN + optionale Radial-Eingabe]
    K -- R4 --> O[RADIAL OUT + optionale Radial-Eingabe]
    K -- R6 --> P[SetDirectTo: INSERT ausfuehren]
    K -- L6 --> Q[SetDirToState False: ERASE]
    K -- L1-L4 --> R[Anderen Waypoint aus Slot waehlen]

Aufgerufen von

Modul Sub/Function Kontext
McduActor Seitennavigation DIR Hardkey-Taste

Ruft auf

Modul Sub/Function Kontext
McduCommandParser ParseAndRender Render-Kommandos in Bildschirmpuffer schreiben
RenderPreSelection Private Methode Pre-Selection Zustand rendern mit Slot-Liste
RenderPostSelection Private Methode Post-Selection Zustand mit Modus-Auswahl rendern

Beispiel

' DirPage wird vom McduActor bei DIR-Taste instanziiert
Dim page As New DirPage()

' Render: DIR TO Seite anzeigen
page.Render(ctx, screenBuffer)

' Nach Render: Slot-Mapping lesen
Dim slotIds As Integer() = page.LastFplnIds
' McduActor aktualisiert DirToFplnIds im Kontext

' HandleLsk: Waypoint aus Slot waehlen (L2 in Pre-Selection)
Dim cmd As McduCommand = page.HandleLsk(McduLskKey.L2, ctx)
' -> SetDirToState(True, ident, "DIRECT", "XXXX", 0, -1, -1)

Änderungshistorie

Version Datum Änderung
1.0 2026-04-16 Erstdokumentation