Explorar o código

Stricter, leaner DEBOUNCE_TYPE section in common_features.mk. Cleanup debounce_type.mk

alex-ong %!s(int64=6) %!d(string=hai) anos
pai
achega
7d8c629939
Modificáronse 2 ficheiros con 18 adicións e 15 borrados
  1. 6 5
      common_features.mk
  2. 12 10
      docs/feature_debounce_type.md

+ 6 - 5
common_features.mk

@@ -265,14 +265,15 @@ endif
 
 
 DEBOUNCE_DIR:= $(QUANTUM_DIR)/debounce
 DEBOUNCE_DIR:= $(QUANTUM_DIR)/debounce
 # Debounce Modules. If implemented in matrix.c, don't use these.
 # 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
     QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_sym_g.c
 else ifeq ($(strip $(DEBOUNCE_TYPE)), eager_pk)
 else ifeq ($(strip $(DEBOUNCE_TYPE)), eager_pk)
     QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_eager_pk.c
     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
 endif
 
 
 
 

+ 12 - 10
docs/feature_debounce_algo.md → docs/feature_debounce_type.md

@@ -7,14 +7,15 @@ 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
 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
+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
 endif
 ```
 ```
 
 
@@ -23,17 +24,18 @@ endif
 | DEBOUNCE_ALGO    | Description                                                 | What to do                    |
 | 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 |
 | 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 |
+| 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 |
 | sym_g / eager_pk | You are using the included matrix.c and debounce.c          | Use an alternative debounce algorithm |
 
 
 **Regarding split keyboards**: 
 **Regarding split keyboards**: 
 The debounce code is compatible with split keyboards.
 The debounce code is compatible with split keyboards.
 
 
 # Use your own debouncing code
 # Use your own debouncing code
-* Set ```DEBOUNCE_ALGO = manual```.
+* Set ```DEBOUNCE_TYPE = custom ```.
 * Add ```SRC += debounce.c```
 * Add ```SRC += debounce.c```
 * Add your own ```debounce.c```. Look at included ```debounce_sym_g.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.
 * 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
 # Changing between included debouncing methods
 You can either use your own code, by including your own debounce.c, or switch to another included one.
 You can either use your own code, by including your own debounce.c, or switch to another included one.