""" Binaeres NVM-Layout des VersaPad-Boards -- pack/unpack fuer SDeviceConfig (740B) und SMacroTable (512B), plus die CRC16, die die Firmware fuer CONFIG_COMMIT/-READ prueft. 1:1 aus den Firmware-Quellen uebernommen, nichts geraten: - VersaMCU/src/config/nvm_config.h (SDeviceConfig/SDeviceProfile-Layout) - VersaMCU/src/config/action.h (SAction, ActionType-Enum-Werte) - VersaMCU/src/config/macro_config.h (SMacroTable/SMacroStep-Layout) - VersaMCU/src/CButton.h (LEDAnim-Enum-Werte) - VersaMCU/src/config/nvm_config.cpp (nvm_config_crc(), Validierung) Wer hier etwas aendert: IMMER gegen diese Dateien abgleichen, nicht raten -- ein falsches Byte-Layout schreibt (nach CRC-Fehlschlag zum Glueck nur NACK, kein Datenmuell aufs Board, siehe nvm_config_validate()). """ import struct NVM_CONFIG_MAGIC = 0x56503203 NVM_CONFIG_VERSION = 3 CONFIG_SIZE = 740 MACRO_SIZE = 512 MACRO_SLOTS = 32 MACRO_MAX_STEPS = 8 ACTION_TYPES = ["None", "HidKey", "HidConsumer", "HostCommand", "Macro", "ProfileSwitch"] ACTION_TYPE_TO_INT = {name: i for i, name in enumerate(ACTION_TYPES)} ANIM_TYPES = ["Static", "Blink", "Pulse", "FadeIn", "FadeOut", "ColorCycle", "ColorFade"] ANIM_TYPE_TO_INT = {name: i for i, name in enumerate(ANIM_TYPES)} _ACTION_FMT = "