2.3 KiB
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
740Byte - 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
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:
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 = 255enc_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:
keycodemodifier
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.
Wichtig fuer Aenderungen
Wenn sich Firmware-Layout, Magic, Version, Profilzahl oder Makrogroesse aendern, muessen mindestens diese Stellen zusammen angepasst werden:
VersaMCUVersaGUI
Beide sind eigenständige Git-Repositories und werden getrennt gebaut und committed. Andere GUI-Ports gehören nicht zum gepflegten Scope.