HoldPage (IPage)
| Eigenschaft |
Wert |
| Modul |
Mcdu/Pages |
| Klasse |
HoldPage |
| Typ |
IPage Implementation |
| Sichtbarkeit |
Public |
| Datei |
Mcdu/Pages/HoldPage.vb |
Beschreibung
HOLD-Seite — Eingabe eines Holding Patterns am ausgewaehlten Waypoint. Zeigt INB CRS (Inbound Course), TURN (L/R), TIME/DIST und LAST EXIT Informationen an. Verwaltet lokalen veraenderbaren Zustand (_tempInbCrs, _tempTurn, _tempTime) fuer die laufende Piloteneingabe — wird bei Wechsel des SelectedLegIndex zurueckgesetzt. Titel verwendet Inline-Font-Wechsel: "HOLD AT {ident}". Bei INB CRS >= 0 wird ERASE/INSERT angezeigt, sonst RETURN.
LSK-Aktionen: L1 INB CRS Eingabe (beliebiger Integer), R1 TURN Eingabe ("L" oder "R" aus Scratchpad), L2 TIME Eingabe (positive Dezimalzahl), L6 RETURN (zu FPLN), R6 INSERT (SetHolding mit aktuellen Temp-Werten).
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 SelectedLegIndex, FlightPlan (inkl. Holdings Dictionary) |
— |
| 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, SelectedLegIndex, FlightPlan |
— |
Rückgabewert (HandleLsk)
| Typ |
Beschreibung |
| McduCommand |
Kommando-Objekt: SetHolding, ClearScratchpad, ShowScratchpadMessage, NavigateTo (Fpln) oder NoOp |
Ablaufdiagramm
flowchart TD
A[Render Start] --> B{SelectedLegIndex gueltig?}
B -- Nein --> C[NO FIX SELECTED anzeigen]
B -- Ja --> D[Titel: HOLD AT ident]
D --> E{SelectedLeg geaendert?}
E -- Ja --> F{Holding bereits vorhanden?}
F -- Ja --> G[Temp-Werte aus bestehendem Holding laden]
F -- Nein --> H[Defaults: InbCrs=-1, Turn=R, Time=1.0]
E -- Nein --> I[Aktuelle Temp-Werte verwenden]
G --> J[INB CRS: Bracket oder 3-stellig mit Gradsymbol]
H --> J
I --> J
J --> K[TURN: L oder R]
K --> L[TIME/DIST: Zeit + Dashes fuer Distanz]
L --> M[LAST EXIT: UTC + FUEL immer mit Dashes]
M --> N{InbCrs >= 0?}
N -- Ja --> O[ERASE / INSERT Zeile]
N -- Nein --> P[RETURN Zeile]
Q[HandleLsk] --> R{Taste?}
R -- L1 --> S[INB CRS: Integer aus Scratchpad]
R -- R1 --> T[TURN: L oder R aus Scratchpad]
R -- L2 --> U[TIME: Positive Dezimalzahl]
R -- L6 --> V[NavigateTo Fpln]
R -- R6 --> W[SetHolding mit Temp-Werten]
Aufgerufen von
| Modul |
Sub/Function |
Kontext |
| McduActor |
Seitennavigation |
Von LatRevPage L4 HOLD-Taste |
| LatRevPage |
HandleLsk L4 |
NavigateTo McduPageType.Hold |
Ruft auf
| Modul |
Sub/Function |
Kontext |
| McduCommandParser |
ParseAndRender |
Render-Kommandos in Bildschirmpuffer schreiben |
Beispiel
' HoldPage wird ueber LatRevPage HOLD-Button aufgerufen
Dim page As New HoldPage()
' Render: Holding-Eingabeseite anzeigen
page.Render(ctx, screenBuffer)
' HandleLsk: INB CRS setzen (z.B. "270" im Scratchpad, L1)
Dim cmd As McduCommand = page.HandleLsk(McduLskKey.L1, ctx)
' -> ClearScratchpad (INB CRS intern auf 270 gesetzt)
' HandleLsk: Holding einfuegen (R6 INSERT)
Dim insertCmd As McduCommand = page.HandleLsk(McduLskKey.R6, ctx)
' -> SetHolding(waypointIdent, 270, "R", 1.0)
Änderungshistorie
| Version |
Datum |
Änderung |
| 1.0 |
2026-04-16 |
Erstdokumentation |