6 #ifdef STM32_EEPROM_ENABLE
8 # include "eeprom_stm32.h"
11 extern uint32_t default_layer_state
;
12 /** \brief eeconfig enable
16 __attribute__((weak
)) void eeconfig_init_user(void) {
17 // Reset user EEPROM value to blank, rather than to a set value
18 eeconfig_update_user(0);
21 __attribute__((weak
)) void eeconfig_init_kb(void) {
22 // Reset Keyboard EEPROM value to blank, rather than to a set value
23 eeconfig_update_kb(0);
31 void eeconfig_init_quantum(void) {
32 #ifdef STM32_EEPROM_ENABLE
35 eeprom_update_word(EECONFIG_MAGIC
, EECONFIG_MAGIC_NUMBER
);
36 eeprom_update_byte(EECONFIG_DEBUG
, 0);
37 eeprom_update_byte(EECONFIG_DEFAULT_LAYER
, 0);
38 default_layer_state
= 0;
39 eeprom_update_byte(EECONFIG_KEYMAP_LOWER_BYTE
, 0);
40 eeprom_update_byte(EECONFIG_KEYMAP_UPPER_BYTE
, 0);
41 eeprom_update_byte(EECONFIG_MOUSEKEY_ACCEL
, 0);
42 eeprom_update_byte(EECONFIG_BACKLIGHT
, 0);
43 eeprom_update_byte(EECONFIG_AUDIO
, 0xFF); // On by default
44 eeprom_update_dword(EECONFIG_RGBLIGHT
, 0);
45 eeprom_update_byte(EECONFIG_STENOMODE
, 0);
46 eeprom_update_dword(EECONFIG_HAPTIC
, 0);
47 eeprom_update_byte(EECONFIG_VELOCIKEY
, 0);
48 eeprom_update_dword(EECONFIG_RGB_MATRIX
, 0);
49 eeprom_update_byte(EECONFIG_RGB_MATRIX_SPEED
, 0);
51 // TODO: Remove once ARM has a way to configure EECONFIG_HANDEDNESS
52 // within the emulated eeprom via dfu-util or another tool
53 #if defined INIT_EE_HANDS_LEFT
54 #pragma message "Faking EE_HANDS for left hand"
55 eeprom_update_byte(EECONFIG_HANDEDNESS
, 1);
56 #elif defined INIT_EE_HANDS_RIGHT
57 #pragma message "Faking EE_HANDS for right hand"
58 eeprom_update_byte(EECONFIG_HANDEDNESS
, 0);
64 /** \brief eeconfig initialization
68 void eeconfig_init(void) { eeconfig_init_quantum(); }
70 /** \brief eeconfig enable
74 void eeconfig_enable(void) { eeprom_update_word(EECONFIG_MAGIC
, EECONFIG_MAGIC_NUMBER
); }
76 /** \brief eeconfig disable
80 void eeconfig_disable(void) {
81 #ifdef STM32_EEPROM_ENABLE
84 eeprom_update_word(EECONFIG_MAGIC
, EECONFIG_MAGIC_NUMBER_OFF
);
87 /** \brief eeconfig is enabled
91 bool eeconfig_is_enabled(void) { return (eeprom_read_word(EECONFIG_MAGIC
) == EECONFIG_MAGIC_NUMBER
); }
93 /** \brief eeconfig is disabled
97 bool eeconfig_is_disabled(void) { return (eeprom_read_word(EECONFIG_MAGIC
) == EECONFIG_MAGIC_NUMBER_OFF
); }
99 /** \brief eeconfig read debug
103 uint8_t eeconfig_read_debug(void) { return eeprom_read_byte(EECONFIG_DEBUG
); }
104 /** \brief eeconfig update debug
108 void eeconfig_update_debug(uint8_t val
) { eeprom_update_byte(EECONFIG_DEBUG
, val
); }
110 /** \brief eeconfig read default layer
114 uint8_t eeconfig_read_default_layer(void) { return eeprom_read_byte(EECONFIG_DEFAULT_LAYER
); }
115 /** \brief eeconfig update default layer
119 void eeconfig_update_default_layer(uint8_t val
) { eeprom_update_byte(EECONFIG_DEFAULT_LAYER
, val
); }
121 /** \brief eeconfig read keymap
125 uint16_t eeconfig_read_keymap(void) { return (eeprom_read_byte(EECONFIG_KEYMAP_LOWER_BYTE
) | (eeprom_read_byte(EECONFIG_KEYMAP_UPPER_BYTE
) << 8)); }
126 /** \brief eeconfig update keymap
130 void eeconfig_update_keymap(uint16_t val
) {
131 eeprom_update_byte(EECONFIG_KEYMAP_LOWER_BYTE
, val
& 0xFF);
132 eeprom_update_byte(EECONFIG_KEYMAP_UPPER_BYTE
, (val
>> 8) & 0xFF);
135 /** \brief eeconfig read backlight
139 uint8_t eeconfig_read_backlight(void) { return eeprom_read_byte(EECONFIG_BACKLIGHT
); }
140 /** \brief eeconfig update backlight
144 void eeconfig_update_backlight(uint8_t val
) { eeprom_update_byte(EECONFIG_BACKLIGHT
, val
); }
146 /** \brief eeconfig read audio
150 uint8_t eeconfig_read_audio(void) { return eeprom_read_byte(EECONFIG_AUDIO
); }
151 /** \brief eeconfig update audio
155 void eeconfig_update_audio(uint8_t val
) { eeprom_update_byte(EECONFIG_AUDIO
, val
); }
157 /** \brief eeconfig read kb
161 uint32_t eeconfig_read_kb(void) { return eeprom_read_dword(EECONFIG_KEYBOARD
); }
162 /** \brief eeconfig update kb
166 void eeconfig_update_kb(uint32_t val
) { eeprom_update_dword(EECONFIG_KEYBOARD
, val
); }
168 /** \brief eeconfig read user
172 uint32_t eeconfig_read_user(void) { return eeprom_read_dword(EECONFIG_USER
); }
173 /** \brief eeconfig update user
177 void eeconfig_update_user(uint32_t val
) { eeprom_update_dword(EECONFIG_USER
, val
); }
179 /** \brief eeconfig read haptic
183 uint32_t eeconfig_read_haptic(void) { return eeprom_read_dword(EECONFIG_HAPTIC
); }
184 /** \brief eeconfig update haptic
188 void eeconfig_update_haptic(uint32_t val
) { eeprom_update_dword(EECONFIG_HAPTIC
, val
); }
190 /** \brief eeconfig read split handedness
194 bool eeconfig_read_handedness(void) { return !!eeprom_read_byte(EECONFIG_HANDEDNESS
); }
195 /** \brief eeconfig update split handedness
199 void eeconfig_update_handedness(bool val
) { eeprom_update_byte(EECONFIG_HANDEDNESS
, !!val
); }