121 lines
2.0 KiB
Markdown
121 lines
2.0 KiB
Markdown
# DeviceConfig und MacroTable
|
|
|
|
Datei:
|
|
|
|
- `src/DeviceConfig.cs`
|
|
|
|
## Zweck
|
|
|
|
Die C#-Klassen spiegeln das aktuelle Firmware-Layout bytegenau.
|
|
Sie muessen deshalb synchron zu `VersaMCU/src/config/nvm_config.h` und `macro_config.h` bleiben.
|
|
|
|
## DeviceConfig
|
|
|
|
### Globaler Stand
|
|
|
|
- Magic `0x56503203`
|
|
- Version `3`
|
|
- Groesse `740` Byte
|
|
- 3 Profile
|
|
|
|
### Wichtige Felder
|
|
|
|
| Feld | Bedeutung |
|
|
|---|---|
|
|
| `ActiveProfileIndex` | aktives Profil 0..2 |
|
|
| `GlobalBrightness` | globale LED-Helligkeit |
|
|
| `Profiles[3]` | komplette Profil-Daten |
|
|
|
|
Fuer die GUI gibt es zusaetzlich Komfortzugriffe auf das aktive Profil:
|
|
|
|
- `MxActions[20]`
|
|
- `EncActions[4,3]`
|
|
- `LedBase[20]`
|
|
- `LedAnim[20]`
|
|
- `LedPeriod[20]`
|
|
|
|
### Layout
|
|
|
|
```text
|
|
Offset 0 4B magic
|
|
Offset 4 1B version
|
|
Offset 5 2B crc
|
|
Offset 7 1B active_profile
|
|
Offset 8 1B global_brightness
|
|
Offset 9 4B enc_sensitivity[4]
|
|
Offset 13 19B reserve
|
|
Offset 32 profile 0
|
|
Offset 268 profile 1
|
|
Offset 504 profile 2
|
|
```
|
|
|
|
Jedes Profil belegt 236 Byte:
|
|
|
|
```text
|
|
20 x mx_actions
|
|
12 x enc_actions
|
|
20 x led_r
|
|
20 x led_g
|
|
20 x led_b
|
|
20 x led_brightness
|
|
20 x led_anim
|
|
20 x led_period_ms
|
|
```
|
|
|
|
## CRC
|
|
|
|
CRC16-CCITT:
|
|
|
|
- Polynom `0x1021`
|
|
- Init `0xFFFF`
|
|
- Bereich `7..739`
|
|
|
|
Die CRC muss exakt zur Firmware passen.
|
|
|
|
## Defaults
|
|
|
|
Firmware-Defaults:
|
|
|
|
- alle Actions `None`
|
|
- `GlobalBrightness = 255`
|
|
- `enc_sensitivity = 1`
|
|
- Base-Farbe `R=80, G=40, B=0`
|
|
- Animation `ColorCycle`
|
|
- Periode `4000 ms`
|
|
|
|
Sichtbarer Effekt auf dem Board:
|
|
|
|
- alle MX-LEDs laufen im Regenbogenmodus
|
|
|
|
## MacroTable
|
|
|
|
### Stand
|
|
|
|
- 32 Slots
|
|
- 8 Steps pro Slot
|
|
- 512 Byte gesamt
|
|
|
|
### Slot-Konvention
|
|
|
|
| Slots | Bedeutung |
|
|
|---|---|
|
|
| `0..19` | MX-Buttons |
|
|
| `20..31` | Encoder-Aktionen |
|
|
|
|
### Serialisierung
|
|
|
|
Ein Step besteht aus:
|
|
|
|
- `keycode`
|
|
- `modifier`
|
|
|
|
Es gibt kein Magic und keine CRC fuer die Makrotabelle.
|
|
|
|
## Wichtig fuer Aenderungen
|
|
|
|
Wenn sich Firmware-Layout, Magic, Version, Profilzahl oder Makrogroesse aendern, muessen mindestens diese Stellen zusammen angepasst werden:
|
|
|
|
- `VersaMCU`
|
|
- `VersaGUI`
|
|
- `VersaGUIDelphi`
|