diff options
author | Alex Ong <the.onga@gmail.com> | 2019-01-26 12:13:19 +1100 |
---|---|---|
committer | Alex Ong <the.onga@gmail.com> | 2019-01-26 12:13:19 +1100 |
commit | c9ba618654417ec115809a031d315f8327c79ad4 (patch) | |
tree | cd5b907af5bebde7062897ff847e473232ed1214 /quantum/debounce.c | |
parent | 2bb2977c133646c4e056960e72029270d77cc1eb (diff) | |
parent | d977daa8dc9136746425f9e1414e1f93cb161877 (diff) |
DO NOT USE Merge branch 'master' into debounce_refactor
Merged, however now there are two debounce.h and debounce.c to mess around with and coalesce.
# Conflicts:
# quantum/matrix.c
Diffstat (limited to 'quantum/debounce.c')
-rw-r--r-- | quantum/debounce.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/quantum/debounce.c b/quantum/debounce.c new file mode 100644 index 0000000000..929023ab2d --- /dev/null +++ b/quantum/debounce.c @@ -0,0 +1,52 @@ + +#include "matrix.h" +#include "timer.h" +#include "quantum.h" + +#ifndef DEBOUNCING_DELAY +# define DEBOUNCING_DELAY 5 +#endif + +void debounce_init(uint8_t num_rows) { +} + +#if DEBOUNCING_DELAY > 0 + +static bool debouncing = false; + +void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) { + static uint16_t debouncing_time; + + if (changed) { + debouncing = true; + debouncing_time = timer_read(); + } + + if (debouncing && (timer_elapsed(debouncing_time) > DEBOUNCING_DELAY)) { + for (uint8_t i = 0; i < num_rows; i++) { + cooked[i] = raw[i]; + } + debouncing = false; + } +} + +bool debounce_active(void) { + return debouncing; +} + +#else + +// no debounce +void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) { + if (changed) + { + for (uint8_t i = 0; i < num_rows; i++) { + cooked[i] = raw[i]; + } + } +} + +bool debounce_active(void) { + return false; +} +#endif |