aboutsummaryrefslogtreecommitdiff
path: root/quantum/bootmagic
diff options
context:
space:
mode:
Diffstat (limited to 'quantum/bootmagic')
-rw-r--r--quantum/bootmagic/bootmagic.c (renamed from quantum/bootmagic/bootmagic_lite.c)54
-rw-r--r--quantum/bootmagic/bootmagic.h22
-rw-r--r--quantum/bootmagic/bootmagic_lite.h25
-rw-r--r--quantum/bootmagic/magic.c54
-rw-r--r--quantum/bootmagic/magic.h18
5 files changed, 52 insertions, 121 deletions
diff --git a/quantum/bootmagic/bootmagic_lite.c b/quantum/bootmagic/bootmagic.c
index efce6bfd12..419ec5229e 100644
--- a/quantum/bootmagic/bootmagic_lite.c
+++ b/quantum/bootmagic/bootmagic.c
@@ -20,44 +20,54 @@
#include "eeconfig.h"
#include "bootloader.h"
+#ifndef BOOTMAGIC_DEBOUNCE
+# if defined(DEBOUNCE) && DEBOUNCE > 0
+# define BOOTMAGIC_DEBOUNCE (DEBOUNCE * 2)
+# else
+# define BOOTMAGIC_DEBOUNCE 30
+# endif
+#endif
+
/** \brief Reset eeprom
*
* ...just incase someone wants to only change the eeprom behaviour
*/
-__attribute__((weak)) void bootmagic_lite_reset_eeprom(void) {
+__attribute__((weak)) void bootmagic_reset_eeprom(void) {
eeconfig_disable();
}
-/** \brief The lite version of TMK's bootmagic based on Wilba.
- *
- * 100% less potential for accidentally making the keyboard do stupid things.
+/** \brief Decide reboot based on current matrix state
*/
-__attribute__((weak)) void bootmagic_lite(void) {
- // 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();
-
+__attribute__((weak)) bool bootmagic_should_reset(void) {
// 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;
- uint8_t col = BOOTMAGIC_LITE_COLUMN;
+ uint8_t row = BOOTMAGIC_ROW;
+ uint8_t col = BOOTMAGIC_COLUMN;
-#if defined(SPLIT_KEYBOARD) && defined(BOOTMAGIC_LITE_ROW_RIGHT) && defined(BOOTMAGIC_LITE_COLUMN_RIGHT)
+#if defined(SPLIT_KEYBOARD) && defined(BOOTMAGIC_ROW_RIGHT) && defined(BOOTMAGIC_COLUMN_RIGHT)
if (!is_keyboard_left()) {
- row = BOOTMAGIC_LITE_ROW_RIGHT;
- col = BOOTMAGIC_LITE_COLUMN_RIGHT;
+ row = BOOTMAGIC_ROW_RIGHT;
+ col = BOOTMAGIC_COLUMN_RIGHT;
}
#endif
- if (matrix_get_row(row) & (1 << col)) {
- bootmagic_lite_reset_eeprom();
+ return matrix_get_row(row) & (1 << col);
+}
+
+/** \brief The abridged version of TMK's bootmagic based on Wilba.
+ *
+ * 100% less potential for accidentally making the keyboard do stupid things.
+ */
+__attribute__((weak)) void bootmagic_scan(void) {
+ // We need multiple scans because debouncing can't be turned off.
+ matrix_scan();
+ wait_ms(BOOTMAGIC_DEBOUNCE);
+ matrix_scan();
+
+ if (bootmagic_should_reset()) {
+ bootmagic_reset_eeprom();
// Jump to bootloader.
bootloader_jump();
@@ -65,5 +75,5 @@ __attribute__((weak)) void bootmagic_lite(void) {
}
void bootmagic(void) {
- bootmagic_lite();
+ bootmagic_scan();
}
diff --git a/quantum/bootmagic/bootmagic.h b/quantum/bootmagic/bootmagic.h
index db826025ce..ee6fb49748 100644
--- a/quantum/bootmagic/bootmagic.h
+++ b/quantum/bootmagic/bootmagic.h
@@ -15,8 +15,26 @@
*/
#pragma once
-#if defined(BOOTMAGIC_LITE)
-# include "bootmagic_lite.h"
+// ======== DEPRECATED DEFINES - DO NOT USE ========
+#ifdef BOOTMAGIC_LITE_ROW
+# define BOOTMAGIC_ROW BOOTMAGIC_LITE_ROW
+#endif
+#ifdef BOOTMAGIC_LITE_COLUMN
+# define BOOTMAGIC_COLUMN BOOTMAGIC_LITE_COLUMN
+#endif
+#ifdef BOOTMAGIC_LITE_ROW_RIGHT
+# define BOOTMAGIC_ROW_RIGHT BOOTMAGIC_LITE_ROW_RIGHT
+#endif
+#ifdef BOOTMAGIC_LITE_COLUMN_RIGHT
+# define BOOTMAGIC_COLUMN_RIGHT BOOTMAGIC_LITE_COLUMN_RIGHT
+#endif
+// ========
+
+#ifndef BOOTMAGIC_COLUMN
+# define BOOTMAGIC_COLUMN 0
+#endif
+#ifndef BOOTMAGIC_ROW
+# define BOOTMAGIC_ROW 0
#endif
void bootmagic(void);
diff --git a/quantum/bootmagic/bootmagic_lite.h b/quantum/bootmagic/bootmagic_lite.h
deleted file mode 100644
index 17777e6b4a..0000000000
--- a/quantum/bootmagic/bootmagic_lite.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Copyright 2021 QMK
- *
- * 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 3 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/>.
- */
-#pragma once
-
-#ifndef BOOTMAGIC_LITE_COLUMN
-# define BOOTMAGIC_LITE_COLUMN 0
-#endif
-#ifndef BOOTMAGIC_LITE_ROW
-# define BOOTMAGIC_LITE_ROW 0
-#endif
-
-void bootmagic_lite(void);
diff --git a/quantum/bootmagic/magic.c b/quantum/bootmagic/magic.c
deleted file mode 100644
index d68df3fa58..0000000000
--- a/quantum/bootmagic/magic.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Copyright 2021 QMK
- *
- * 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 3 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/>.
- */
-#include <stdint.h>
-#include <stdbool.h>
-#include "wait.h"
-#include "matrix.h"
-#include "bootloader.h"
-#include "debug.h"
-#include "keycode_config.h"
-#include "host.h"
-#include "action_layer.h"
-#include "eeconfig.h"
-#include "bootmagic.h"
-
-keymap_config_t keymap_config;
-
-__attribute__((weak)) void bootmagic(void) {}
-
-/** \brief Magic
- *
- * FIXME: Needs doc
- */
-void magic(void) {
- /* check signature */
- if (!eeconfig_is_enabled()) {
- eeconfig_init();
- }
-
- /* init globals */
- debug_config.raw = eeconfig_read_debug();
- keymap_config.raw = eeconfig_read_keymap();
-
- bootmagic();
-
- /* read here just incase bootmagic process changed its value */
- layer_state_t default_layer = (layer_state_t)eeconfig_read_default_layer();
- default_layer_set(default_layer);
-
- /* Also initialize layer state to trigger callback functions for layer_state */
- layer_state_set_kb((layer_state_t)layer_state);
-}
diff --git a/quantum/bootmagic/magic.h b/quantum/bootmagic/magic.h
deleted file mode 100644
index 2c3969b85c..0000000000
--- a/quantum/bootmagic/magic.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright 2021 QMK
- *
- * 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 3 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/>.
- */
-#pragma once
-
-void magic(void);