Harden protocol transfers and config validation

This commit is contained in:
2026-07-24 09:49:39 +02:00
parent aa6b7a8ec9
commit 08db94bb6b
18 changed files with 741 additions and 202 deletions
+12 -13
View File
@@ -7,7 +7,7 @@
- App-Lebenszyklus als `ApplicationContext` (kein Hauptfenster)
- Tray-Icon mit Verbindungsstatus und Kontextmenü
- Empfang und Routing aller Board-Events (via `SerialManager.PacketReceived`)
- Config/Makro-Dump-Empfang (chunked, via `_rxConfigBuf` / `_rxMacroBuf`)
- sequenzieller Config-/Makro-Dump-Empfang über `ChunkTransferBuffer`
- ACK/NACK-Weiterleitung an SerialManager
- Öffnen des `ConfigForm` (nur eine Instanz gleichzeitig)
@@ -31,19 +31,15 @@ Icon und Tooltip spiegeln den Verbindungsstatus:
| Event-ID | Aktion |
|---|---|
| `EvtConfigBegin` | `_rxConfigBuf = new byte[740]` |
| `EvtConfigData` | Chunk in `_rxConfigBuf` eintragen (`KeyId * 6` = Byte-Offset) |
| `EvtConfigEnd` | `DeviceConfig.FromBytes()``ConfigForm.RefreshAll()` |
| `EvtConfigBegin/Data/End` | Chunkzahl, Indizes und Vollständigkeit prüfen; danach `DeviceConfig.FromBytes()` |
| `EvtConfigAck` | `serial.SignalConfigAck()` — gibt SendConfig()-Thread frei |
| `EvtConfigNack` | `serial.SignalConfigNack()` — gibt SendConfig()-Thread frei (Fehler) |
| `EvtMacroBegin` | `_rxMacroBuf = new byte[512]` |
| `EvtMacroData` | Chunk in `_rxMacroBuf` eintragen |
| `EvtMacroEnd` | `MacroTable.FromBytes()` |
| `EvtMacroBegin/Data/End` | vollständigen 512-Byte-Dump prüfen; danach `MacroTable.FromBytes()` |
| `EvtMacroAck` | `serial.SignalMacroAck()` — gibt SendMacros()-Thread frei |
| `EvtMacroNack` | `serial.SignalMacroNack()` — gibt SendMacros()-Thread frei (Fehler) |
| `EvtPong` | MessageBox "Ping OK" |
| `EvtKeyDown` | TODO: HOST_COMMAND-Aktion ausführen |
| `EvtEncCw/Ccw` | TODO: Encoder HOST_COMMAND |
| `EvtKeyDown/Up` | Command-ID in Byte 2/3 empfangen |
| `EvtEncCw/Ccw` | Command-ID und Encoderrichtung empfangen |
ACK/NACK-Events zeigen keine eigene MessageBox mehr — das Ergebnis wird nach Abschluss beider Transfers gebündelt in `ConfigForm.OnSave()` angezeigt.
@@ -53,14 +49,17 @@ ACK/NACK-Events zeigen keine eigene MessageBox mehr — das Ergebnis wird nach A
OnConnected():
Icon + Text + Menü-Item aktualisieren
serial.RequestConfig() → Config-Dump vom Board
serial.RequestMacros() → Makro-Dump vom Board
nach gültigem Config-End:
serial.RequestMacros() → Makro-Dump vom Board
OnDisconnected():
Icon + Text + Menü-Item aktualisieren
```
## TODOs in dieser Klasse
Ein unvollständiger oder ungültiger Dump wird einmal wiederholt. Schlägt auch
der zweite Versuch fehl, zeigt das Tray-Icon eine Warnung.
- HOST_COMMAND-Ausführung: `EvtKeyDown` empfangen → Aktion aus Config laden → URL/Programm starten
## Offene Punkte
- sichere Zuordnung von Command-IDs zu explizit erlaubten Desktop-Aktionen
- Eigenes Tray-Icon statt `SystemIcons.Application`
- Debug-Log (`versapad_rx.txt`) entfernen