/* Copyright 2013 Jun Wako This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef EECONFIG_H #define EECONFIG_H #include #include #define EEPROM_CONFIG_VERSION 1 #define EEPROM_HEADER_SIZE 4 #define EEPROM_SIGNATURE (0xFEED - EEPROM_CONFIG_VERSION) #define EEPROM_SIGNATURE_ADDR (uint16_t *)0 #define EEPROM_ENABLED_FEATURES eeprom_enabled_features #define EEPROM_ENABLED_FEATURES_ADDR (uint16_t *)2 enum eeprom_optional_features { eeprom_backlight_option, eeprom_audio_option, eeprom_rgblight_option, eeprom_stenomode_option, eeprom_free_range_option }; static const uint16_t eeprom_enabled_features = #ifdef BACKLIGHT_ENABLE (1 << eeprom_backlight_option) | #endif #ifdef AUDIO_ENABLE (1 << eeprom_audio_option) | #endif #ifdef RGBLIGHT_ENABLE (1 << eeprom_rgblight_option) | #endif #ifdef STENO_ENABLE (1 << eeprom_stenomode_option) | #endif 0; typedef enum eeprom_features { eeprom_debug, eeprom_default_layer, eeprom_keymap, eeprom_mousekey_accel, eeprom_backlight, eeprom_audio, eeprom_rgblight, eeprom_unicodemode, eeprom_stenomode, eeprom_free_range } eeprom_feature_t; typedef uint8_t eeprom_debug_t; typedef uint8_t eeprom_default_layer_t; typedef uint8_t eeprom_keymap_t; typedef uint8_t eeprom_mousekey_accel_t; typedef uint8_t eeprom_backlight_t; typedef uint8_t eeprom_audio_t; typedef uint32_t eeprom_rgblight_t; typedef uint8_t eeprom_unicodemode_t; typedef uint8_t eeprom_stenomode_t; #define typeof(n) n ## _t /* eeprom parameteter address */ #define EECONFIG_MAGIC (uint16_t *)0 #define EECONFIG_DEBUG (uint8_t *)2 #define EECONFIG_DEFAULT_LAYER (uint8_t *)3 #define EECONFIG_KEYMAP (uint8_t *)4 #define EECONFIG_MOUSEKEY_ACCEL (uint8_t *)5 #define EECONFIG_BACKLIGHT (uint8_t *)6 #define EECONFIG_AUDIO (uint8_t *)7 #define EECONFIG_RGBLIGHT (uint32_t *)8 #define EECONFIG_UNICODEMODE (uint8_t *)12 #define EECONFIG_STENOMODE (uint8_t *)13 /* debug bit */ #define EECONFIG_DEBUG_ENABLE (1<<0) #define EECONFIG_DEBUG_MATRIX (1<<1) #define EECONFIG_DEBUG_KEYBOARD (1<<2) #define EECONFIG_DEBUG_MOUSE (1<<3) /* keyconf bit */ #define EECONFIG_KEYMAP_SWAP_CONTROL_CAPSLOCK (1<<0) #define EECONFIG_KEYMAP_CAPSLOCK_TO_CONTROL (1<<1) #define EECONFIG_KEYMAP_SWAP_LALT_LGUI (1<<2) #define EECONFIG_KEYMAP_SWAP_RALT_RGUI (1<<3) #define EECONFIG_KEYMAP_NO_GUI (1<<4) #define EECONFIG_KEYMAP_SWAP_GRAVE_ESC (1<<5) #define EECONFIG_KEYMAP_SWAP_BACKSLASH_BACKSPACE (1<<6) #define EECONFIG_KEYMAP_NKRO (1<<7) bool eeconfig_is_enabled(void); void eeconfig_init(void); void eeconfig_enable(void); void eeconfig_disable(void); uint8_t eeconfig_read_debug(void); void eeconfig_update_debug(uint8_t val); uint8_t eeconfig_read_default_layer(void); void eeconfig_update_default_layer(uint8_t val); uint8_t eeconfig_read_keymap(void); void eeconfig_update_keymap(uint8_t val); #ifdef BACKLIGHT_ENABLE uint8_t eeconfig_read_backlight(void); void eeconfig_update_backlight(uint8_t val); #endif #ifdef AUDIO_ENABLE uint8_t eeconfig_read_audio(void); void eeconfig_update_audio(uint8_t val); #endif #endif