Zum Inhalt

DescendWindPage (IPage)

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

Beschreibung

MCDU-Seite zur Eingabe von Winddaten fuer die Sinkflugphase. Zeigt den Titel "DESCEND WIND" und 5 editierbare Windzeilen (L1-L5) im Format DDD/SSS/AAAA auf der linken Seite. Zusaetzlich gibt es auf der rechten Seite eine ALTN-WIND-Zeile (R1) im Format DDD/SSS (ohne Hoehe). Partial-Edit wird unterstuetzt: /AAAA fuer nur Hoehe, DDD/SSS fuer nur Richtung+Geschwindigkeit bei bestehenden Eintraegen. R5 navigiert zu CruiseWind (NEXT PHASE). Bei Aenderungen erscheinen CANCEL (L6) und INSERT (R6); INSERT committet alle Eintraege inkl. ALTN-Wind als SetDescentWind-Command.

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 WindData.DescentEntries und WindData.AltnWindEntry fuer initiale Synchronisierung
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 fuer Windeingabe

Rueckgabewert (HandleLsk)

Typ Beschreibung
McduCommand ClearScratchpad bei L1-L5 (Sinkflug-Wind) und R1 (ALTN-Wind), ShowScratchpadMessage bei Fehler, NavigateTo CruiseWind (R5), SetDescentWind (R6 bei Aenderungen, inkl. ALTN-Eintrag), NavigateTo InitA (L6 CANCEL/RETURN), NoOp sonst

Ablaufdiagramm

flowchart TD
    A[HandleLsk aufgerufen] --> B{key = L1-L5?}
    B -- Ja --> C[ParseDescentWindEntry]
    C --> D{Bestehender Eintrag?}
    D -- Nein --> E[Vollformat DDD/SSS/AAAA erforderlich]
    D -- Ja --> F["Partial: /AAAA oder DDD/SSS"]
    E --> G{Gueltig?}
    F --> G
    G -- Nein --> H[FORMAT ERROR / ENTRY OUT OF RANGE]
    G -- Ja --> I[_tempEntries aktualisieren + ClearScratchpad]
    B -- Nein --> J{key = R1?}
    J -- Ja --> K[ParseAltnWindEntry DDD/SSS]
    K --> L{Gueltig?}
    L -- Nein --> M[FORMAT ERROR / ENTRY OUT OF RANGE]
    L -- Ja --> N[_tempAltnDir/_tempAltnSpd + ClearScratchpad]
    J -- Nein --> O{key = R5?}
    O -- Ja --> P[NavigateTo CruiseWind]
    O -- Nein --> Q{key = R6 + changeMade?}
    Q -- Ja --> R["SetDescentWind(entries, altnEntry)"]
    Q -- Nein --> S{key = L6?}
    S -- Ja --> T[Reset + NavigateTo InitA]
    S -- Nein --> U[NoOp]

Aufgerufen von

Modul Sub/Function Kontext
McduActor Seitennavigation Ueber NEXT PHASE von CruiseWindPage oder Wind-Menue

Ruft auf

Modul Sub/Function Kontext
McduCommandParser ParseAndRender Render-Befehle in Bildschirmpuffer schreiben
ctx.WindData DescentEntries, AltnWindEntry Bestehende Sinkflug- und ALTN-Winddaten zur Initialisierung
SetDescentWind Konstruktor Winddaten-Commit an McduActor (inkl. optionalem ALTN-Eintrag)
NavigateTo Konstruktor Seitennavigation (CruiseWind, InitA)
ParseDescentWindEntry (intern) Scratchpad-Eingabe fuer Descent-Zeilen parsen
ParseAltnWindEntry (intern) Scratchpad-Eingabe fuer ALTN-Wind parsen (DDD/SSS)

Beispiel

' DescendWindPage wird vom McduActor instanziiert:
Dim page As New DescendWindPage()
page.Render(ctx, buffer)

' Pilot gibt "180/030/10000" im Scratchpad ein und drueckt L1:
ctx.Scratchpad = "180/030/10000"
Dim cmd = page.HandleLsk(McduLskKey.L1, ctx)
' -> ClearScratchpad, _tempEntries(0) = WindEntry(180, 30, "FL100", 10000)

' Pilot gibt ALTN-Wind "220/015" ein und drueckt R1:
ctx.Scratchpad = "220/015"
Dim cmd2 = page.HandleLsk(McduLskKey.R1, ctx)
' -> ClearScratchpad, _tempAltnDir = 220, _tempAltnSpd = 15

' Pilot drueckt R6 (INSERT):
Dim cmd3 = page.HandleLsk(McduLskKey.R6, ctx)
' -> SetDescentWind mit allen 5 Eintraegen + ALTN-WindEntry

Aenderungshistorie

Version Datum Aenderung
1.0 2026-04-16 Erstdokumentation