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
+6 -1
View File
@@ -8,7 +8,8 @@ Menschenlesbares JSON mit `System.Text.Json` (`WriteIndented=true`, Enums als St
```json
{
"version": 2,
"version": 3,
"profile": 0,
"buttons": [
{
"index": 0,
@@ -37,6 +38,8 @@ Menschenlesbares JSON mit `System.Text.Json` (`WriteIndented=true`, Enums als St
`ConfigJson.Deserialize(json, cfg)`:
- Prüft `version` wirft `InvalidDataException` bei Mismatch
- prüft und übernimmt `profile` im Bereich `0..2`
- validiert Actions, LED-Enums und die Mindestperiode für `Pulse`
- Schreibt in bestehendes `DeviceConfig`-Objekt (kein `new`)
- Fehlende `buttons`/`encoders`-Arrays werden ignoriert (partial import möglich)
- Ungültige `index`-Werte werden übersprungen
@@ -46,3 +49,5 @@ Menschenlesbares JSON mit `System.Text.Json` (`WriteIndented=true`, Enums als St
- `MacroTable` wird **nicht** exportiert (kein JSON-Format für Makros definiert)
- `data` enthält den `ushort`-Wert direkt (für HidKey z.B. `Keycode | (Modifier << 8)`)
- Die Datei ist kein Binärformat und kann manuell bearbeitet werden
- Ein ungültiger Wert wird vor dem Anwenden mit `InvalidDataException`
abgelehnt