You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

138 lines
4.0 KiB

/*
Copyright 2013 Jun Wako <wakojun@gmail.com>
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 <http://www.gnu.org/licenses/>.
*/
#ifndef EECONFIG_H
#define EECONFIG_H
#include <stdint.h>
#include <stdbool.h>
#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