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 |