Refresh GUI documentation and profile synchronization
This commit is contained in:
@@ -25,6 +25,7 @@ Sie muessen deshalb synchron zu `VersaMCU/src/config/nvm_config.h` und `macro_co
|
||||
| `ActiveProfileIndex` | aktives Profil 0..2 |
|
||||
| `GlobalBrightness` | globale LED-Helligkeit |
|
||||
| `Profiles[3]` | komplette Profil-Daten |
|
||||
| `EncSensitivity[4]` | im Vertrag enthalten; Firmware nutzt den Wert derzeit nicht |
|
||||
|
||||
Fuer die GUI gibt es zusaetzlich Komfortzugriffe auf das aktive Profil:
|
||||
|
||||
@@ -62,6 +63,32 @@ Jedes Profil belegt 236 Byte:
|
||||
20 x led_period_ms
|
||||
```
|
||||
|
||||
### Action-Daten
|
||||
|
||||
| Typ | Datenbereich |
|
||||
|---|---|
|
||||
| `None` | Daten werden ignoriert |
|
||||
| `HidKey` | Low-Byte Keycode `0x00..0x65`, High-Byte Modifier |
|
||||
| `HidConsumer` | Usage `0x0000..0x03FF` |
|
||||
| `HostCommand` | frei definierte Command-ID `0x0000..0xFFFF` |
|
||||
| `Macro` | Slot `0..31` |
|
||||
| `ProfileSwitch` | Profil `0..2`; `0x00FF` oder `0xFFFF` bedeuten „nächstes Profil“ |
|
||||
|
||||
### LED-Animationen im Binärformat
|
||||
|
||||
| Wert | Enum |
|
||||
|---|---|
|
||||
| `0` | `Static` |
|
||||
| `1` | `Blink` |
|
||||
| `2` | `Pulse` |
|
||||
| `3` | `FadeIn` |
|
||||
| `4` | `FadeOut` |
|
||||
| `5` | `ColorCycle` |
|
||||
| `6` | `ColorFade` |
|
||||
|
||||
`DeviceConfig` akzeptiert alle Werte `0..6`. Der aktuelle ActionDialog bietet
|
||||
nur `Static`, `Blink`, `Pulse` und `ColorCycle` an.
|
||||
|
||||
## CRC
|
||||
|
||||
CRC16-CCITT:
|
||||
@@ -109,10 +136,20 @@ Ein Step besteht aus:
|
||||
- `keycode`
|
||||
- `modifier`
|
||||
|
||||
`keycode == 0` beendet die Ausführung des Slots. Belegte Steps nach der ersten
|
||||
Lücke werden daher zwar serialisiert, von der Firmware aber nicht ausgeführt.
|
||||
|
||||
Es gibt kein Magic und keine CRC fuer die Makrotabelle.
|
||||
Beim Transfer prüft die GUI trotzdem exakte Größe und alle HID-Keycodes; die
|
||||
Firmware prüft zusätzlich die vollständige Chunkmenge.
|
||||
|
||||
## Validierung
|
||||
|
||||
`ToBytes()` verweigert ungültige Objektzustände. `FromBytes()` verändert das
|
||||
bestehende Objekt erst, nachdem Größe, Magic, Version, CRC, aktives Profil,
|
||||
Action-Werte, LED-Enums und die Mindestperiode von 2 ms für `Pulse` geprüft
|
||||
wurden. Für die Makrotabelle gelten exakte 512 Byte und Keycodes bis `0x65`.
|
||||
|
||||
## Wichtig fuer Aenderungen
|
||||
|
||||
Wenn sich Firmware-Layout, Magic, Version, Profilzahl oder Makrogroesse aendern, muessen mindestens diese Stellen zusammen angepasst werden:
|
||||
|
||||
Reference in New Issue
Block a user