From 9a6f169ef46f71b19e01e471a0e65f0f3b5a3271 Mon Sep 17 00:00:00 2001 From: yangfeng Date: Tue, 28 Jul 2026 09:52:41 +0800 Subject: [PATCH] fix(bt): do not cap AVDTP Discover results by local SEP count - Closes https://github.com/espressif/esp-idf/issues/18848 --- components/bt/host/bluedroid/bta/av/include/bta_av_int.h | 4 ++-- .../bt/host/bluedroid/common/include/common/bt_target.h | 5 +++++ components/bt/host/bluedroid/stack/avdt/avdt_msg.c | 4 ++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/components/bt/host/bluedroid/bta/av/include/bta_av_int.h b/components/bt/host/bluedroid/bta/av/include/bta_av_int.h index 848a87bfc0e..593e78aa283 100644 --- a/components/bt/host/bluedroid/bta/av/include/bta_av_int.h +++ b/components/bt/host/bluedroid/bta/av/include/bta_av_int.h @@ -129,8 +129,8 @@ enum { #define BTA_AV_LAST_EVT BTA_AV_API_SET_DELAY_VALUE_EVT -/* maximum number of SEPS in stream discovery results */ -#define BTA_AV_NUM_SEPS 32 +/* maximum number of SEPS in stream discovery results (keep in sync with AVDT) */ +#define BTA_AV_NUM_SEPS AVDT_DIS_RES_MAX_NUM_SEPS /* initialization value for AVRC handle */ #define BTA_AV_RC_HANDLE_NONE 0xFF diff --git a/components/bt/host/bluedroid/common/include/common/bt_target.h b/components/bt/host/bluedroid/common/include/common/bt_target.h index be31eb621c0..aebb51af665 100644 --- a/components/bt/host/bluedroid/common/include/common/bt_target.h +++ b/components/bt/host/bluedroid/common/include/common/bt_target.h @@ -2316,6 +2316,11 @@ #define AVDT_NUM_SEPS 3 #endif +/* Maximum number of peer SEPs accepted in AVDTP Discover results. */ +#ifndef AVDT_DIS_RES_MAX_NUM_SEPS +#define AVDT_DIS_RES_MAX_NUM_SEPS 32 +#endif + /* Number of transport channels setup per media stream(audio or video) */ #ifndef AVDT_NUM_CHANNELS diff --git a/components/bt/host/bluedroid/stack/avdt/avdt_msg.c b/components/bt/host/bluedroid/stack/avdt/avdt_msg.c index b5eee31792c..724bce9ad13 100644 --- a/components/bt/host/bluedroid/stack/avdt/avdt_msg.c +++ b/components/bt/host/bluedroid/stack/avdt/avdt_msg.c @@ -992,8 +992,8 @@ static UINT8 avdt_msg_prs_discover_rsp(tAVDT_MSG *p_msg, UINT8 *p, UINT16 len) if (p_msg->discover_rsp.num_seps > (len / 2)) { p_msg->discover_rsp.num_seps = (len / 2); } - if (p_msg->discover_rsp.num_seps > AVDT_NUM_SEPS) { - p_msg->discover_rsp.num_seps = AVDT_NUM_SEPS; + if (p_msg->discover_rsp.num_seps > AVDT_DIS_RES_MAX_NUM_SEPS) { + p_msg->discover_rsp.num_seps = AVDT_DIS_RES_MAX_NUM_SEPS; } /* parse out sep info */