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