From c4da788094d9ef13f01395fb5f27415c5ca1d472 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 ac6bd18b184..774320e0f4d 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 @@ -145,8 +145,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 9df86c6bec3..d9dc52e63f8 100644 --- a/components/bt/host/bluedroid/common/include/common/bt_target.h +++ b/components/bt/host/bluedroid/common/include/common/bt_target.h @@ -2431,6 +2431,11 @@ #define AVDT_NUM_SEPS UC_BT_A2DP_SEP_NUM_MAX #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 */