This commit is contained in:
2026-02-27 13:11:00 +01:00
parent 197e5b4859
commit 125d11fa46
6 changed files with 9 additions and 7 deletions

View File

@@ -13,7 +13,7 @@
LOG_MODULE_REGISTER(audio, LOG_LEVEL_INF);
/* Dauer eines Blocks in ms (4096 Bytes / (16kHz * 2 Kanäle * 2 Bytes)) = 64 ms */
#define BLOCK_DURATION_MS 64
#define BLOCK_DURATION_MS ((AUDIO_BLOCK_SIZE * 1000) / (AUDIO_SAMPLE_RATE * 2 * (AUDIO_WORD_WIDTH / 8)))
#define MAX_WAIT_TIME_MS (3 * BLOCK_DURATION_MS)
/* Slab für I2S. Keine weiteren Queues oder Threads nötig. */
@@ -93,14 +93,14 @@ void audio_refresh_file_count(void)
static void wait_for_i2s_drain(void)
{
/* Maximale Wartezeit berechnen (8 Blöcke * 64ms = 512ms + Toleranz) */
/* Maximale Wartezeit berechnen */
int64_t deadline = k_uptime_get() + (AUDIO_BLOCK_COUNT * BLOCK_DURATION_MS) + 100;
while (k_mem_slab_num_free_get(&audio_slab) < AUDIO_BLOCK_COUNT)
{
if (k_uptime_get() >= deadline)
{
LOG_WRN("Timeout waiting for I2S drain");
LOG_WRN("Timeout waiting for I2S drain, used slabs: %u", AUDIO_BLOCK_COUNT - k_mem_slab_num_free_get(&audio_slab));
break;
}
k_sleep(K_MSEC(10));