FplnPage (IPage)
| Eigenschaft |
Wert |
| Modul |
Mcdu/Pages |
| Klasse |
FplnPage |
| Typ |
IPage Implementation |
| Sichtbarkeit |
Public |
| Datei |
Mcdu/Pages/FplnPage.vb |
Beschreibung
FPLN-Seite — zeigt den aktiven Flugplan mit scrollbaren Legs an. Unterstuetzt zwei Unterseiten: FPLN1 (UTC + IAS/ALT mit Constraint-Markern) und FPLN2 (EFOB + T WIND). Verwendet zirkulaeres Wrapping fuer die Leg-Anzeige (legIdx = (topIndex + slot) Mod count). Farbpfade gemaess VB6: aktiver Waypoint = weiss, TMPY = gelb, MISSAPPR = cyan, Standard = keine Farbpraefixe. Unten werden DEST-Zusammenfassung (UTC, DIST, EFOB) oder TMPY UNDO/ERASE/INSERT angezeigt.
Property LastMissApprVisible wird nach Render vom McduActor gelesen und als INET Register 2607 gesendet.
LSK-Aktionen: L1-L5 oeffnen LatRev (leer) oder fuehren Waypoint-Insert/Delete/Overfly-Toggle aus (Scratchpad-abhaengig). R1-R5 oeffnen VertRev. L6 TMPY Undo/Erase oder Scroll. R6 TMPY Insert oder FPLN1/FPLN2 Umschaltung.
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, FplnTopIndex, FplnSubPage, TmpyFplnActive |
— |
| 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, ClearCommand, TmpyFplnActive |
— |
Rückgabewert (HandleLsk)
| Typ |
Beschreibung |
| McduCommand |
Kommando-Objekt: FplnSelectWaypoint, InsertWaypointFromScratchpad, DeleteWaypointTmpy, ToggleOverflyTmpy, TmpyInsertCommand, TmpyUndoCommand, SetFplnSubPage, ScratchpadError oder NoOp |
Ablaufdiagramm
flowchart TD
A[Render Start] --> B[LISTCLEAR]
B --> C[McduFplnLegBuilder.BuildMcduFplnLegs]
C --> D{Legs vorhanden?}
D -- Nein --> E[NO F-PLN anzeigen]
D -- Ja --> F[Titel: FROM oder TMPY + Flugnummer]
F --> G[5 Slots rendern mit zirkulaerem Wrap]
G --> H{FPLN SubPage?}
H -- 1 --> I[UTC + SPD/ALT + Constraint-Marker]
H -- 2 --> J[EFOB + T WIND]
I --> K{TMPY aktiv?}
J --> K
K -- Ja --> L[UNDO/ERASE + INSERT Zeilen]
K -- Nein --> M[DEST Zusammenfassung: UTC, DIST, EFOB]
N[HandleLsk] --> O{R6?}
O -- Ja + TMPY --> P[TmpyInsertCommand]
O -- Ja --> Q[SetFplnSubPage Toggle]
N --> R{L1-L5?}
R --> S{Scratchpad = i?}
S -- Ja --> T[ToggleOverflyTmpy]
R --> U{CLR + ClearCommand?}
U -- Ja --> V[DeleteWaypointTmpy]
R --> W{Scratchpad nicht leer?}
W -- Ja --> X[InsertWaypointFromScratchpad]
R --> Y[FplnSelectWaypoint -> LatRev]
Aufgerufen von
| Modul |
Sub/Function |
Kontext |
| McduActor |
Seitennavigation |
F-PLN Hardkey-Taste oder Ruecknavigation von LatRev/VertRev |
| LatRevPage |
HandleLsk L6 |
RETURN-Taste navigiert zurueck zu FPLN |
| VertRevPage |
HandleLsk L6/R6 |
RETURN-Taste navigiert zurueck zu FPLN |
Ruft auf
| Modul |
Sub/Function |
Kontext |
| McduFplnLegBuilder |
BuildMcduFplnLegs |
Leg-Liste aus ComputedFlightPlan oder Raw-Legs erstellen |
| McduCommandParser |
ParseAndRender |
Render-Kommandos in Bildschirmpuffer schreiben |
Beispiel
' FplnPage wird vom McduActor instanziiert
Dim page As New FplnPage()
' Render: Flugplan anzeigen
page.Render(ctx, screenBuffer)
' Nach Render: MISSAPPR Register pruefen
If page.LastMissApprVisible Then
' McduActor sendet INET Register 2607
End If
' HandleLsk: Waypoint einfuegen (z.B. "ROMEO" im Scratchpad, L3 gedrueckt)
Dim cmd As McduCommand = page.HandleLsk(McduLskKey.L3, ctx)
' -> InsertWaypointFromScratchpad("ROMEO", rawIndex)
Änderungshistorie
| Version |
Datum |
Änderung |
| 1.0 |
2026-04-16 |
Erstdokumentation |