Files
VersaGUI/doc/07_known_limitations.md

70 lines
2.9 KiB
Markdown

# Bekannte Einschränkungen
Diese Seite trennt bewusst offene Punkte von bereits implementierten
Verträgen. Sie ist vor Änderungen an Verbindungslogik, ActionDialog oder
Binärformat zu lesen.
## Host-Commands
Firmware und GUI übertragen für `HostCommand`:
- Key- beziehungsweise Encoder-ID
- Richtung über die Event-ID
- 16-Bit-Command-ID in Byte 2/3
`TrayApp` führt die Command-ID noch nicht als Desktop-Aktion aus. Eine spätere
Implementierung benötigt ein explizites Allowlist-Mapping; beliebige
Shellbefehle aus Config-Daten sind nicht zulässig.
## LED- und globale Einstellungen
Das Binärformat und `DeviceConfig` unterstützen sieben Animationen:
`Static`, `Blink`, `Pulse`, `FadeIn`, `FadeOut`, `ColorCycle` und `ColorFade`.
Der `ActionDialog` bietet aktuell nur die ersten drei sowie `ColorCycle` an.
Beim Öffnen einer nicht angebotenen Animation fällt die Auswahl auf `Static`
zurück und würde beim Bestätigen entsprechend gespeichert.
Per-LED-Helligkeit wird binär und im JSON erhalten, besitzt aber kein
Bedienelement. Globale Helligkeit und Encoder-Sensitivität werden binär
erhalten, sind weder im Hauptfenster editierbar noch Teil des JSON-Exports.
Die Firmware verwendet Encoder-Sensitivität derzeit ebenfalls nicht.
## ActionDialog
- Die Consumer-Liste enthält zwölf vordefinierte Usages. Andere formal gültige
Usages bis `0x03FF` können aus dem Board gelesen werden, fallen beim Öffnen
des Dialogs aber auf „Play / Pause“ zurück.
- Das Periodenfeld bietet nur 500, 1000, 2000 und 4000 ms. Andere geladene
Perioden fallen im Dialog auf 4000 ms zurück.
- Ein Makro endet am ersten Step mit `keycode == 0`; Lücken vor späteren
belegten Steps werden nicht ausgeführt.
## Transfers und Verbindung
- Das CDC-Protokoll besitzt kein Byte-Framing, keine Paket-CRC und keine
Transfer-ID. Verliert der Stream ein Byte, kann die 8-Byte-Grenze bis zum
Reconnect verschoben bleiben.
- Chunkzahl, eindeutige Indizes, Vollständigkeit und END-Metadaten werden
geprüft. Bleibt ein Dump jedoch ohne `END`, existiert noch kein
Empfangs-Timeout oder Watchdog; die automatische Wiederholung startet nur
nach einem als ungültig erkannten `END`.
- `RequestConfig()` und `RequestMacros()` melden einen unmittelbar
fehlgeschlagenen `Send()` nicht an `TrayApp`.
- Während `SendConfig()` und `SendMacros()` ist nur die Speichern-Schaltfläche
deaktiviert. Andere Editoraktionen werden nicht global gesperrt.
## Testabdeckung
Die Console-Contract-Tests prüfen:
- Configgröße, CRC und Roundtrip
- ausgewählte ungültige Configfelder
- Makrogröße und HID-Keycode-Grenze
- Chunkvollständigkeit und doppelte Chunks
- 16-Bit-Host-Command-Payload
Nicht automatisiert geprüft werden WinForms-Interaktionen, WMI-Porterkennung,
echte SerialPort-Fehler, Reconnects, NVM-Schreibzeiten, HID-Ausgabe und
Hardwareverhalten. Dafür ist weiterhin ein Test mit angeschlossenem VersaPad
erforderlich.