Commit | Line | Data |
---|---|---|
a074364c | 1 | #include <stdint.h> |
2 | #include <stdbool.h> | |
4d4f7684 | 3 | #include "eeprom.h" |
a074364c | 4 | #include "eeconfig.h" |
c1970e28 | 5 | #include "action_layer.h" |
a074364c | 6 | |
f4094930 | 7 | #ifdef STM32_EEPROM_ENABLE |
b624f32f | 8 | # include "hal.h" |
9 | # include "eeprom_stm32.h" | |
621ce29a | 10 | #endif |
11 | ||
d13ada11 NB |
12 | #if defined(EEPROM_DRIVER) |
13 | # include "eeprom_driver.h" | |
14 | #endif | |
15 | ||
e885c793 | 16 | /** \brief eeconfig enable |
7c9d5ace | 17 | * |
18 | * FIXME: needs doc | |
19 | */ | |
b624f32f | 20 | __attribute__((weak)) void eeconfig_init_user(void) { |
21 | // Reset user EEPROM value to blank, rather than to a set value | |
22 | eeconfig_update_user(0); | |
e885c793 DJ |
23 | } |
24 | ||
b624f32f | 25 | __attribute__((weak)) void eeconfig_init_kb(void) { |
26 | // Reset Keyboard EEPROM value to blank, rather than to a set value | |
27 | eeconfig_update_kb(0); | |
e885c793 | 28 | |
b624f32f | 29 | eeconfig_init_user(); |
e885c793 DJ |
30 | } |
31 | ||
e885c793 DJ |
32 | /* |
33 | * FIXME: needs doc | |
34 | */ | |
35 | void eeconfig_init_quantum(void) { | |
f4094930 | 36 | #ifdef STM32_EEPROM_ENABLE |
2bfac351 | 37 | EEPROM_Erase(); |
d13ada11 NB |
38 | #endif |
39 | #if defined(EEPROM_DRIVER) | |
40 | eeprom_driver_erase(); | |
621ce29a | 41 | #endif |
b624f32f | 42 | eeprom_update_word(EECONFIG_MAGIC, EECONFIG_MAGIC_NUMBER); |
43 | eeprom_update_byte(EECONFIG_DEBUG, 0); | |
44 | eeprom_update_byte(EECONFIG_DEFAULT_LAYER, 0); | |
45 | default_layer_state = 0; | |
46 | eeprom_update_byte(EECONFIG_KEYMAP_LOWER_BYTE, 0); | |
47 | eeprom_update_byte(EECONFIG_KEYMAP_UPPER_BYTE, 0); | |
48 | eeprom_update_byte(EECONFIG_MOUSEKEY_ACCEL, 0); | |
49 | eeprom_update_byte(EECONFIG_BACKLIGHT, 0); | |
50 | eeprom_update_byte(EECONFIG_AUDIO, 0xFF); // On by default | |
51 | eeprom_update_dword(EECONFIG_RGBLIGHT, 0); | |
52 | eeprom_update_byte(EECONFIG_STENOMODE, 0); | |
53 | eeprom_update_dword(EECONFIG_HAPTIC, 0); | |
54 | eeprom_update_byte(EECONFIG_VELOCIKEY, 0); | |
55 | eeprom_update_dword(EECONFIG_RGB_MATRIX, 0); | |
56 | eeprom_update_byte(EECONFIG_RGB_MATRIX_SPEED, 0); | |
57 | ||
17794e0b JC |
58 | // TODO: Remove once ARM has a way to configure EECONFIG_HANDEDNESS |
59 | // within the emulated eeprom via dfu-util or another tool | |
60 | #if defined INIT_EE_HANDS_LEFT | |
a91c0c47 | 61 | # pragma message "Faking EE_HANDS for left hand" |
17794e0b JC |
62 | eeprom_update_byte(EECONFIG_HANDEDNESS, 1); |
63 | #elif defined INIT_EE_HANDS_RIGHT | |
a91c0c47 | 64 | # pragma message "Faking EE_HANDS for right hand" |
17794e0b JC |
65 | eeprom_update_byte(EECONFIG_HANDEDNESS, 0); |
66 | #endif | |
67 | ||
b624f32f | 68 | eeconfig_init_kb(); |
e885c793 DJ |
69 | } |
70 | ||
71 | /** \brief eeconfig initialization | |
72 | * | |
73 | * FIXME: needs doc | |
74 | */ | |
b624f32f | 75 | void eeconfig_init(void) { eeconfig_init_quantum(); } |
a074364c | 76 | |
7c9d5ace | 77 | /** \brief eeconfig enable |
78 | * | |
79 | * FIXME: needs doc | |
80 | */ | |
b624f32f | 81 | void eeconfig_enable(void) { eeprom_update_word(EECONFIG_MAGIC, EECONFIG_MAGIC_NUMBER); } |
a074364c | 82 | |
7c9d5ace | 83 | /** \brief eeconfig disable |
84 | * | |
85 | * FIXME: needs doc | |
86 | */ | |
b624f32f | 87 | void eeconfig_disable(void) { |
f4094930 | 88 | #ifdef STM32_EEPROM_ENABLE |
2bfac351 | 89 | EEPROM_Erase(); |
d13ada11 NB |
90 | #endif |
91 | #if defined(EEPROM_DRIVER) | |
92 | eeprom_driver_erase(); | |
621ce29a | 93 | #endif |
e885c793 | 94 | eeprom_update_word(EECONFIG_MAGIC, EECONFIG_MAGIC_NUMBER_OFF); |
a074364c | 95 | } |
96 | ||
7c9d5ace | 97 | /** \brief eeconfig is enabled |
98 | * | |
99 | * FIXME: needs doc | |
100 | */ | |
b624f32f | 101 | bool eeconfig_is_enabled(void) { return (eeprom_read_word(EECONFIG_MAGIC) == EECONFIG_MAGIC_NUMBER); } |
a074364c | 102 | |
e885c793 DJ |
103 | /** \brief eeconfig is disabled |
104 | * | |
105 | * FIXME: needs doc | |
106 | */ | |
b624f32f | 107 | bool eeconfig_is_disabled(void) { return (eeprom_read_word(EECONFIG_MAGIC) == EECONFIG_MAGIC_NUMBER_OFF); } |
e885c793 | 108 | |
7c9d5ace | 109 | /** \brief eeconfig read debug |
110 | * | |
111 | * FIXME: needs doc | |
112 | */ | |
b624f32f | 113 | uint8_t eeconfig_read_debug(void) { return eeprom_read_byte(EECONFIG_DEBUG); } |
7c9d5ace | 114 | /** \brief eeconfig update debug |
115 | * | |
116 | * FIXME: needs doc | |
117 | */ | |
620ac4b2 | 118 | void eeconfig_update_debug(uint8_t val) { eeprom_update_byte(EECONFIG_DEBUG, val); } |
a074364c | 119 | |
7c9d5ace | 120 | /** \brief eeconfig read default layer |
121 | * | |
122 | * FIXME: needs doc | |
123 | */ | |
b624f32f | 124 | uint8_t eeconfig_read_default_layer(void) { return eeprom_read_byte(EECONFIG_DEFAULT_LAYER); } |
7c9d5ace | 125 | /** \brief eeconfig update default layer |
126 | * | |
127 | * FIXME: needs doc | |
128 | */ | |
620ac4b2 | 129 | void eeconfig_update_default_layer(uint8_t val) { eeprom_update_byte(EECONFIG_DEFAULT_LAYER, val); } |
a074364c | 130 | |
7c9d5ace | 131 | /** \brief eeconfig read keymap |
132 | * | |
133 | * FIXME: needs doc | |
134 | */ | |
b624f32f | 135 | uint16_t eeconfig_read_keymap(void) { return (eeprom_read_byte(EECONFIG_KEYMAP_LOWER_BYTE) | (eeprom_read_byte(EECONFIG_KEYMAP_UPPER_BYTE) << 8)); } |
7c9d5ace | 136 | /** \brief eeconfig update keymap |
137 | * | |
138 | * FIXME: needs doc | |
139 | */ | |
d534c72a SW |
140 | void eeconfig_update_keymap(uint16_t val) { |
141 | eeprom_update_byte(EECONFIG_KEYMAP_LOWER_BYTE, val & 0xFF); | |
b624f32f | 142 | eeprom_update_byte(EECONFIG_KEYMAP_UPPER_BYTE, (val >> 8) & 0xFF); |
d534c72a | 143 | } |
a074364c | 144 | |
7c9d5ace | 145 | /** \brief eeconfig read backlight |
146 | * | |
147 | * FIXME: needs doc | |
148 | */ | |
b624f32f | 149 | uint8_t eeconfig_read_backlight(void) { return eeprom_read_byte(EECONFIG_BACKLIGHT); } |
7c9d5ace | 150 | /** \brief eeconfig update backlight |
151 | * | |
152 | * FIXME: needs doc | |
153 | */ | |
620ac4b2 | 154 | void eeconfig_update_backlight(uint8_t val) { eeprom_update_byte(EECONFIG_BACKLIGHT, val); } |
0faa18ea | 155 | |
7c9d5ace | 156 | /** \brief eeconfig read audio |
157 | * | |
158 | * FIXME: needs doc | |
159 | */ | |
b624f32f | 160 | uint8_t eeconfig_read_audio(void) { return eeprom_read_byte(EECONFIG_AUDIO); } |
7c9d5ace | 161 | /** \brief eeconfig update audio |
162 | * | |
163 | * FIXME: needs doc | |
164 | */ | |
620ac4b2 | 165 | void eeconfig_update_audio(uint8_t val) { eeprom_update_byte(EECONFIG_AUDIO, val); } |
e885c793 | 166 | |
e885c793 DJ |
167 | /** \brief eeconfig read kb |
168 | * | |
169 | * FIXME: needs doc | |
170 | */ | |
b624f32f | 171 | uint32_t eeconfig_read_kb(void) { return eeprom_read_dword(EECONFIG_KEYBOARD); } |
e885c793 DJ |
172 | /** \brief eeconfig update kb |
173 | * | |
174 | * FIXME: needs doc | |
175 | */ | |
e885c793 | 176 | void eeconfig_update_kb(uint32_t val) { eeprom_update_dword(EECONFIG_KEYBOARD, val); } |
ad8dbd5c | 177 | |
e885c793 DJ |
178 | /** \brief eeconfig read user |
179 | * | |
180 | * FIXME: needs doc | |
181 | */ | |
b624f32f | 182 | uint32_t eeconfig_read_user(void) { return eeprom_read_dword(EECONFIG_USER); } |
e885c793 DJ |
183 | /** \brief eeconfig update user |
184 | * | |
185 | * FIXME: needs doc | |
186 | */ | |
187 | void eeconfig_update_user(uint32_t val) { eeprom_update_dword(EECONFIG_USER, val); } | |
188 | ||
ad8dbd5c JC |
189 | /** \brief eeconfig read haptic |
190 | * | |
191 | * FIXME: needs doc | |
192 | */ | |
b624f32f | 193 | uint32_t eeconfig_read_haptic(void) { return eeprom_read_dword(EECONFIG_HAPTIC); } |
ad8dbd5c | 194 | /** \brief eeconfig update haptic |
2cee371b | 195 | * |
196 | * FIXME: needs doc | |
197 | */ | |
198 | void eeconfig_update_haptic(uint32_t val) { eeprom_update_dword(EECONFIG_HAPTIC, val); } | |
ad8dbd5c JC |
199 | |
200 | /** \brief eeconfig read split handedness | |
201 | * | |
202 | * FIXME: needs doc | |
203 | */ | |
204 | bool eeconfig_read_handedness(void) { return !!eeprom_read_byte(EECONFIG_HANDEDNESS); } | |
205 | /** \brief eeconfig update split handedness | |
206 | * | |
207 | * FIXME: needs doc | |
208 | */ | |
209 | void eeconfig_update_handedness(bool val) { eeprom_update_byte(EECONFIG_HANDEDNESS, !!val); } |