diff options
| -rw-r--r-- | common/bootmagic.c | 4 | ||||
| -rw-r--r-- | common/bootmagic.h | 4 | ||||
| -rw-r--r-- | common/eeconfig.c | 14 | ||||
| -rw-r--r-- | common/eeconfig.h | 10 | ||||
| -rw-r--r-- | common/keyboard.c | 11 | 
5 files changed, 31 insertions, 12 deletions
| diff --git a/common/bootmagic.c b/common/bootmagic.c index 46fbc180a..388099e2e 100644 --- a/common/bootmagic.c +++ b/common/bootmagic.c @@ -10,12 +10,12 @@  void bootmagic(void)  { +    if (!BOOTMAGIC_IS_ENABLED()) { return; } +      /* do scans in case of bounce */      uint8_t scan = 100;      while (scan--) { matrix_scan(); _delay_ms(1); } -    if (!BOOTMAGIC_IS_ENABLE()) { return; } -      if (bootmagic_scan_keycode(BOOTMAGIC_BOOTLOADER_KEY)) {          bootloader_jump();      } diff --git a/common/bootmagic.h b/common/bootmagic.h index d32a5bef8..5791b221f 100644 --- a/common/bootmagic.h +++ b/common/bootmagic.h @@ -2,8 +2,8 @@  #define BOOTMAGIC_H -#ifndef BOOTMAGIC_IS_ENABLE -#define BOOTMAGIC_IS_ENABLE()           true +#ifndef BOOTMAGIC_IS_ENABLED +#define BOOTMAGIC_IS_ENABLED()          true  #endif  /* kick up bootloader */ diff --git a/common/eeconfig.c b/common/eeconfig.c index f536dc06c..cea3810ee 100644 --- a/common/eeconfig.c +++ b/common/eeconfig.c @@ -13,9 +13,19 @@ void eeconfig_init(void)      eeprom_write_byte(EECONFIG_MOUSEKEY_ACCEL, 0);  } -bool eeconfig_initialized(void) +void eeconfig_enable(void)  { -    return (eeprom_read_word(EECONFIG_MAGIC) == EECONFIG_MAGIC_NUMBER); +    eeprom_write_word(EECONFIG_MAGIC, EECONFIG_MAGIC_NUMBER); +} + +void eeconfig_disable(void) +{ +    eeprom_write_word(EECONFIG_MAGIC, 0xFFFF); +} + +bool eeconfig_is_enabled(void) +{ +    return EECONFIG_IS_ENABLED() && (eeprom_read_word(EECONFIG_MAGIC) == EECONFIG_MAGIC_NUMBER);  }  uint8_t eeconfig_read_debug(void)      { return eeprom_read_byte(EECONFIG_DEBUG); } diff --git a/common/eeconfig.h b/common/eeconfig.h index 2786995a2..3e195478b 100644 --- a/common/eeconfig.h +++ b/common/eeconfig.h @@ -20,6 +20,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  #include <stdint.h> +#ifndef EECONFIG_IS_ENABLED +#define EECONFIG_IS_ENABLED()       true +#endif +  #define EECONFIG_MAGIC_NUMBER                   (uint16_t)0xFEED  /* eeprom parameteter address */ @@ -61,10 +65,14 @@ typedef union {      };  } keyconf; -bool eeconfig_initialized(void); +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_write_debug(uint8_t val); diff --git a/common/keyboard.c b/common/keyboard.c index 0a0bacd43..1acb79861 100644 --- a/common/keyboard.c +++ b/common/keyboard.c @@ -66,13 +66,14 @@ void keyboard_init(void)      bootmagic(); -    if (eeconfig_initialized()) { +    if (eeconfig_is_enabled()) {          uint8_t config;          config = eeconfig_read_debug(); -        debug_enable = (config & EECONFIG_DEBUG_ENABLE); -        debug_matrix = (config & EECONFIG_DEBUG_MATRIX); -        debug_keyboard = (config & EECONFIG_DEBUG_KEYBOARD); -        debug_mouse = (config & EECONFIG_DEBUG_MOUSE); +        // ignored if debug is enabled by program before. +        if (!debug_enable)   debug_enable   = (config & EECONFIG_DEBUG_ENABLE); +        if (!debug_matrix)   debug_matrix   = (config & EECONFIG_DEBUG_MATRIX); +        if (!debug_keyboard) debug_keyboard = (config & EECONFIG_DEBUG_KEYBOARD); +        if (!debug_mouse)    debug_mouse    = (config & EECONFIG_DEBUG_MOUSE);      } else {          eeconfig_init();      } | 
