diff options
author | Joel Challis <git@zvecr.com> | 2022-01-19 17:38:48 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-19 17:38:48 +0000 |
commit | d840ef2b2855c7c6094e5881a4bc78a05297a488 (patch) | |
tree | 1877b23256e11976f96fe1672a542afe2a24d6f8 /quantum/keyboard.c | |
parent | dcb0c4e51e59fc796fe6957f1483ead988442b45 (diff) |
Relocate matrix_scan_quantum tasks (#15882)
* Move matrix_scan_quantum tasks
* Fix tests
* Fix up missing refs
Diffstat (limited to 'quantum/keyboard.c')
-rw-r--r-- | quantum/keyboard.c | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/quantum/keyboard.c b/quantum/keyboard.c index 67f7381f74..fa20c675c3 100644 --- a/quantum/keyboard.c +++ b/quantum/keyboard.c @@ -16,6 +16,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include <stdint.h> +#include "quantum.h" #include "keyboard.h" #include "matrix.h" #include "keymap.h" @@ -450,6 +451,73 @@ MATRIX_LOOP_END: return matrix_changed; } +/** \brief Tasks previously located in matrix_scan_quantum + * + * TODO: rationalise against keyboard_task and current split role + */ +void quantum_task(void) { +#ifdef SPLIT_KEYBOARD + // some tasks should only run on master + if (!is_keyboard_master()) return; +#endif + +#if defined(AUDIO_ENABLE) && defined(AUDIO_INIT_DELAY) + // There are some tasks that need to be run a little bit + // after keyboard startup, or else they will not work correctly + // because of interaction with the USB device state, which + // may still be in flux... + // + // At the moment the only feature that needs this is the + // startup song. + static bool delayed_tasks_run = false; + static uint16_t delayed_task_timer = 0; + if (!delayed_tasks_run) { + if (!delayed_task_timer) { + delayed_task_timer = timer_read(); + } else if (timer_elapsed(delayed_task_timer) > 300) { + audio_startup(); + delayed_tasks_run = true; + } + } +#endif + +#if defined(AUDIO_ENABLE) && !defined(NO_MUSIC_MODE) + music_task(); +#endif + +#ifdef KEY_OVERRIDE_ENABLE + key_override_task(); +#endif + +#ifdef SEQUENCER_ENABLE + sequencer_task(); +#endif + +#ifdef TAP_DANCE_ENABLE + tap_dance_task(); +#endif + +#ifdef COMBO_ENABLE + combo_task(); +#endif + +#ifdef WPM_ENABLE + decay_wpm(); +#endif + +#ifdef HAPTIC_ENABLE + haptic_task(); +#endif + +#ifdef DIP_SWITCH_ENABLE + dip_switch_read(false); +#endif + +#ifdef AUTO_SHIFT_ENABLE + autoshift_matrix_scan(); +#endif +} + /** \brief Keyboard task: Do keyboard routine jobs * * Do routine keyboard jobs: @@ -465,6 +533,8 @@ void keyboard_task(void) { bool matrix_changed = matrix_scan_task(); (void)matrix_changed; + quantum_task(); + #if defined(RGBLIGHT_ENABLE) rgblight_task(); #endif |