Files
VersaGUI/doc/02_device_config.md
T

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

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 = 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. 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:

  • VersaMCU
  • VersaGUI

Beide sind eigenständige Git-Repositories und werden getrennt gebaut und committed. Andere GUI-Ports gehören nicht zum gepflegten Scope.