aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--quantum/audio/audio.c19
-rw-r--r--quantum/audio/audio.h6
-rw-r--r--quantum/keyboard.c20
3 files changed, 26 insertions, 19 deletions
diff --git a/quantum/audio/audio.c b/quantum/audio/audio.c
index 247b737331..461ec89544 100644
--- a/quantum/audio/audio.c
+++ b/quantum/audio/audio.c
@@ -183,6 +183,25 @@ void audio_init(void) {
#endif
}
+void audio_task(void) {
+#ifdef AUDIO_INIT_DELAY
+ // startup song potentially needs 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...
+ 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
+}
+
void audio_startup(void) {
if (audio_config.enable) {
PLAY_SONG(startup_song);
diff --git a/quantum/audio/audio.h b/quantum/audio/audio.h
index 647744a686..a41814d0f8 100644
--- a/quantum/audio/audio.h
+++ b/quantum/audio/audio.h
@@ -69,7 +69,11 @@ void eeconfig_update_audio_current(void);
* @post audio system (and hardware) initialized and ready to play tones
*/
void audio_init(void);
-void audio_startup(void);
+
+/**
+ * \brief Handle various subsystem background tasks.
+ */
+void audio_task(void);
/**
* @brief en-/disable audio output, save this choice to the eeprom
diff --git a/quantum/keyboard.c b/quantum/keyboard.c
index c1a6d444a5..bf4890a51d 100644
--- a/quantum/keyboard.c
+++ b/quantum/keyboard.c
@@ -648,24 +648,8 @@ void quantum_task(void) {
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;
- }
- }
+#ifdef AUDIO_ENABLE
+ audio_task();
#endif
#if defined(AUDIO_ENABLE) && !defined(NO_MUSIC_MODE)