From 2e30c74883999b758a51ddeb439d9fcffea48451 Mon Sep 17 00:00:00 2001 From: Mitch Cairns Date: Sun, 2 Feb 2025 17:11:33 -0800 Subject: [PATCH 1/2] feat(bt): Implement SDK Config SDP size options Closes https://github.com/espressif/esp-idf/pull/15321 --- components/bt/host/bluedroid/Kconfig.in | 20 +++++++++++++++++++ .../include/common/bluedroid_user_config.h | 14 +++++++++++++ .../common/include/common/bt_target.h | 9 +++++++-- 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/components/bt/host/bluedroid/Kconfig.in b/components/bt/host/bluedroid/Kconfig.in index 6fb1d3d219..7f69275544 100644 --- a/components/bt/host/bluedroid/Kconfig.in +++ b/components/bt/host/bluedroid/Kconfig.in @@ -103,6 +103,26 @@ config BT_L2CAP_ENABLED This enables the Logical Link Control and Adaptation Layer Protocol. Only supported classic bluetooth. +config BT_SDP_PAD_LEN + int "BT SDP attributes allocated length (bytes)" + depends on BT_CLASSIC_ENABLED + default 300 + range 300 1024 + help + This is the total size of all SDP attributes allowed. + Any attributes that exceed this size are truncated. + The default value is 300. + +config BT_SDP_ATTR_LEN + int "BT SDP attribute allocated length (bytes)" + depends on BT_CLASSIC_ENABLED + default 400 + range 400 1024 + help + This is the maximum allowed size for a single SDP attribute. + Any attributes that exceed this size are truncated. + The default value is 400. + menuconfig BT_HFP_ENABLE bool "Hands Free/Handset Profile" depends on BT_CLASSIC_ENABLED diff --git a/components/bt/host/bluedroid/common/include/common/bluedroid_user_config.h b/components/bt/host/bluedroid/common/include/common/bluedroid_user_config.h index 17aeeae857..b332dc6bbe 100644 --- a/components/bt/host/bluedroid/common/include/common/bluedroid_user_config.h +++ b/components/bt/host/bluedroid/common/include/common/bluedroid_user_config.h @@ -53,6 +53,20 @@ #define UC_BT_L2CAP_ENABLED FALSE #endif +// SDP Pad Length +#ifdef CONFIG_BT_SDP_PAD_LEN +#define UC_SDP_MAX_PAD_LEN CONFIG_BT_SDP_PAD_LEN +#else +#define UC_SDP_MAX_PAD_LEN 300 +#endif + +// SDP Max Attribute Length +#ifdef CONFIG_BT_SDP_ATTR_LEN +#define UC_SDP_MAX_ATTR_LEN CONFIG_BT_SDP_ATTR_LEN +#else +#define UC_SDP_MAX_ATTR_LEN 400 +#endif + //HFP(AG) #ifdef CONFIG_BT_HFP_AG_ENABLE #define UC_BT_HFP_AG_ENABLED CONFIG_BT_HFP_AG_ENABLE 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 a3367fb346..a2b2f64d92 100644 --- a/components/bt/host/bluedroid/common/include/common/bt_target.h +++ b/components/bt/host/bluedroid/common/include/common/bt_target.h @@ -1518,12 +1518,17 @@ #endif /* defined(HID_DEV_INCLUDED) && (HID_DEV_INCLUDED==TRUE) */ #endif -#ifndef SDP_MAX_PAD_LEN +/* The maximum length, in bytes, of all SDP attributes combined. */ +#if defined(UC_SDP_MAX_PAD_LEN) +#define SDP_MAX_PAD_LEN UC_SDP_MAX_PAD_LEN +#elif !defined(SDP_MAX_PAD_LEN) #define SDP_MAX_PAD_LEN 300 #endif /* The maximum length, in bytes, of an attribute. */ -#ifndef SDP_MAX_ATTR_LEN +#if defined(UC_SDP_MAX_ATTR_LEN) +#define SDP_MAX_ATTR_LEN UC_SDP_MAX_ATTR_LEN +#elif !defined(SDP_MAX_ATTR_LEN) #define SDP_MAX_ATTR_LEN 400 #endif From 7c28af0945f298103eff221aba980eeb1c4394c4 Mon Sep 17 00:00:00 2001 From: gongyantao Date: Fri, 14 Feb 2025 11:34:19 +0800 Subject: [PATCH 2/2] change(bt): optimize the macro definition for sdp_max_pad_len --- components/bt/host/bluedroid/Kconfig.in | 12 ++++++------ .../common/include/common/bluedroid_user_config.h | 2 +- .../host/bluedroid/common/include/common/bt_target.h | 8 ++------ 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/components/bt/host/bluedroid/Kconfig.in b/components/bt/host/bluedroid/Kconfig.in index 7f69275544..11eda2002d 100644 --- a/components/bt/host/bluedroid/Kconfig.in +++ b/components/bt/host/bluedroid/Kconfig.in @@ -104,24 +104,24 @@ config BT_L2CAP_ENABLED Only supported classic bluetooth. config BT_SDP_PAD_LEN - int "BT SDP attributes allocated length (bytes)" + int "One or more BT SDP attributes total allocated length (bytes)" depends on BT_CLASSIC_ENABLED default 300 - range 300 1024 + range BT_SDP_ATTR_LEN 1024 help This is the total size of all SDP attributes allowed. Any attributes that exceed this size are truncated. The default value is 300. config BT_SDP_ATTR_LEN - int "BT SDP attribute allocated length (bytes)" + int "Single BT SDP attribute allocated length (bytes)" depends on BT_CLASSIC_ENABLED - default 400 - range 400 1024 + default 300 + range 300 1024 help This is the maximum allowed size for a single SDP attribute. Any attributes that exceed this size are truncated. - The default value is 400. + The default value is 300. menuconfig BT_HFP_ENABLE bool "Hands Free/Handset Profile" diff --git a/components/bt/host/bluedroid/common/include/common/bluedroid_user_config.h b/components/bt/host/bluedroid/common/include/common/bluedroid_user_config.h index b332dc6bbe..e0a42039d6 100644 --- a/components/bt/host/bluedroid/common/include/common/bluedroid_user_config.h +++ b/components/bt/host/bluedroid/common/include/common/bluedroid_user_config.h @@ -64,7 +64,7 @@ #ifdef CONFIG_BT_SDP_ATTR_LEN #define UC_SDP_MAX_ATTR_LEN CONFIG_BT_SDP_ATTR_LEN #else -#define UC_SDP_MAX_ATTR_LEN 400 +#define UC_SDP_MAX_ATTR_LEN 300 #endif //HFP(AG) 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 a2b2f64d92..06c12504b4 100644 --- a/components/bt/host/bluedroid/common/include/common/bt_target.h +++ b/components/bt/host/bluedroid/common/include/common/bt_target.h @@ -1519,17 +1519,13 @@ #endif /* The maximum length, in bytes, of all SDP attributes combined. */ -#if defined(UC_SDP_MAX_PAD_LEN) +#ifndef SDP_MAX_PAD_LEN #define SDP_MAX_PAD_LEN UC_SDP_MAX_PAD_LEN -#elif !defined(SDP_MAX_PAD_LEN) -#define SDP_MAX_PAD_LEN 300 #endif /* The maximum length, in bytes, of an attribute. */ -#if defined(UC_SDP_MAX_ATTR_LEN) +#ifndef SDP_MAX_ATTR_LEN #define SDP_MAX_ATTR_LEN UC_SDP_MAX_ATTR_LEN -#elif !defined(SDP_MAX_ATTR_LEN) -#define SDP_MAX_ATTR_LEN 400 #endif /* The maximum number of attribute filters supported by SDP databases. */