Merge remote-tracking branch 'origin/master' into develop
This commit is contained in:
		
						commit
						db90919c7a
					
				
					 3 changed files with 60 additions and 54 deletions
				
			
		
							
								
								
									
										56
									
								
								users/drashna/bootmagic_better.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								users/drashna/bootmagic_better.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,56 @@
 | 
				
			||||||
 | 
					// Copyright 2020 Christopher Courtney, aka Drashna Jael're  (@drashna) <drashna@live.com>
 | 
				
			||||||
 | 
					// SPDX-License-Identifier: GPL-2.0-or-later
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "drashna.h"
 | 
				
			||||||
 | 
					#include "bootmagic_lite.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void bootmagic_lite(void) {
 | 
				
			||||||
 | 
					    bool perform_reset = false;
 | 
				
			||||||
 | 
					    // We need multiple scans because debouncing can't be turned off.
 | 
				
			||||||
 | 
					    matrix_scan();
 | 
				
			||||||
 | 
					#if defined(DEBOUNCE) && DEBOUNCE > 0
 | 
				
			||||||
 | 
					    wait_ms(DEBOUNCE * 2);
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					    wait_ms(30);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					    matrix_scan();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // If the configured key (commonly Esc) is held down on power up,
 | 
				
			||||||
 | 
					    // reset the EEPROM valid state and jump to bootloader.
 | 
				
			||||||
 | 
					    // This isn't very generalized, but we need something that doesn't
 | 
				
			||||||
 | 
					    // rely on user's keymaps in firmware or EEPROM.
 | 
				
			||||||
 | 
					    uint8_t row = BOOTMAGIC_LITE_ROW, col = BOOTMAGIC_LITE_COLUMN;
 | 
				
			||||||
 | 
					#if defined(BOOTMAGIC_LITE_EEPROM_ROW) && defined(BOOTMAGIC_LITE_EEPROM_COLUMN)
 | 
				
			||||||
 | 
					    uint8_t row_e = BOOTMAGIC_LITE_EEPROM_ROW, col_e = BOOTMAGIC_LITE_EEPROM_COLUMN;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(SPLIT_KEYBOARD) && defined(BOOTMAGIC_LITE_ROW_RIGHT) && defined(BOOTMAGIC_LITE_COLUMN_RIGHT)
 | 
				
			||||||
 | 
					    if (!is_keyboard_left()) {
 | 
				
			||||||
 | 
					        row = BOOTMAGIC_LITE_ROW_RIGHT;
 | 
				
			||||||
 | 
					        col = BOOTMAGIC_LITE_COLUMN_RIGHT;
 | 
				
			||||||
 | 
					#if defined(BOOTMAGIC_LITE_EEPROM_ROW) && defined(BOOTMAGIC_LITE_EEPROM_COLUMN) && defined(BOOTMAGIC_LITE_EEPROM_ROW_RIGHT) && defined(BOOTMAGIC_LITE_EEPROM_COLUMN_RIGHT)
 | 
				
			||||||
 | 
					        row_e = BOOTMAGIC_LITE_EEPROM_ROW_RIGHT;
 | 
				
			||||||
 | 
					        col_e = BOOTMAGIC_LITE_EEPROM_COLUMN_RIGHT;
 | 
				
			||||||
 | 
					#    endif
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(BOOTMAGIC_LITE_EEPROM_ROW) && defined(BOOTMAGIC_LITE_EEPROM_COLUMN)
 | 
				
			||||||
 | 
					    if (matrix_get_row(row_e) & (1 << col_e)) {
 | 
				
			||||||
 | 
					        eeconfig_disable();
 | 
				
			||||||
 | 
					        perform_reset = true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					    if (matrix_get_row(row) & (1 << col)) {
 | 
				
			||||||
 | 
					        perform_reset = true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					#ifdef STM32F411xE
 | 
				
			||||||
 | 
					    if (!readPin(A0)) {
 | 
				
			||||||
 | 
					        perform_reset = true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (perform_reset) {
 | 
				
			||||||
 | 
					        bootloader_jump();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -2,9 +2,6 @@
 | 
				
			||||||
// SPDX-License-Identifier: GPL-2.0-or-later
 | 
					// SPDX-License-Identifier: GPL-2.0-or-later
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "drashna.h"
 | 
					#include "drashna.h"
 | 
				
			||||||
#ifdef __AVR__
 | 
					 | 
				
			||||||
#    include <avr/wdt.h>
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
userspace_config_t userspace_config;
 | 
					userspace_config_t userspace_config;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -132,54 +129,3 @@ void keyboard_post_init_i2c(void) {
 | 
				
			||||||
    scan_timer = timer_read();
 | 
					    scan_timer = timer_read();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					 | 
				
			||||||
void bootmagic_lite(void) {
 | 
					 | 
				
			||||||
    bool perform_reset = false;
 | 
					 | 
				
			||||||
    // We need multiple scans because debouncing can't be turned off.
 | 
					 | 
				
			||||||
    matrix_scan();
 | 
					 | 
				
			||||||
#if defined(DEBOUNCE) && DEBOUNCE > 0
 | 
					 | 
				
			||||||
    wait_ms(DEBOUNCE * 2);
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
    wait_ms(30);
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
    matrix_scan();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // If the configured key (commonly Esc) is held down on power up,
 | 
					 | 
				
			||||||
    // reset the EEPROM valid state and jump to bootloader.
 | 
					 | 
				
			||||||
    // This isn't very generalized, but we need something that doesn't
 | 
					 | 
				
			||||||
    // rely on user's keymaps in firmware or EEPROM.
 | 
					 | 
				
			||||||
    uint8_t row = BOOTMAGIC_LITE_ROW, col = BOOTMAGIC_LITE_COLUMN;
 | 
					 | 
				
			||||||
#if defined(BOOTMAGIC_LITE_EEPROM_ROW) && defined(BOOTMAGIC_LITE_EEPROM_COLUMN)
 | 
					 | 
				
			||||||
    uint8_t row_e = BOOTMAGIC_LITE_EEPROM_ROW, col_e = BOOTMAGIC_LITE_EEPROM_COLUMN;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if defined(SPLIT_KEYBOARD) && defined(BOOTMAGIC_LITE_ROW_RIGHT) && defined(BOOTMAGIC_LITE_COLUMN_RIGHT)
 | 
					 | 
				
			||||||
    if (!is_keyboard_left()) {
 | 
					 | 
				
			||||||
        row = BOOTMAGIC_LITE_ROW_RIGHT;
 | 
					 | 
				
			||||||
        col = BOOTMAGIC_LITE_COLUMN_RIGHT;
 | 
					 | 
				
			||||||
#if defined(BOOTMAGIC_LITE_EEPROM_ROW) && defined(BOOTMAGIC_LITE_EEPROM_COLUMN) && defined(BOOTMAGIC_LITE_EEPROM_ROW_RIGHT) && defined(BOOTMAGIC_LITE_EEPROM_COLUMN_RIGHT)
 | 
					 | 
				
			||||||
        row_e = BOOTMAGIC_LITE_EEPROM_ROW_RIGHT;
 | 
					 | 
				
			||||||
        col_e = BOOTMAGIC_LITE_EEPROM_COLUMN_RIGHT;
 | 
					 | 
				
			||||||
#    endif
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if defined(BOOTMAGIC_LITE_EEPROM_ROW) && defined(BOOTMAGIC_LITE_EEPROM_COLUMN)
 | 
					 | 
				
			||||||
    if (matrix_get_row(row_e) & (1 << col_e)) {
 | 
					 | 
				
			||||||
        eeconfig_disable();
 | 
					 | 
				
			||||||
        perform_reset = true;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
    if (matrix_get_row(row) & (1 << col)) {
 | 
					 | 
				
			||||||
        perform_reset = true;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
#ifdef STM32F411xE
 | 
					 | 
				
			||||||
    if (!readPin(A0)) {
 | 
					 | 
				
			||||||
        perform_reset = true;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (perform_reset) {
 | 
					 | 
				
			||||||
        bootloader_jump();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -133,3 +133,7 @@ ifeq ($(strip $(AUTOCORRECTION_ENABLE)), yes)
 | 
				
			||||||
    $(shell touch $(USER_PATH)/keyrecords/autocorrection/autocorrection.c)
 | 
					    $(shell touch $(USER_PATH)/keyrecords/autocorrection/autocorrection.c)
 | 
				
			||||||
    OPT_DEFS += -DAUTOCORRECTION_ENABLE
 | 
					    OPT_DEFS += -DAUTOCORRECTION_ENABLE
 | 
				
			||||||
endif
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ifeq ($(strip $(BOOTMAGIC_ENABLE)), yes)
 | 
				
			||||||
 | 
					    SRC += bootmagic_better.c
 | 
				
			||||||
 | 
					endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue