diff options
author | Joel Challis <git@zvecr.com> | 2019-10-15 13:32:52 +0100 |
---|---|---|
committer | Florian Didron <fdidron@users.noreply.github.com> | 2019-11-04 16:58:23 +0900 |
commit | ab799d56289000806ea9772083d80cfbab77ea0a (patch) | |
tree | b41c126fe3f71280c9a94aed638efca41da8e70e | |
parent | af26d4b1fe30b483eacc9281c00ce30e3a888912 (diff) |
Port DEBUG_MATRIX_SCAN_RATE to core (#7029)
* Port DEBUG_MATRIX_SCAN_RATE to core
* Remove duplicate DEBUG_MATRIX_SCAN_RATE implementations
* Remove duplicate DEBUG_MATRIX_SCAN_RATE implementation from handwired/xealous
* Add console logic from ergodox_ez
-rw-r--r-- | keyboards/ergodox_ez/matrix.c | 39 | ||||
-rw-r--r-- | tmk_core/common/keyboard.c | 24 |
2 files changed, 28 insertions, 35 deletions
diff --git a/keyboards/ergodox_ez/matrix.c b/keyboards/ergodox_ez/matrix.c index 80a2d1d95b..1ab2e5502f 100644 --- a/keyboards/ergodox_ez/matrix.c +++ b/keyboards/ergodox_ez/matrix.c @@ -35,9 +35,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "matrix.h" #include "debounce.h" #include QMK_KEYBOARD_H -#ifdef DEBUG_MATRIX_SCAN_RATE -# include "timer.h" -#endif /* * This constant define not debouncing time in msecs, assuming eager_pr. @@ -67,11 +64,6 @@ static void select_row(uint8_t row); static uint8_t mcp23018_reset_loop; // static uint16_t mcp23018_reset_loop; -#ifdef DEBUG_MATRIX_SCAN_RATE -uint32_t matrix_timer; -uint32_t matrix_scan_count; -#endif - __attribute__((weak)) void matrix_init_user(void) {} __attribute__((weak)) void matrix_scan_user(void) {} @@ -95,13 +87,9 @@ void matrix_init(void) { // initialize matrix state: all keys off for (uint8_t i = 0; i < MATRIX_ROWS; i++) { matrix[i] = 0; - raw_matrix[i] = 0; + raw_matrix[i] = 0; } -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_timer = timer_read32(); - matrix_scan_count = 0; -#endif debounce_init(MATRIX_ROWS); matrix_init_quantum(); } @@ -116,11 +104,6 @@ void matrix_power_up(void) { for (uint8_t i = 0; i < MATRIX_ROWS; i++) { matrix[i] = 0; } - -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_timer = timer_read32(); - matrix_scan_count = 0; -#endif } // Reads and stores a row, returning @@ -151,24 +134,10 @@ uint8_t matrix_scan(void) { } } -#ifdef DEBUG_MATRIX_SCAN_RATE - matrix_scan_count++; - - uint32_t timer_now = timer_read32(); - if (TIMER_DIFF_32(timer_now, matrix_timer) > 1000) { - print("matrix scan frequency: "); - pdec(matrix_scan_count); - print("\n"); - - matrix_timer = timer_now; - matrix_scan_count = 0; - } -#endif - #ifdef LEFT_LEDS mcp23018_status = ergodox_left_leds_update(); #endif // LEFT_LEDS - bool changed = false; + bool changed = false; for (uint8_t i = 0; i < MATRIX_ROWS_PER_SIDE; i++) { // select rows from left and right hands uint8_t left_index = i; @@ -178,13 +147,13 @@ uint8_t matrix_scan(void) { // we don't need a 30us delay anymore, because selecting a // left-hand row requires more than 30us for i2c. - + changed |= store_raw_matrix_row(left_index); changed |= store_raw_matrix_row(right_index); unselect_rows(); } - + debounce(raw_matrix, matrix, MATRIX_ROWS, changed); matrix_scan_quantum(); diff --git a/tmk_core/common/keyboard.c b/tmk_core/common/keyboard.c index 060b45f1bc..0e8ba826e6 100644 --- a/tmk_core/common/keyboard.c +++ b/tmk_core/common/keyboard.c @@ -82,6 +82,26 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. # include "velocikey.h" #endif +// Only enable this if console is enabled to print to +#if defined(DEBUG_MATRIX_SCAN_RATE) && defined(CONSOLE_ENABLE) +static uint32_t matrix_timer = 0; +static uint32_t matrix_scan_count = 0; + +void matrix_scan_perf_task(void) { + matrix_scan_count++; + + uint32_t timer_now = timer_read32(); + if (TIMER_DIFF_32(timer_now, matrix_timer) > 1000) { + dprintf("matrix scan frequency: %d\n", matrix_scan_count); + + matrix_timer = timer_now; + matrix_scan_count = 0; + } +} +#else +# define matrix_scan_perf_task() +#endif + #ifdef MATRIX_HAS_GHOST extern const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS]; static matrix_row_t get_real_keys(uint8_t row, matrix_row_t rowdata) { @@ -296,6 +316,10 @@ void keyboard_task(void) { MATRIX_LOOP_END: +#ifdef DEBUG_MATRIX_SCAN_RATE + matrix_scan_perf_task(); +#endif + #ifdef QWIIC_ENABLE qwiic_task(); #endif |