keymap.c (1503B)
1 // Copyright 2022 Stefan Kerkmann 2 // SPDX-License-Identifier: GPL-2.0-or-later 3 4 #include QMK_KEYBOARD_H 5 6 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {LAYOUT_ortho_1x1(KC_A)}; 7 8 #if defined(__AVR__) 9 # pragma message "AVR uses polled waiting by default, running theses tests will not show any difference" 10 static inline void chThdSleepMicroseconds(uint32_t us) { 11 wait_us(us); 12 } 13 #endif 14 15 void keyboard_post_init_user(void) { 16 gpio_set_pin_output(QMK_WAITING_TEST_BUSY_PIN); 17 gpio_set_pin_output(QMK_WAITING_TEST_YIELD_PIN); 18 } 19 20 static inline void wait_us_polling_with_strobe(uint32_t us) { 21 gpio_write_pin_high(QMK_WAITING_TEST_BUSY_PIN); 22 wait_us(us); 23 gpio_write_pin_low(QMK_WAITING_TEST_BUSY_PIN); 24 } 25 26 static inline void wait_us_yield_with_strobe(uint32_t us) { 27 gpio_write_pin_high(QMK_WAITING_TEST_YIELD_PIN); 28 chThdSleepMicroseconds(us); 29 gpio_write_pin_low(QMK_WAITING_TEST_YIELD_PIN); 30 } 31 32 static const uint32_t waiting_values[] = {0, 1, 5, 10, 25, 50, 100, 150, 200, 500, 1000}; 33 34 void housekeeping_task_user(void) { 35 static uint32_t last_bench = 0; 36 if (timer_elapsed32(last_bench) > 500) { 37 for (int i = 0; i < ARRAY_SIZE(waiting_values); i++) { 38 wait_us_polling_with_strobe(waiting_values[i]); 39 wait_us(10); 40 } 41 for (int i = 0; i < ARRAY_SIZE(waiting_values); i++) { 42 wait_us_yield_with_strobe(waiting_values[i]); 43 wait_us(10); 44 } 45 last_bench = timer_read32(); 46 } 47 }