diff options
Diffstat (limited to 'quantum/debounce/sym_defer_g.c')
| -rw-r--r-- | quantum/debounce/sym_defer_g.c | 26 | 
1 files changed, 13 insertions, 13 deletions
| diff --git a/quantum/debounce/sym_defer_g.c b/quantum/debounce/sym_defer_g.c index 3ed9055d2a..fbefd55ede 100644 --- a/quantum/debounce/sym_defer_g.c +++ b/quantum/debounce/sym_defer_g.c @@ -1,5 +1,6 @@  /*  Copyright 2017 Alex Ong<[email protected]> +Copyright 2021 Simon Arlott  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 @@ -23,30 +24,29 @@ When no state changes have occured for DEBOUNCE milliseconds, we push the state.  #    define DEBOUNCE 5  #endif -void        debounce_init(uint8_t num_rows) {} +#if DEBOUNCE > 0  static bool debouncing = false; +static fast_timer_t debouncing_time; -#if DEBOUNCE > 0 -static uint16_t debouncing_time; -void            debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) { +void debounce_init(uint8_t num_rows) {} + +void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed) {      if (changed) {          debouncing      = true; -        debouncing_time = timer_read(); +        debouncing_time = timer_read_fast();      } -    if (debouncing && timer_elapsed(debouncing_time) > DEBOUNCE) { +    if (debouncing && timer_elapsed_fast(debouncing_time) >= DEBOUNCE) {          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[], uint8_t num_rows, bool changed) { -    for (int i = 0; i < num_rows; i++) { -        cooked[i] = raw[i]; -    } -} -#endif  bool debounce_active(void) { return debouncing; } + +void debounce_free(void) {} +#else  // no debouncing. +#    include "none.c" +#endif | 
