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. --- quantum/debounce/debounce_sym_g.c | 58 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 quantum/debounce/debounce_sym_g.c (limited to 'quantum/debounce/debounce_sym_g.c') diff --git a/quantum/debounce/debounce_sym_g.c b/quantum/debounce/debounce_sym_g.c new file mode 100644 index 000000000..c206f2864 --- /dev/null +++ b/quantum/debounce/debounce_sym_g.c @@ -0,0 +1,58 @@ +/* +Copyright 2017 Alex Ong +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 2 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 . +*/ + +/* +Basic global debounce algorithm. Used in 99% of keyboards at time of implementation +When no state changes have occured for DEBOUNCE milliseconds, we push the state. +*/ +#include "debounce.h" +#include "matrix.h" +#include "timer.h" +#ifndef DEBOUNCE + #define DEBOUNCE 5 +#endif + +static bool debouncing = false; +static uint16_t debouncing_time; + +void debounce_init(void) {} + +#if DEBOUNCE > 0 +void debounce(matrix_row_t raw[], matrix_row_t cooked[], bool changed) +{ + if (changed) { + debouncing = true; + debouncing_time = timer_read(); + } + + if (debouncing && timer_elapsed(debouncing_time) > DEBOUNCE) { + for (int i = 0; i < MATRIX_ROWS; i++) { + cooked[i] = raw[i]; + } + debouncing = false; + } +} +#else //no debouncing. +void debounce(matrix_row_t raw[], matrix_row_t cooked[], bool changed) +{ + for (int i = 0; i < MATRIX_ROWS; i++) { + cooked[i] = raw[i]; + } +} +#endif + +bool debounce_active() { + return debouncing; +} + -- cgit v1.2.3-24-g4f1b From 123608fb318a42500d64d29aa46c7d08140033fd Mon Sep 17 00:00:00 2001 From: alex-ong Date: Sat, 26 Jan 2019 17:10:27 +1100 Subject: DO NOT USE Revert back to original API to support split_keyboards. --- quantum/debounce/debounce_sym_g.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'quantum/debounce/debounce_sym_g.c') diff --git a/quantum/debounce/debounce_sym_g.c b/quantum/debounce/debounce_sym_g.c index c206f2864..4a6996c73 100644 --- a/quantum/debounce/debounce_sym_g.c +++ b/quantum/debounce/debounce_sym_g.c @@ -26,10 +26,10 @@ When no state changes have occured for DEBOUNCE milliseconds, we push the state. static bool debouncing = false; static uint16_t debouncing_time; -void debounce_init(void) {} +void debounce_init(uint8_t num_rows) {} #if DEBOUNCE > 0 -void debounce(matrix_row_t raw[], matrix_row_t cooked[], bool changed) +void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) { if (changed) { debouncing = true; @@ -37,14 +37,14 @@ void debounce(matrix_row_t raw[], matrix_row_t cooked[], bool changed) } if (debouncing && timer_elapsed(debouncing_time) > DEBOUNCE) { - for (int i = 0; i < MATRIX_ROWS; i++) { + for (int i = 0; i < num_rows; i++) { cooked[i] = raw[i]; } debouncing = false; } } #else //no debouncing. -void debounce(matrix_row_t raw[], matrix_row_t cooked[], bool changed) +void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) { for (int i = 0; i < MATRIX_ROWS; i++) { cooked[i] = raw[i]; -- cgit v1.2.3-24-g4f1b From 14ed96aa064323acb0f8ceecaee3516fb372a56c Mon Sep 17 00:00:00 2001 From: alex-ong Date: Sat, 26 Jan 2019 18:26:49 +1100 Subject: Moved debouncing_time variable to inside #if debounce --- quantum/debounce/debounce_sym_g.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'quantum/debounce/debounce_sym_g.c') diff --git a/quantum/debounce/debounce_sym_g.c b/quantum/debounce/debounce_sym_g.c index 4a6996c73..e365cdf03 100644 --- a/quantum/debounce/debounce_sym_g.c +++ b/quantum/debounce/debounce_sym_g.c @@ -23,12 +23,11 @@ When no state changes have occured for DEBOUNCE milliseconds, we push the state. #define DEBOUNCE 5 #endif -static bool debouncing = false; -static uint16_t debouncing_time; - void debounce_init(uint8_t num_rows) {} +static bool debouncing = false; #if DEBOUNCE > 0 +static uint16_t debouncing_time; void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) { if (changed) { -- cgit v1.2.3-24-g4f1b From 7cb8d3c7a7fe4de4629af21a92f5415cdfdffa0c Mon Sep 17 00:00:00 2001 From: Alex Ong Date: Sat, 26 Jan 2019 22:45:25 +1100 Subject: Bug fix - was using MATRIX_ROWS instead of num_rows --- quantum/debounce/debounce_sym_g.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'quantum/debounce/debounce_sym_g.c') diff --git a/quantum/debounce/debounce_sym_g.c b/quantum/debounce/debounce_sym_g.c index e365cdf03..63bf2a64b 100644 --- a/quantum/debounce/debounce_sym_g.c +++ b/quantum/debounce/debounce_sym_g.c @@ -45,7 +45,7 @@ void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool #else //no debouncing. void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) { - for (int i = 0; i < MATRIX_ROWS; i++) { + for (int i = 0; i < num_rows; i++) { cooked[i] = raw[i]; } } -- cgit v1.2.3-24-g4f1b From 039dde3a519d0626b9dbb2c79373f28b36d29af7 Mon Sep 17 00:00:00 2001 From: Alex Ong Date: Sat, 26 Jan 2019 22:57:39 +1100 Subject: Fixed compilation error with debounce_sym_g --- quantum/debounce/debounce_sym_g.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'quantum/debounce/debounce_sym_g.c') diff --git a/quantum/debounce/debounce_sym_g.c b/quantum/debounce/debounce_sym_g.c index 63bf2a64b..c8ab34e1a 100644 --- a/quantum/debounce/debounce_sym_g.c +++ b/quantum/debounce/debounce_sym_g.c @@ -16,9 +16,9 @@ along with this program. If not, see . Basic global debounce algorithm. Used in 99% of keyboards at time of implementation When no state changes have occured for DEBOUNCE milliseconds, we push the state. */ -#include "debounce.h" #include "matrix.h" #include "timer.h" +#include "quantum.h" #ifndef DEBOUNCE #define DEBOUNCE 5 #endif @@ -51,7 +51,7 @@ void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool } #endif -bool debounce_active() { +bool debounce_active(void) { return debouncing; } -- cgit v1.2.3-24-g4f1b