nvm_eeconfig.h (4738B)
1 // Copyright 2024 Nick Brassel (@tzarc) 2 // SPDX-License-Identifier: GPL-2.0-or-later 3 #pragma once 4 5 #include <stdint.h> 6 #include <stdbool.h> 7 #include "action_layer.h" // layer_state_t 8 9 #ifndef EECONFIG_MAGIC_NUMBER 10 # define EECONFIG_MAGIC_NUMBER (uint16_t)0xFEE3 // When changing, decrement this value to avoid future re-init issues 11 #endif 12 #define EECONFIG_MAGIC_NUMBER_OFF (uint16_t)0xFFFF 13 14 void nvm_eeconfig_erase(void); 15 16 bool nvm_eeconfig_is_enabled(void); 17 bool nvm_eeconfig_is_disabled(void); 18 19 void nvm_eeconfig_enable(void); 20 void nvm_eeconfig_disable(void); 21 22 typedef union debug_config_t debug_config_t; 23 void nvm_eeconfig_read_debug(debug_config_t *debug_config); 24 void nvm_eeconfig_update_debug(const debug_config_t *debug_config); 25 26 layer_state_t nvm_eeconfig_read_default_layer(void); 27 void nvm_eeconfig_update_default_layer(layer_state_t state); 28 29 typedef union keymap_config_t keymap_config_t; 30 void nvm_eeconfig_read_keymap(keymap_config_t *keymap_config); 31 void nvm_eeconfig_update_keymap(const keymap_config_t *keymap_config); 32 33 #ifdef AUDIO_ENABLE 34 typedef union audio_config_t audio_config_t; 35 void nvm_eeconfig_read_audio(audio_config_t *audio_config); 36 void nvm_eeconfig_update_audio(const audio_config_t *audio_config); 37 #endif // AUDIO_ENABLE 38 39 #ifdef UNICODE_COMMON_ENABLE 40 typedef union unicode_config_t unicode_config_t; 41 void nvm_eeconfig_read_unicode_mode(unicode_config_t *unicode_config); 42 void nvm_eeconfig_update_unicode_mode(const unicode_config_t *unicode_config); 43 #endif // UNICODE_COMMON_ENABLE 44 45 #ifdef BACKLIGHT_ENABLE 46 typedef union backlight_config_t backlight_config_t; 47 void nvm_eeconfig_read_backlight(backlight_config_t *backlight_config); 48 void nvm_eeconfig_update_backlight(const backlight_config_t *backlight_config); 49 #endif // BACKLIGHT_ENABLE 50 51 #ifdef STENO_ENABLE 52 uint8_t nvm_eeconfig_read_steno_mode(void); 53 void nvm_eeconfig_update_steno_mode(uint8_t val); 54 #endif // STENO_ENABLE 55 56 #ifdef RGB_MATRIX_ENABLE 57 typedef union rgb_config_t rgb_config_t; 58 void nvm_eeconfig_read_rgb_matrix(rgb_config_t *rgb_matrix_config); 59 void nvm_eeconfig_update_rgb_matrix(const rgb_config_t *rgb_matrix_config); 60 #endif 61 62 #ifdef LED_MATRIX_ENABLE 63 typedef union led_eeconfig_t led_eeconfig_t; 64 void nvm_eeconfig_read_led_matrix(led_eeconfig_t *led_matrix_config); 65 void nvm_eeconfig_update_led_matrix(const led_eeconfig_t *led_matrix_config); 66 #endif // LED_MATRIX_ENABLE 67 68 #ifdef RGBLIGHT_ENABLE 69 typedef union rgblight_config_t rgblight_config_t; 70 void nvm_eeconfig_read_rgblight(rgblight_config_t *rgblight_config); 71 void nvm_eeconfig_update_rgblight(const rgblight_config_t *rgblight_config); 72 #endif // RGBLIGHT_ENABLE 73 74 #if (EECONFIG_KB_DATA_SIZE) == 0 75 uint32_t nvm_eeconfig_read_kb(void); 76 void nvm_eeconfig_update_kb(uint32_t val); 77 #endif // (EECONFIG_KB_DATA_SIZE) == 0 78 79 #if (EECONFIG_USER_DATA_SIZE) == 0 80 uint32_t nvm_eeconfig_read_user(void); 81 void nvm_eeconfig_update_user(uint32_t val); 82 #endif // (EECONFIG_USER_DATA_SIZE) == 0 83 84 #ifdef HAPTIC_ENABLE 85 typedef union haptic_config_t haptic_config_t; 86 void nvm_eeconfig_read_haptic(haptic_config_t *haptic_config); 87 void nvm_eeconfig_update_haptic(const haptic_config_t *haptic_config); 88 #endif // HAPTIC_ENABLE 89 90 #ifdef CONNECTION_ENABLE 91 typedef union connection_config_t connection_config_t; 92 void nvm_eeconfig_read_connection(connection_config_t *config); 93 void nvm_eeconfig_update_connection(const connection_config_t *config); 94 #endif // CONNECTION_ENABLE 95 96 bool nvm_eeconfig_read_handedness(void); 97 void nvm_eeconfig_update_handedness(bool val); 98 99 #if (EECONFIG_KB_DATA_SIZE) > 0 100 bool nvm_eeconfig_is_kb_datablock_valid(void); 101 uint32_t nvm_eeconfig_read_kb_datablock(void *data, uint32_t offset, uint32_t length); 102 uint32_t nvm_eeconfig_update_kb_datablock(const void *data, uint32_t offset, uint32_t length); 103 void nvm_eeconfig_init_kb_datablock(void); 104 #endif // (EECONFIG_KB_DATA_SIZE) > 0 105 106 #if (EECONFIG_USER_DATA_SIZE) > 0 107 bool nvm_eeconfig_is_user_datablock_valid(void); 108 uint32_t nvm_eeconfig_read_user_datablock(void *data, uint32_t offset, uint32_t length); 109 uint32_t nvm_eeconfig_update_user_datablock(const void *data, uint32_t offset, uint32_t length); 110 void nvm_eeconfig_init_user_datablock(void); 111 #endif // (EECONFIG_USER_DATA_SIZE) > 0