# 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`