chore(bt): compteurs diag pont SCO (temp)

This commit is contained in:
clement
2026-06-19 14:30:18 +02:00
parent d95513481a
commit 2102d14487
+14
View File
@@ -39,12 +39,17 @@ static volatile tone_mode_t s_mode = TONE_NONE;
static volatile bool s_tone_idle = true;
static TaskHandle_t s_task = NULL;
/* --- Compteurs de diagnostic SCO (temporaires) --- */
static volatile uint32_t s_dbg_in_bytes = 0; /* PCM recu du BT (feed_playback) */
static volatile uint32_t s_dbg_cap = 0; /* frames micro capturees */
static void tone_task(void *a)
{
(void)a;
int16_t buf[FRAME * 2];
uint32_t ph = 0;
int64_t t = 0; /* ms écoulées dans l'état courant */
uint32_t sco_it = 0, sco_play = 0, sco_under = 0;
for (;;) {
tone_mode_t m = s_mode;
@@ -79,6 +84,7 @@ static void tone_task(void *a)
}
vRingbufferReturnItem(s_sco_play_rb, in);
}
int had_data = (frames > 0) ? 1 : 0;
/* Underrun : compléter avec du silence */
while (frames < FRAME) {
buf[frames * 2] = 0;
@@ -89,6 +95,12 @@ static void tone_task(void *a)
s_tone_idle = false;
i2s_channel_write(hal_i2s_spk_handle(), buf, sizeof(buf), &written,
pdMS_TO_TICKS(50));
if (had_data) sco_play++; else sco_under++;
if (++sco_it % 100 == 0) { /* ~2 s */
ESP_LOGI(TAG, "SCO diag: in=%u B, play=%u, underrun=%u, cap=%u, wrote=%u",
(unsigned)s_dbg_in_bytes, (unsigned)sco_play,
(unsigned)sco_under, (unsigned)s_dbg_cap, (unsigned)written);
}
t += 20;
continue;
}
@@ -175,6 +187,7 @@ static void sco_mic_task(void *a)
int64_t e = 0;
int n = hal_i2s_capture_read_frame(mono, FRAME, &e);
if (n <= 0) { vTaskDelay(pdMS_TO_TICKS(5)); continue; }
s_dbg_cap++;
if (s_sco_msbc) {
/* 16 kHz direct : envoyer tel quel */
xRingbufferSend(s_sco_cap_rb, mono, (size_t)(n * (int)sizeof(int16_t)), 0);
@@ -226,6 +239,7 @@ void audio_router_sco_end(void)
void audio_router_sco_feed_playback(const uint8_t *pcm, uint32_t len)
{
if (s_sco_play_rb && s_sco_active) {
s_dbg_in_bytes += len;
xRingbufferSend(s_sco_play_rb, pcm, len, 0);
}
}