From d0b691df0ee74863ca54ca697aa4d4212cf401a7 Mon Sep 17 00:00:00 2001 From: alex-ong Date: Sat, 26 Jan 2019 17:03:46 +1100 Subject: DO NOT USE - debounce successfully compiled. --- common_features.mk | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'common_features.mk') diff --git a/common_features.mk b/common_features.mk index 8c3361732c..9b9d017a7b 100644 --- a/common_features.mk +++ b/common_features.mk @@ -249,11 +249,15 @@ endif include $(DRIVER_PATH)/qwiic/qwiic.mk + QUANTUM_SRC:= \ $(QUANTUM_DIR)/quantum.c \ $(QUANTUM_DIR)/keymap_common.c \ $(QUANTUM_DIR)/keycode_config.c + + + # Include the standard or split matrix code if needed ifneq ($(strip $(CUSTOM_MATRIX)), yes) ifeq ($(strip $(SPLIT_KEYBOARD)), yes) @@ -263,11 +267,22 @@ ifneq ($(strip $(CUSTOM_MATRIX)), yes) endif endif -# Include the standard debounce code if needed -ifneq ($(strip $(CUSTOM_DEBOUNCE)), yes) - QUANTUM_SRC += $(QUANTUM_DIR)/debounce.c +DEBOUNCE_DIR:= $(QUANTUM_DIR)/debounce +# Debounce Modules. If implemented in matrix.c, don't use these. +ifeq ($(strip $(DEBOUNCE_ALGO)), manual) + # Do nothing. do your debouncing in matrix.c +else ifeq ($(strip $(DEBOUNCE_ALGO)), sym_g) + QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_sym_g.c +else ifeq ($(strip $(DEBOUNCE_ALGO)), eager_pk) + QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_eager_pk.c +else ifeq ($(strip $(CUSTOM_MATRIX)), yes) + # Do nothing. Custom matrix code. +else # default algorithm + QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_sym_g.c endif + + ifeq ($(strip $(SPLIT_KEYBOARD)), yes) OPT_DEFS += -DSPLIT_KEYBOARD -- cgit v1.2.3 From 574fc6444bf48d10317c72bc6a5c61f7e46938a3 Mon Sep 17 00:00:00 2001 From: alex-ong Date: Sat, 26 Jan 2019 17:38:52 +1100 Subject: Whitespace cleanup. --- common_features.mk | 4 ---- docs/feature_debounce_algo.md | 17 +++++++---------- keyboards/handwired/xealous/rules.mk | 2 +- tmk_core/common.mk | 2 +- tmk_core/common/keyboard.c | 6 +++--- 5 files changed, 12 insertions(+), 19 deletions(-) (limited to 'common_features.mk') diff --git a/common_features.mk b/common_features.mk index 9b9d017a7b..deb30706ad 100644 --- a/common_features.mk +++ b/common_features.mk @@ -249,15 +249,11 @@ endif include $(DRIVER_PATH)/qwiic/qwiic.mk - QUANTUM_SRC:= \ $(QUANTUM_DIR)/quantum.c \ $(QUANTUM_DIR)/keymap_common.c \ $(QUANTUM_DIR)/keycode_config.c - - - # Include the standard or split matrix code if needed ifneq ($(strip $(CUSTOM_MATRIX)), yes) ifeq ($(strip $(SPLIT_KEYBOARD)), yes) diff --git a/docs/feature_debounce_algo.md b/docs/feature_debounce_algo.md index 2c694cdfbd..e4489662e3 100644 --- a/docs/feature_debounce_algo.md +++ b/docs/feature_debounce_algo.md @@ -7,18 +7,16 @@ The underlying debounce algorithm is determined by which matrix.c file you are u The logic for which debounce method called is below. It checks various defines that you have set in rules.mk ``` -ifeq ($(strip $(SPLIT_KEYBOARD)), yes) - # Do nothing, debouncing is inside matrix.c inside split_common -else ifeq ($(strip $(DEBOUNCE_ALGO)), manual) +ifeq ($(strip $(DEBOUNCE_ALGO)), manual) # Do nothing. do your debouncing in matrix.c else ifeq ($(strip $(DEBOUNCE_ALGO)), sym_g) - TMK_COMMON_SRC += $(DEBOUNCE)/debounce_sym_g.c + QUANTUM_SRC += $(DEBOUNCE)/debounce_sym_g.c else ifeq ($(strip $(DEBOUNCE_ALGO)), eager_pk) - TMK_COMMON_SRC += $(DEBOUNCE)/debounce_eager_pk.c + QUANTUM_SRC += $(DEBOUNCE)/debounce_eager_pk.c else ifeq ($(strip $(CUSTOM_MATRIX)), yes) # Do nothing. Custom matrix code. else # default algorithm - TMK_COMMON_SRC += $(DEBOUNCE)/debounce_sym_g.c + QUANTUM_SRC += $(DEBOUNCE)/debounce_sym_g.c endif ``` @@ -32,11 +30,10 @@ The following is for keyboards where ```SPLIT_KEYBOARD``` is **not** defined as | sym_g / eager_pk | Not defined | You are using the included matrix.c and debounce.c | Nothing. Chosen debounce method used. | | Not defined | YES | You have your own matrix.c, and your own debounce | Write the fully debounced matrix into matrix.c's matrix | | manual | YES | Same as above | same as above | -| sym_g/ eager_pk | YES | You are using your own matrix.c, but included debounce | Write the raw matrix values into matrix.c's matrix | +| sym_g / eager_pk | YES | You are using your own matrix.c, but included debounce | Write the raw matrix values into matrix.c's matrix | -**Note**: -If ```SPLIT_KEYBOARD = YES``` is defined, the algorithm inside split_common will be used. -A future pull request will fix this to use the debounce.c code. +**Regarding split keyboards**: +The debounce code is compatible with split keyboards. # Use your own debouncing code * Set ```DEBOUNCE_ALGO = manual```. diff --git a/keyboards/handwired/xealous/rules.mk b/keyboards/handwired/xealous/rules.mk index 07e1c875e6..37afdaff93 100644 --- a/keyboards/handwired/xealous/rules.mk +++ b/keyboards/handwired/xealous/rules.mk @@ -68,7 +68,7 @@ SUBPROJECT_rev1 = yes SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend CUSTOM_MATRIX = no -CUSTOM_DEBOUNCE = yes +DEBOUNCE_ALGO = manual LAYOUTS = split60 diff --git a/tmk_core/common.mk b/tmk_core/common.mk index 335a36cfe7..063115acb1 100644 --- a/tmk_core/common.mk +++ b/tmk_core/common.mk @@ -1,5 +1,4 @@ COMMON_DIR = common - ifeq ($(PLATFORM),AVR) PLATFORM_COMMON_DIR = $(COMMON_DIR)/avr else ifeq ($(PLATFORM),CHIBIOS) @@ -62,6 +61,7 @@ ifeq ($(PLATFORM),TEST) endif + # Option modules BOOTMAGIC_ENABLE ?= no VALID_MAGIC_TYPES := yes full lite diff --git a/tmk_core/common/keyboard.c b/tmk_core/common/keyboard.c index d223001160..25be28d02a 100644 --- a/tmk_core/common/keyboard.c +++ b/tmk_core/common/keyboard.c @@ -163,7 +163,7 @@ bool is_keyboard_master(void) { */ void keyboard_init(void) { timer_init(); - matrix_init(); + matrix_init(); #ifdef QWIIC_ENABLE qwiic_init(); #endif @@ -223,7 +223,7 @@ void keyboard_task(void) uint8_t keys_processed = 0; #endif - matrix_scan(); + matrix_scan(); if (is_keyboard_master()) { for (uint8_t r = 0; r < MATRIX_ROWS; r++) { @@ -231,7 +231,7 @@ void keyboard_task(void) matrix_change = matrix_row ^ matrix_prev[r]; if (matrix_change) { #ifdef MATRIX_HAS_GHOST - if (has_ghost_in_row(r, matrix_row)) continue; + if (has_ghost_in_row(r, matrix_row)) { continue; } #endif if (debug_matrix) matrix_print(); for (uint8_t c = 0; c < MATRIX_COLS; c++) { -- cgit v1.2.3 From cce8dfab394a643fd6d0250bc8a80a721703a154 Mon Sep 17 00:00:00 2001 From: alex-ong Date: Sat, 26 Jan 2019 20:37:47 +1100 Subject: Removed check for custom_matrix. We can safely include the debounce file for compilation when custom_matrix is used. --- common_features.mk | 4 +--- docs/feature_debounce_algo.md | 18 ++++++------------ 2 files changed, 7 insertions(+), 15 deletions(-) (limited to 'common_features.mk') diff --git a/common_features.mk b/common_features.mk index deb30706ad..2c86fd31b0 100644 --- a/common_features.mk +++ b/common_features.mk @@ -271,9 +271,7 @@ else ifeq ($(strip $(DEBOUNCE_ALGO)), sym_g) QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_sym_g.c else ifeq ($(strip $(DEBOUNCE_ALGO)), eager_pk) QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_eager_pk.c -else ifeq ($(strip $(CUSTOM_MATRIX)), yes) - # Do nothing. Custom matrix code. -else # default algorithm +else # default algorithm. Won't be used if we have a custom_matrix that doesn't utilize it QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_sym_g.c endif diff --git a/docs/feature_debounce_algo.md b/docs/feature_debounce_algo.md index e4489662e3..c4ef86fc7d 100644 --- a/docs/feature_debounce_algo.md +++ b/docs/feature_debounce_algo.md @@ -13,24 +13,18 @@ else ifeq ($(strip $(DEBOUNCE_ALGO)), sym_g) QUANTUM_SRC += $(DEBOUNCE)/debounce_sym_g.c else ifeq ($(strip $(DEBOUNCE_ALGO)), eager_pk) QUANTUM_SRC += $(DEBOUNCE)/debounce_eager_pk.c -else ifeq ($(strip $(CUSTOM_MATRIX)), yes) - # Do nothing. Custom matrix code. else # default algorithm QUANTUM_SRC += $(DEBOUNCE)/debounce_sym_g.c endif ``` # Debounce selection -The following is for keyboards where ```SPLIT_KEYBOARD``` is **not** defined as ```YES``` -| DEBOUNCE_ALGO | CUSTOM_MATRIX | Description | What to do | -| ------------- | -------------| --------------------------------------------------- | ----------------------------- | -| Not defined | Not defined | You are using the included matrix.c and debounce.c | Nothing. Debounce_sym_g used. | -| manual | Not defined | You are using the included matrix.c but your own debounce.c | ```SRC += debounce.c``` add your own debounce.c and implement necessary functions | -| sym_g / eager_pk | Not defined | You are using the included matrix.c and debounce.c | Nothing. Chosen debounce method used. | -| Not defined | YES | You have your own matrix.c, and your own debounce | Write the fully debounced matrix into matrix.c's matrix | -| manual | YES | Same as above | same as above | -| sym_g / eager_pk | YES | You are using your own matrix.c, but included debounce | Write the raw matrix values into matrix.c's matrix | +| DEBOUNCE_ALGO | Description | What to do | +| ------------- | --------------------------------------------------- | ----------------------------- | +| Not defined | You are using the included matrix.c and debounce.c | Nothing. Debounce_sym_g will be compiled, and used if necessary | +| manual | Use your own debounce.c | ```SRC += debounce.c``` add your own debounce.c and implement necessary functions | +| sym_g / eager_pk | You are using the included matrix.c and debounce.c | Use an alternative debounce algorithm | **Regarding split keyboards**: The debounce code is compatible with split keyboards. @@ -38,7 +32,7 @@ The debounce code is compatible with split keyboards. # Use your own debouncing code * Set ```DEBOUNCE_ALGO = manual```. * Add ```SRC += debounce.c``` -* Add your own ```debounce.c```. Look at included debounce.c's for sample implementations. +* Add your own ```debounce.c```. Look at included ```debounce_sym_g.c```s for sample implementations. * Debouncing occurs after every raw matrix scan. # Changing between included debouncing methods -- cgit v1.2.3 From d30d5eeb27b7dc66ef18e65dc150cf76121a7148 Mon Sep 17 00:00:00 2001 From: Alex Ong Date: Sat, 26 Jan 2019 23:01:07 +1100 Subject: Renamed DEBOUNCE_ALGO to DEBOUNCE_TYPE --- common_features.mk | 6 +++--- keyboards/handwired/xealous/rules.mk | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'common_features.mk') diff --git a/common_features.mk b/common_features.mk index 2c86fd31b0..8e2747d5a4 100644 --- a/common_features.mk +++ b/common_features.mk @@ -265,11 +265,11 @@ endif DEBOUNCE_DIR:= $(QUANTUM_DIR)/debounce # Debounce Modules. If implemented in matrix.c, don't use these. -ifeq ($(strip $(DEBOUNCE_ALGO)), manual) +ifeq ($(strip $(DEBOUNCE_TYPE)), custom) # Do nothing. do your debouncing in matrix.c -else ifeq ($(strip $(DEBOUNCE_ALGO)), sym_g) +else ifeq ($(strip $(DEBOUNCE_TYPE)), sym_g) QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_sym_g.c -else ifeq ($(strip $(DEBOUNCE_ALGO)), eager_pk) +else ifeq ($(strip $(DEBOUNCE_TYPE)), eager_pk) QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_eager_pk.c else # default algorithm. Won't be used if we have a custom_matrix that doesn't utilize it QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_sym_g.c diff --git a/keyboards/handwired/xealous/rules.mk b/keyboards/handwired/xealous/rules.mk index 37afdaff93..7d07c9aa5f 100644 --- a/keyboards/handwired/xealous/rules.mk +++ b/keyboards/handwired/xealous/rules.mk @@ -68,7 +68,7 @@ SUBPROJECT_rev1 = yes SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend CUSTOM_MATRIX = no -DEBOUNCE_ALGO = manual +DEBOUNCE_TYPE = custom LAYOUTS = split60 -- cgit v1.2.3 From 7d8c62993921383a35f9cd172fe0a1d2e893b2f3 Mon Sep 17 00:00:00 2001 From: alex-ong Date: Sun, 27 Jan 2019 07:23:15 +1100 Subject: Stricter, leaner DEBOUNCE_TYPE section in common_features.mk. Cleanup debounce_type.mk --- common_features.mk | 11 ++++++----- docs/feature_debounce_algo.md | 44 ----------------------------------------- docs/feature_debounce_type.md | 46 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 49 deletions(-) delete mode 100644 docs/feature_debounce_algo.md create mode 100644 docs/feature_debounce_type.md (limited to 'common_features.mk') diff --git a/common_features.mk b/common_features.mk index 8e2747d5a4..d03dbed09b 100644 --- a/common_features.mk +++ b/common_features.mk @@ -265,14 +265,15 @@ endif DEBOUNCE_DIR:= $(QUANTUM_DIR)/debounce # Debounce Modules. If implemented in matrix.c, don't use these. -ifeq ($(strip $(DEBOUNCE_TYPE)), custom) - # Do nothing. do your debouncing in matrix.c -else ifeq ($(strip $(DEBOUNCE_TYPE)), sym_g) +DEBOUNCE_TYPE?= sym_g +VALID_DEBOUNCE_TYPES := sym_g eager_pk custom +ifeq ($(filter $(DEBOUNCE_TYPE),$(VALID_DEBOUNCE_TYPES)),) + $(error DEBOUNCE_TYPE="$(DEBOUNCE_TYPE)" is not a valid debounce algorithm) +endif +ifeq ($(strip $(DEBOUNCE_TYPE)), sym_g) QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_sym_g.c else ifeq ($(strip $(DEBOUNCE_TYPE)), eager_pk) QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_eager_pk.c -else # default algorithm. Won't be used if we have a custom_matrix that doesn't utilize it - QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_sym_g.c endif diff --git a/docs/feature_debounce_algo.md b/docs/feature_debounce_algo.md deleted file mode 100644 index c4ef86fc7d..0000000000 --- a/docs/feature_debounce_algo.md +++ /dev/null @@ -1,44 +0,0 @@ -# Debounce algorithm - -QMK supports multiple debounce algorithms through its debounce API. - -The underlying debounce algorithm is determined by which matrix.c file you are using. - -The logic for which debounce method called is below. It checks various defines that you have set in rules.mk - -``` -ifeq ($(strip $(DEBOUNCE_ALGO)), manual) - # Do nothing. do your debouncing in matrix.c -else ifeq ($(strip $(DEBOUNCE_ALGO)), sym_g) - QUANTUM_SRC += $(DEBOUNCE)/debounce_sym_g.c -else ifeq ($(strip $(DEBOUNCE_ALGO)), eager_pk) - QUANTUM_SRC += $(DEBOUNCE)/debounce_eager_pk.c -else # default algorithm - QUANTUM_SRC += $(DEBOUNCE)/debounce_sym_g.c -endif -``` - -# Debounce selection - -| DEBOUNCE_ALGO | Description | What to do | -| ------------- | --------------------------------------------------- | ----------------------------- | -| Not defined | You are using the included matrix.c and debounce.c | Nothing. Debounce_sym_g will be compiled, and used if necessary | -| manual | Use your own debounce.c | ```SRC += debounce.c``` add your own debounce.c and implement necessary functions | -| sym_g / eager_pk | You are using the included matrix.c and debounce.c | Use an alternative debounce algorithm | - -**Regarding split keyboards**: -The debounce code is compatible with split keyboards. - -# Use your own debouncing code -* Set ```DEBOUNCE_ALGO = manual```. -* Add ```SRC += debounce.c``` -* Add your own ```debounce.c```. Look at included ```debounce_sym_g.c```s for sample implementations. -* Debouncing occurs after every raw matrix scan. - -# Changing between included debouncing methods -You can either use your own code, by including your own debounce.c, or switch to another included one. -Included debounce methods are: -* debounce_eager_pk - debouncing per key. On any state change, response is immediate, followed by ```DEBOUNCE_DELAY``` millseconds of no further input for that key -* debounce_sym_g - debouncing per keyboard. On any state change, a global timer is set. When ```DEBOUNCE_DELAY``` milliseconds of no changes has occured, all input changes are pushed. - - diff --git a/docs/feature_debounce_type.md b/docs/feature_debounce_type.md new file mode 100644 index 0000000000..82b3d7de12 --- /dev/null +++ b/docs/feature_debounce_type.md @@ -0,0 +1,46 @@ +# Debounce algorithm + +QMK supports multiple debounce algorithms through its debounce API. + +The underlying debounce algorithm is determined by which matrix.c file you are using. + +The logic for which debounce method called is below. It checks various defines that you have set in rules.mk + +``` +DEBOUNCE_TYPE?= sym_g +VALID_DEBOUNCE_TYPES := sym_g eager_pk custom +ifeq ($(filter $(DEBOUNCE_TYPE),$(VALID_DEBOUNCE_TYPES)),) + $(error DEBOUNCE_TYPE="$(DEBOUNCE_TYPE)" is not a valid debounce algorithm) +endif +ifeq ($(strip $(DEBOUNCE_TYPE)), sym_g) + QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_sym_g.c +else ifeq ($(strip $(DEBOUNCE_TYPE)), eager_pk) + QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_eager_pk.c +endif +``` + +# Debounce selection + +| DEBOUNCE_ALGO | Description | What to do | +| ------------- | --------------------------------------------------- | ----------------------------- | +| Not defined | You are using the included matrix.c and debounce.c | Nothing. Debounce_sym_g will be compiled, and used if necessary | +| custom | Use your own debounce.c | ```SRC += debounce.c``` add your own debounce.c and implement necessary functions | +| sym_g / eager_pk | You are using the included matrix.c and debounce.c | Use an alternative debounce algorithm | + +**Regarding split keyboards**: +The debounce code is compatible with split keyboards. + +# Use your own debouncing code +* Set ```DEBOUNCE_TYPE = custom ```. +* Add ```SRC += debounce.c``` +* Add your own ```debounce.c```. Look at included ```debounce_sym_g.c```s for sample implementations. +* Debouncing occurs after every raw matrix scan. +* Use num_rows rather than MATRIX_ROWS, so that split keyboards are supported correctly. + +# Changing between included debouncing methods +You can either use your own code, by including your own debounce.c, or switch to another included one. +Included debounce methods are: +* debounce_eager_pk - debouncing per key. On any state change, response is immediate, followed by ```DEBOUNCE_DELAY``` millseconds of no further input for that key +* debounce_sym_g - debouncing per keyboard. On any state change, a global timer is set. When ```DEBOUNCE_DELAY``` milliseconds of no changes has occured, all input changes are pushed. + + -- cgit v1.2.3