# 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.