Harden protocol transfers and config validation
This commit is contained in:
+12
-13
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user