]> git.donarmstrong.com Git - qmk_firmware.git/blob - tmk_core/common/eeconfig.c
STM32 EEPROM Emulation (#3741)
[qmk_firmware.git] / tmk_core / common / eeconfig.c
1 #include <stdint.h>
2 #include <stdbool.h>
3 #include "eeprom.h"
4 #include "eeconfig.h"
5
6 #ifdef STM32F303xC
7 #include "hal.h"
8 #include "eeprom_stm32.h"
9 #endif
10
11 /** \brief eeconfig initialization
12  *
13  * FIXME: needs doc
14  */
15 void eeconfig_init(void)
16 {
17 #ifdef STM32F303xC
18     EEPROM_format();
19 #endif
20     eeprom_update_word(EECONFIG_MAGIC,          EECONFIG_MAGIC_NUMBER);
21     eeprom_update_byte(EECONFIG_DEBUG,          0);
22     eeprom_update_byte(EECONFIG_DEFAULT_LAYER,  0);
23     eeprom_update_byte(EECONFIG_KEYMAP,         0);
24     eeprom_update_byte(EECONFIG_MOUSEKEY_ACCEL, 0);
25 #ifdef BACKLIGHT_ENABLE
26     eeprom_update_byte(EECONFIG_BACKLIGHT,      0);
27 #endif
28 #ifdef AUDIO_ENABLE
29     eeprom_update_byte(EECONFIG_AUDIO,             0xFF); // On by default
30 #endif
31 #if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
32     eeprom_update_dword(EECONFIG_RGBLIGHT,      0);
33 #endif
34 #ifdef STENO_ENABLE
35     eeprom_update_byte(EECONFIG_STENOMODE,      0);
36 #endif
37 }
38
39 /** \brief eeconfig enable
40  *
41  * FIXME: needs doc
42  */
43 void eeconfig_enable(void)
44 {
45     eeprom_update_word(EECONFIG_MAGIC, EECONFIG_MAGIC_NUMBER);
46 }
47
48 /** \brief eeconfig disable
49  *
50  * FIXME: needs doc
51  */
52 void eeconfig_disable(void)
53 {
54 #ifdef STM32F303xC
55     EEPROM_format();
56 #endif
57     eeprom_update_word(EECONFIG_MAGIC, 0xFFFF);
58 }
59
60 /** \brief eeconfig is enabled
61  *
62  * FIXME: needs doc
63  */
64 bool eeconfig_is_enabled(void)
65 {
66     return (eeprom_read_word(EECONFIG_MAGIC) == EECONFIG_MAGIC_NUMBER);
67 }
68
69 /** \brief eeconfig read debug
70  *
71  * FIXME: needs doc
72  */
73 uint8_t eeconfig_read_debug(void)      { return eeprom_read_byte(EECONFIG_DEBUG); }
74 /** \brief eeconfig update debug
75  *
76  * FIXME: needs doc
77  */
78 void eeconfig_update_debug(uint8_t val) { eeprom_update_byte(EECONFIG_DEBUG, val); }
79
80 /** \brief eeconfig read default layer
81  *
82  * FIXME: needs doc
83  */
84 uint8_t eeconfig_read_default_layer(void)      { return eeprom_read_byte(EECONFIG_DEFAULT_LAYER); }
85 /** \brief eeconfig update default layer
86  *
87  * FIXME: needs doc
88  */
89 void eeconfig_update_default_layer(uint8_t val) { eeprom_update_byte(EECONFIG_DEFAULT_LAYER, val); }
90
91 /** \brief eeconfig read keymap
92  *
93  * FIXME: needs doc
94  */
95 uint8_t eeconfig_read_keymap(void)      { return eeprom_read_byte(EECONFIG_KEYMAP); }
96 /** \brief eeconfig update keymap
97  *
98  * FIXME: needs doc
99  */
100 void eeconfig_update_keymap(uint8_t val) { eeprom_update_byte(EECONFIG_KEYMAP, val); }
101
102 #ifdef BACKLIGHT_ENABLE
103 /** \brief eeconfig read backlight
104  *
105  * FIXME: needs doc
106  */
107 uint8_t eeconfig_read_backlight(void)      { return eeprom_read_byte(EECONFIG_BACKLIGHT); }
108 /** \brief eeconfig update backlight
109  *
110  * FIXME: needs doc
111  */
112 void eeconfig_update_backlight(uint8_t val) { eeprom_update_byte(EECONFIG_BACKLIGHT, val); }
113 #endif
114
115 #ifdef AUDIO_ENABLE
116 /** \brief eeconfig read audio
117  *
118  * FIXME: needs doc
119  */
120 uint8_t eeconfig_read_audio(void)      { return eeprom_read_byte(EECONFIG_AUDIO); }
121 /** \brief eeconfig update audio
122  *
123  * FIXME: needs doc
124  */
125 void eeconfig_update_audio(uint8_t val) { eeprom_update_byte(EECONFIG_AUDIO, val); }
126 #endif