menu Bluetooth


config BT_ENABLED
    bool "Bluetooth"
    help
        Select this option to enable Bluetooth and show the submenu with Bluetooth configuration choices.

menu "Bluetooth controller"
    visible if BT_ENABLED

choice BTDM_CONTROLLER_MODE
    prompt "Bluetooth controller mode (BR/EDR/BLE/DUALMODE)"
    depends on BT_ENABLED
    help
        Specify the bluetooth controller mode (BR/EDR, BLE or dual mode).

config BTDM_CONTROLLER_MODE_BLE_ONLY
    bool "BLE Only"

config BTDM_CONTROLLER_MODE_BR_EDR_ONLY
    bool "BR/EDR Only"

config BTDM_CONTROLLER_MODE_BTDM
    bool "Bluetooth Dual Mode"

endchoice

config BTDM_CONTROLLER_BLE_MAX_CONN
    int "BLE Max Connections"
    depends on BTDM_CONTROLLER_MODE_BLE_ONLY || BTDM_CONTROLLER_MODE_BTDM
    default 3
    range 1 9
    help
        BLE maximum connections of bluetooth controller.
        Each connection uses 1KB static DRAM whenever the BT controller is enabled.

config BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN
    int "BR/EDR ACL Max Connections"
    depends on BTDM_CONTROLLER_MODE_BR_EDR_ONLY || BTDM_CONTROLLER_MODE_BTDM
    default 2
    range 1 7
    help
        BR/EDR ACL maximum connections of bluetooth controller.
        Each connection uses 1.2KB static DRAM whenever the BT controller is enabled.

config BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN
    int "BR/EDR Sync(SCO/eSCO) Max Connections"
    depends on BTDM_CONTROLLER_MODE_BR_EDR_ONLY || BTDM_CONTROLLER_MODE_BTDM
    default 0
    range 0 3
    help
        BR/EDR Synchronize maximum connections of bluetooth controller.
        Each connection uses 2KB static DRAM whenever the BT controller is enabled.

choice BTDM_CONTROLLER_BR_EDR_SCO_DATA_PATH
    prompt "BR/EDR Sync(SCO/eSCO) default data path"
    depends on BTDM_CONTROLLER_MODE_BR_EDR_ONLY || BTDM_CONTROLLER_MODE_BTDM
    default BTDM_CONTROLLER_BR_EDR_SCO_DATA_PATH_PCM
    help
        SCO data path, i.e. HCI or PCM.
        SCO data can be sent/received through HCI synchronous packets, or the data
        can be routed to on-chip PCM module on ESP32. PCM input/output signals can
        be "matrixed" to GPIOs. The default data path can also be set using API
        "esp_bredr_sco_datapath_set"

    config BTDM_CONTROLLER_BR_EDR_SCO_DATA_PATH_HCI
        bool "HCI"
    config BTDM_CONTROLLER_BR_EDR_SCO_DATA_PATH_PCM
        bool "PCM"
endchoice

config BTDM_CONTROLLER_BR_EDR_SCO_DATA_PATH_EFF
    int
    default 0 if BTDM_CONTROLLER_BR_EDR_SCO_DATA_PATH_HCI
    default 1 if BTDM_CONTROLLER_BR_EDR_SCO_DATA_PATH_PCM
    default 0

config BTDM_CONTROLLER_AUTO_LATENCY
    bool "Auto latency"
    depends on BTDM_CONTROLLER_MODE_BTDM
    default n
    help
        BLE auto latency, used to enhance classic BT performance
        while classic BT and BLE are enabled at the same time.

config BTDM_CONTROLLER_AUTO_LATENCY_EFF
    bool
    default BTDM_CONTROLLER_AUTO_LATENCY if BTDM_CONTROLLER_MODE_BTDM
    default n

config BTDM_CONTROLLER_BLE_MAX_CONN_EFF
    int
    default BTDM_CONTROLLER_BLE_MAX_CONN if BTDM_CONTROLLER_MODE_BLE_ONLY || BTDM_CONTROLLER_MODE_BTDM
    default 0

config BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF
    int
    default BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN if BTDM_CONTROLLER_MODE_BR_EDR_ONLY || BTDM_CONTROLLER_MODE_BTDM
    default 0

config BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF
    int
    default BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN if BTDM_CONTROLLER_MODE_BR_EDR_ONLY || BTDM_CONTROLLER_MODE_BTDM
    default 0

choice BTDM_CONTROLLER_PINNED_TO_CORE_CHOICE
    prompt "The cpu core which bluetooth controller run"
    depends on BT_ENABLED && !FREERTOS_UNICORE
    help
        Specify the cpu core to run bluetooth controller.
        Can not specify no-affinity.

config BTDM_CONTROLLER_PINNED_TO_CORE_0
    bool "Core 0 (PRO CPU)"
config BTDM_CONTROLLER_PINNED_TO_CORE_1
    bool "Core 1 (APP CPU)"
    depends on !FREERTOS_UNICORE
endchoice

config BTDM_CONTROLLER_PINNED_TO_CORE
    int
    default 0 if BTDM_CONTROLLER_PINNED_TO_CORE_0
    default 1 if BTDM_CONTROLLER_PINNED_TO_CORE_1
    default 0

choice BTDM_CONTROLLER_HCI_MODE_CHOICE
    prompt "HCI mode"
    depends on BT_ENABLED
    help
        Speicify HCI mode as VHCI or UART(H4)

config BTDM_CONTROLLER_HCI_MODE_VHCI
    bool "VHCI"
    help
        Normal option. Mostly, choose this VHCI when bluetooth host run on ESP32, too.

config BTDM_CONTROLLER_HCI_MODE_UART_H4
    bool "UART(H4)"
    help
        If use external bluetooth host which run on other hardware and use UART as the HCI interface,
        choose this option.
endchoice

menu "HCI UART(H4) Options"
    visible if BTDM_CONTROLLER_HCI_MODE_UART_H4

config BT_HCI_UART_NO
    int "UART Number for HCI"
    depends on BTDM_CONTROLLER_HCI_MODE_UART_H4
    range 1 2
    default 1
    help
        Uart number for HCI. The available uart is UART1 and UART2.

config BT_HCI_UART_BAUDRATE
    int "UART Baudrate for HCI"
    depends on BTDM_CONTROLLER_HCI_MODE_UART_H4
    range 115200 921600
    default 921600
    help
        UART Baudrate for HCI. Please use standard baudrate.
endmenu

menu "MODEM SLEEP Options"
    visible if BT_ENABLED

config BTDM_CONTROLLER_MODEM_SLEEP
    bool "Bluetooth modem sleep"
    depends on BT_ENABLED
    default y
    help
        Enable/disable bluetooth controller low power mode.

choice BTDM_MODEM_SLEEP_MODE
    prompt "Bluetooth Modem sleep mode"
    depends on BTDM_CONTROLLER_MODEM_SLEEP
    help
        To select which strategy to use for modem sleep

config BTDM_MODEM_SLEEP_MODE_ORIG
    bool "ORIG Mode(sleep with low power clock)"
    help
        ORIG mode is a bluetooth sleep mode that can be used for dual mode controller. In this mode, bluetooth controller
        sleeps between BR/EDR frames and BLE events. A low power clock is used to maintain bluetooth reference clock.
config BTDM_MODEM_SLEEP_MODE_EVED
    bool "EVED Mode(For internal test only)"
    help
        EVED mode is for BLE only and is only for internal test. Do not use it for production. this mode is not compatible
        with DFS nor light sleep
endchoice

choice BTDM_LOW_POWER_CLOCK
    prompt "Bluetooth low power clock"
    depends on BTDM_MODEM_SLEEP_MODE_ORIG
    help
        Select the low power clock source for bluetooth controller

config BTDM_LPCLK_SEL_MAIN_XTAL
    bool "Main crystal"
    help
        Main crystal can be used as low power clock for bluetooth modem sleep. If this option is selected, bluetooth
        modem sleep can work under Dynamic Frequency Scaling(DFS) enabled, but cannot work when light sleep is enabled.
        Main crystal has a relatively better performance than other bluetooth low power clock sources.
config BTDM_LPCLK_SEL_EXT_32K_XTAL
    bool "External 32kHz crystal"
    depends on ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL
endchoice
endmenu

config BLE_SCAN_DUPLICATE
    bool "BLE Scan Duplicate Options"
    depends on (BTDM_CONTROLLER_MODE_BTDM || BTDM_CONTROLLER_MODE_BLE_ONLY)
    default y
    help
        This select enables parameters setting of BLE scan duplicate.

choice SCAN_DUPLICATE_TYPE
    prompt "Scan Duplicate Type"
    default SCAN_DUPLICATE_BY_DEVICE_ADDR
    depends on BLE_SCAN_DUPLICATE
    help
        Scan duplicate have three ways. one is "Scan Duplicate By Device Address", This way is to use advertiser address
        filtering. The adv packet of the same address is only allowed to be reported once. Another way is "Scan Duplicate
        By Device Address And Advertising Data". This way is to use advertising data and device address filtering. All
        different adv packets with the same address are allowed to be reported. The last way is "Scan Duplicate By Advertising
        Data". This way is to use advertising data filtering. All same advertising data only allow to be reported once even though
        they are from different devices.

config SCAN_DUPLICATE_BY_DEVICE_ADDR
    bool "Scan Duplicate By Device Address"
    help
        This way is to use advertiser address filtering. The adv packet of the same address is only allowed to be reported once

config SCAN_DUPLICATE_BY_ADV_DATA
    bool "Scan Duplicate By Advertising Data"
    help
    This way is to use advertising data filtering. All same advertising data only allow to be reported once even though
    they are from different devices.

config SCAN_DUPLICATE_BY_ADV_DATA_AND_DEVICE_ADDR
    bool "Scan Duplicate By Device Address And Advertising Data"
    help
    This way is to use advertising data and device address filtering. All different adv packets with the same address are
    allowed to be reported.
endchoice

config SCAN_DUPLICATE_TYPE
    int
    depends on BLE_SCAN_DUPLICATE
    default 0 if SCAN_DUPLICATE_BY_DEVICE_ADDR
    default 1 if SCAN_DUPLICATE_BY_ADV_DATA
    default 2 if SCAN_DUPLICATE_BY_ADV_DATA_AND_DEVICE_ADDR
    default 0

config DUPLICATE_SCAN_CACHE_SIZE
    int "Maximum number of devices in scan duplicate filter"
    depends on BLE_SCAN_DUPLICATE
    range 10 1000
    default 200
    help
        Maximum number of devices which can be recorded in scan duplicate filter.
        When the maximum amount of device in the filter is reached, the cache will be refreshed.

config BLE_MESH_SCAN_DUPLICATE_EN
    bool "Special duplicate scan mechanism for BLE Mesh scan"
    depends on BLE_SCAN_DUPLICATE
    default n
    help
        This enables the BLE scan duplicate for special BLE Mesh scan.

config MESH_DUPLICATE_SCAN_CACHE_SIZE
    int "Maximum number of Mesh adv packets in scan duplicate filter"
    depends on BLE_MESH_SCAN_DUPLICATE_EN
    range 10 1000
    default 200
    help
        Maximum number of adv packets which can be recorded in duplicate scan cache for BLE Mesh.
        When the maximum amount of device in the filter is reached, the cache will be refreshed.

config BLE_ADV_REPORT_FLOW_CONTROL_SUPPORTED
    bool "BLE adv report flow control supported"
    depends on (BTDM_CONTROLLER_MODE_BTDM || BTDM_CONTROLLER_MODE_BLE_ONLY)
    default y
    help
        The function is mainly used to enable flow control for advertising reports. When it is enabled,
        advertising reports will be discarded by the controller if the number of unprocessed advertising
        reports exceeds the size of BLE adv report flow control.

config BLE_ADV_REPORT_FLOW_CONTROL_NUM
    int "BLE adv report flow control number"
    depends on BLE_ADV_REPORT_FLOW_CONTROL_SUPPORTED
    range 50 1000
    default 100
    help
        The number of unprocessed advertising report that Bluedroid can save.If you set
        `BLE_ADV_REPORT_FLOW_CONTROL_NUM` to a small value, this may cause adv packets lost.
        If you set `BLE_ADV_REPORT_FLOW_CONTROL_NUM` to a large value, Bluedroid may cache a
        lot of adv packets and this may cause system memory run out. For example, if you set
        it to 50, the maximum memory consumed by host is 35 * 50 bytes. Please set
        `BLE_ADV_REPORT_FLOW_CONTROL_NUM` according to your system free memory and handle adv
        packets as fast as possible, otherwise it will cause adv packets lost.

config BLE_ADV_REPORT_DISCARD_THRSHOLD
    int "BLE adv lost event threshold value"
    depends on BLE_ADV_REPORT_FLOW_CONTROL_SUPPORTED
    range 1 1000
    default 20
    help
        When adv report flow control is enabled, The ADV lost event will be generated when the number
        of ADV packets lost in the controller reaches this threshold. It is better to set a larger value.
        If you set `BLE_ADV_REPORT_DISCARD_THRSHOLD` to a small value or printf every adv lost event, it
        may cause adv packets lost more.

menuconfig BTDM_COEX_BT_OPTIONS
    bool "Coexistence Bluetooth Side Options"
    depends on SW_COEXIST_ENABLE
    default n
    help
        Options of Bluetooth Side of WiFi and bluetooth coexistence.

config BTDM_COEX_BLE_ADV_HIGH_PRIORITY
    bool "Improve BLE ADV priority for WiFi & BLE coexistence"
    depends on BTDM_COEX_BT_OPTIONS
    default n
    help
        Improve BLE ADV coexistence priority to make it better performance.
        For example, BLE mesh need to enable this option to improve BLE adv performance.

endmenu

menuconfig BLUEDROID_ENABLED
    bool "Bluedroid Enable"
    depends on BTDM_CONTROLLER_HCI_MODE_VHCI
    default y
    help
        This enables the default Bluedroid Bluetooth stack

choice BLUEDROID_PINNED_TO_CORE_CHOICE
    prompt "The cpu core which Bluedroid run"
    depends on BLUEDROID_ENABLED && !FREERTOS_UNICORE
    help
        Which the cpu core to run Bluedroid. Can choose core0 and core1.
        Can not specify no-affinity.

config BLUEDROID_PINNED_TO_CORE_0
    bool "Core 0 (PRO CPU)"
config BLUEDROID_PINNED_TO_CORE_1
    bool "Core 1 (APP CPU)"
    depends on !FREERTOS_UNICORE
endchoice

config BLUEDROID_PINNED_TO_CORE
    int
    depends on BLUEDROID_ENABLED
    default 0 if BLUEDROID_PINNED_TO_CORE_0
    default 1 if BLUEDROID_PINNED_TO_CORE_1
    default 0

config BTC_TASK_STACK_SIZE
    int "Bluetooth event (callback to application) task stack size"
    depends on BLUEDROID_ENABLED
    default 3072
    help
        This select btc task stack size

config BTU_TASK_STACK_SIZE
    int "Bluetooth Bluedroid Host Stack task stack size"
    depends on BLUEDROID_ENABLED
    default 4096
    help
        This select btu task stack size

config BLUEDROID_MEM_DEBUG
    bool "Bluedroid memory debug"
    depends on BLUEDROID_ENABLED
    default n
    help
        Bluedroid memory debug

config CLASSIC_BT_ENABLED
    bool "Classic Bluetooth"
    depends on BLUEDROID_ENABLED
    default n
    help
        For now this option needs "SMP_ENABLE" to be set to yes

config A2DP_ENABLE
    bool "A2DP"
    depends on CLASSIC_BT_ENABLED
    default n
    help
        Advanced Audio Distrubution Profile

config A2DP_SINK_TASK_STACK_SIZE
    int "A2DP sink (audio stream decoding) task stack size"
    depends on A2DP_ENABLE
    default 2048

config A2DP_SOURCE_TASK_STACK_SIZE
    int "A2DP source (audio stream encoding) task stack size"
    depends on A2DP_ENABLE
    default 2048

config BT_SPP_ENABLED
    bool "SPP"
    depends on CLASSIC_BT_ENABLED
    default n
    help
        This enables the Serial Port Profile

config HFP_ENABLE
    bool "Hands Free/Handset Profile"
    depends on CLASSIC_BT_ENABLED
    default n

choice HFP_ROLE
    prompt "Hands-free Profile Role configuration"
    depends on HFP_ENABLE

config HFP_CLIENT_ENABLE
    bool "Hands Free Unit"
endchoice

choice HFP_AUDIO_DATA_PATH
    prompt "audio(SCO) data path"
    depends on HFP_ENABLE
    help
        SCO data path, i.e. HCI or PCM. This option is set using API
        "esp_bredr_sco_datapath_set" in Bluetooth host. Default SCO data
        path can also be set in Bluetooth Controller.

config HFP_AUDIO_DATA_PATH_PCM
    bool "PCM"
config HFP_AUDIO_DATA_PATH_HCI
    bool "HCI"
endchoice

config GATTS_ENABLE
    bool "Include GATT server module(GATTS)"
    depends on BLUEDROID_ENABLED && (BTDM_CONTROLLER_MODE_BTDM || BTDM_CONTROLLER_MODE_BLE_ONLY)
    default y
    help
        This option can be disabled when the app work only on gatt client mode

choice GATTS_SEND_SERVICE_CHANGE_MODE
    prompt "GATTS Service Change Mode"
    default GATTS_SEND_SERVICE_CHANGE_AUTO
    depends on GATTS_ENABLE
    help
        Service change indication mode for GATT Server.

config GATTS_SEND_SERVICE_CHANGE_MANUAL
    bool "GATTS manually send service change indication"
    help
        Manually send service change indication through API esp_ble_gatts_send_service_change_indication()

config GATTS_SEND_SERVICE_CHANGE_AUTO
    bool "GATTS automatically send service change indication"
    help
        Let Bluedroid handle the service change indication internally

endchoice

config GATTS_SEND_SERVICE_CHANGE_MODE
    int
    depends on GATTS_ENABLE
    default 0 if GATTS_SEND_SERVICE_CHANGE_AUTO
    default 1 if GATTS_SEND_SERVICE_CHANGE_MANUAL
    default 0

config GATTC_ENABLE
    bool "Include GATT client module(GATTC)"
    depends on BLUEDROID_ENABLED && (BTDM_CONTROLLER_MODE_BTDM || BTDM_CONTROLLER_MODE_BLE_ONLY)
    default y
    help
        This option can be close when the app work only on gatt server mode

config GATTC_CACHE_NVS_FLASH
    bool "Save gattc cache data to nvs flash"
    depends on GATTC_ENABLE && (BTDM_CONTROLLER_MODE_BTDM || BTDM_CONTROLLER_MODE_BLE_ONLY)
    default n
    help
        This select can save gattc cache data to nvs flash

config BLE_SMP_ENABLE
   bool "Include BLE security module(SMP)"
   depends on BLUEDROID_ENABLED && (BTDM_CONTROLLER_MODE_BTDM || BTDM_CONTROLLER_MODE_BLE_ONLY)
   default y
   help
       This option can be close when the app not used the ble security connect.

config SMP_SLAVE_CON_PARAMS_UPD_ENABLE
        bool "Slave enable connection parameters update during pairing"
        depends on BLE_SMP_ENABLE
        default n
        help
            In order to reduce the pairing time, slave actively initiates connection parameters update during pairing.

config BT_STACK_NO_LOG
    bool "Disable BT debug logs (minimize bin size)"
    depends on BLUEDROID_ENABLED
    default n
    help
        This select can save the rodata code size

menu "BT DEBUG LOG LEVEL"
    depends on BLUEDROID_ENABLED && !BT_STACK_NO_LOG

choice HCI_INITIAL_TRACE_LEVEL
    prompt "HCI layer"
    default HCI_TRACE_LEVEL_WARNING
    depends on BLUEDROID_ENABLED && !BT_STACK_NO_LOG
    help
        Define BT trace level for HCI layer

config HCI_TRACE_LEVEL_NONE
    bool "NONE"
config HCI_TRACE_LEVEL_ERROR
    bool "ERROR"
config HCI_TRACE_LEVEL_WARNING
    bool "WARNING"
config HCI_TRACE_LEVEL_API
    bool "API"
config HCI_TRACE_LEVEL_EVENT
    bool "EVENT"
config HCI_TRACE_LEVEL_DEBUG
    bool "DEBUG"
config HCI_TRACE_LEVEL_VERBOSE
    bool "VERBOSE"
endchoice

config HCI_INITIAL_TRACE_LEVEL
    int
    depends on BLUEDROID_ENABLED
    default 0 if HCI_TRACE_LEVEL_NONE
    default 1 if HCI_TRACE_LEVEL_ERROR
    default 2 if HCI_TRACE_LEVEL_WARNING
    default 3 if HCI_TRACE_LEVEL_API
    default 4 if HCI_TRACE_LEVEL_EVENT
    default 5 if HCI_TRACE_LEVEL_DEBUG
    default 6 if HCI_TRACE_LEVEL_VERBOSE
    default 2

choice BTM_INITIAL_TRACE_LEVEL
    prompt "BTM layer"
    default BTM_TRACE_LEVEL_WARNING
    depends on BLUEDROID_ENABLED && !BT_STACK_NO_LOG
    help
        Define BT trace level for BTM layer

config BTM_TRACE_LEVEL_NONE
    bool "NONE"
config BTM_TRACE_LEVEL_ERROR
    bool "ERROR"
config BTM_TRACE_LEVEL_WARNING
    bool "WARNING"
config BTM_TRACE_LEVEL_API
    bool "API"
config BTM_TRACE_LEVEL_EVENT
    bool "EVENT"
config BTM_TRACE_LEVEL_DEBUG
    bool "DEBUG"
config BTM_TRACE_LEVEL_VERBOSE
    bool "VERBOSE"
endchoice

config BTM_INITIAL_TRACE_LEVEL
    int
    depends on BLUEDROID_ENABLED
    default 0 if BTM_TRACE_LEVEL_NONE
    default 1 if BTM_TRACE_LEVEL_ERROR
    default 2 if BTM_TRACE_LEVEL_WARNING
    default 3 if BTM_TRACE_LEVEL_API
    default 4 if BTM_TRACE_LEVEL_EVENT
    default 5 if BTM_TRACE_LEVEL_DEBUG
    default 6 if BTM_TRACE_LEVEL_VERBOSE
    default 2

choice L2CAP_INITIAL_TRACE_LEVEL
    prompt "L2CAP layer"
    default L2CAP_TRACE_LEVEL_WARNING
    depends on BLUEDROID_ENABLED && !BT_STACK_NO_LOG
    help
        Define BT trace level for L2CAP layer

config L2CAP_TRACE_LEVEL_NONE
    bool "NONE"
config L2CAP_TRACE_LEVEL_ERROR
    bool "ERROR"
config L2CAP_TRACE_LEVEL_WARNING
    bool "WARNING"
config L2CAP_TRACE_LEVEL_API
    bool "API"
config L2CAP_TRACE_LEVEL_EVENT
    bool "EVENT"
config L2CAP_TRACE_LEVEL_DEBUG
    bool "DEBUG"
config L2CAP_TRACE_LEVEL_VERBOSE
    bool "VERBOSE"
endchoice

config L2CAP_INITIAL_TRACE_LEVEL
    int
    depends on BLUEDROID_ENABLED
    default 0 if L2CAP_TRACE_LEVEL_NONE
    default 1 if L2CAP_TRACE_LEVEL_ERROR
    default 2 if L2CAP_TRACE_LEVEL_WARNING
    default 3 if L2CAP_TRACE_LEVEL_API
    default 4 if L2CAP_TRACE_LEVEL_EVENT
    default 5 if L2CAP_TRACE_LEVEL_DEBUG
    default 6 if L2CAP_TRACE_LEVEL_VERBOSE
    default 2

choice RFCOMM_INITIAL_TRACE_LEVEL
    prompt "RFCOMM layer"
    default RFCOMM_TRACE_LEVEL_WARNING
    depends on BLUEDROID_ENABLED && !BT_STACK_NO_LOG
    help
        Define BT trace level for RFCOMM layer

config RFCOMM_TRACE_LEVEL_NONE
    bool "NONE"
config RFCOMM_TRACE_LEVEL_ERROR
    bool "ERROR"
config RFCOMM_TRACE_LEVEL_WARNING
    bool "WARNING"
config RFCOMM_TRACE_LEVEL_API
    bool "API"
config RFCOMM_TRACE_LEVEL_EVENT
    bool "EVENT"
config RFCOMM_TRACE_LEVEL_DEBUG
    bool "DEBUG"
config RFCOMM_TRACE_LEVEL_VERBOSE
    bool "VERBOSE"
endchoice

config RFCOMM_INITIAL_TRACE_LEVEL
    int
    depends on BLUEDROID_ENABLED
    default 0 if RFCOMM_TRACE_LEVEL_NONE
    default 1 if RFCOMM_TRACE_LEVEL_ERROR
    default 2 if RFCOMM_TRACE_LEVEL_WARNING
    default 3 if RFCOMM_TRACE_LEVEL_API
    default 4 if RFCOMM_TRACE_LEVEL_EVENT
    default 5 if RFCOMM_TRACE_LEVEL_DEBUG
    default 6 if RFCOMM_TRACE_LEVEL_VERBOSE
    default 2

choice SDP_INITIAL_TRACE_LEVEL
    prompt "SDP layer"
    default SDP_TRACE_LEVEL_WARNING
    depends on BLUEDROID_ENABLED && !BT_STACK_NO_LOG
    help
        Define BT trace level for SDP layer

config SDP_TRACE_LEVEL_NONE
    bool "NONE"
config SDP_TRACE_LEVEL_ERROR
    bool "ERROR"
config SDP_TRACE_LEVEL_WARNING
    bool "WARNING"
config SDP_TRACE_LEVEL_API
    bool "API"
config SDP_TRACE_LEVEL_EVENT
    bool "EVENT"
config SDP_TRACE_LEVEL_DEBUG
    bool "DEBUG"
config SDP_TRACE_LEVEL_VERBOSE
    bool "VERBOSE"
endchoice

config SDP_INITIAL_TRACE_LEVEL
    int
    depends on BLUEDROID_ENABLED
    default 0 if SDP_TRACE_LEVEL_NONE
    default 1 if SDP_TRACE_LEVEL_ERROR
    default 2 if SDP_TRACE_LEVEL_WARNING
    default 3 if SDP_TRACE_LEVEL_API
    default 4 if SDP_TRACE_LEVEL_EVENT
    default 5 if SDP_TRACE_LEVEL_DEBUG
    default 6 if SDP_TRACE_LEVEL_VERBOSE
    default 2

choice GAP_INITIAL_TRACE_LEVEL
    prompt "GAP layer"
    default GAP_TRACE_LEVEL_WARNING
    depends on BLUEDROID_ENABLED && !BT_STACK_NO_LOG
    help
        Define BT trace level for GAP layer

config GAP_TRACE_LEVEL_NONE
    bool "NONE"
config GAP_TRACE_LEVEL_ERROR
    bool "ERROR"
config GAP_TRACE_LEVEL_WARNING
    bool "WARNING"
config GAP_TRACE_LEVEL_API
    bool "API"
config GAP_TRACE_LEVEL_EVENT
    bool "EVENT"
config GAP_TRACE_LEVEL_DEBUG
    bool "DEBUG"
config GAP_TRACE_LEVEL_VERBOSE
    bool "VERBOSE"
endchoice

config GAP_INITIAL_TRACE_LEVEL
    int
    depends on BLUEDROID_ENABLED
    default 0 if GAP_TRACE_LEVEL_NONE
    default 1 if GAP_TRACE_LEVEL_ERROR
    default 2 if GAP_TRACE_LEVEL_WARNING
    default 3 if GAP_TRACE_LEVEL_API
    default 4 if GAP_TRACE_LEVEL_EVENT
    default 5 if GAP_TRACE_LEVEL_DEBUG
    default 6 if GAP_TRACE_LEVEL_VERBOSE
    default 2

choice BNEP_INITIAL_TRACE_LEVEL
    prompt "BNEP layer"
    default BNEP_TRACE_LEVEL_WARNING
    depends on BLUEDROID_ENABLED && !BT_STACK_NO_LOG
    help
        Define BT trace level for BNEP layer

config BNEP_TRACE_LEVEL_NONE
    bool "NONE"
config BNEP_TRACE_LEVEL_ERROR
    bool "ERROR"
config BNEP_TRACE_LEVEL_WARNING
    bool "WARNING"
config BNEP_TRACE_LEVEL_API
    bool "API"
config BNEP_TRACE_LEVEL_EVENT
    bool "EVENT"
config BNEP_TRACE_LEVEL_DEBUG
    bool "DEBUG"
config BNEP_TRACE_LEVEL_VERBOSE
    bool "VERBOSE"
endchoice

config BNEP_INITIAL_TRACE_LEVEL
    int
    depends on BLUEDROID_ENABLED
    default 0 if BNEP_TRACE_LEVEL_NONE
    default 1 if BNEP_TRACE_LEVEL_ERROR
    default 2 if BNEP_TRACE_LEVEL_WARNING
    default 3 if BNEP_TRACE_LEVEL_API
    default 4 if BNEP_TRACE_LEVEL_EVENT
    default 5 if BNEP_TRACE_LEVEL_DEBUG
    default 6 if BNEP_TRACE_LEVEL_VERBOSE
    default 2

choice PAN_INITIAL_TRACE_LEVEL
    prompt "PAN layer"
    default PAN_TRACE_LEVEL_WARNING
    depends on BLUEDROID_ENABLED && !BT_STACK_NO_LOG
    help
        Define BT trace level for PAN layer

config PAN_TRACE_LEVEL_NONE
    bool "NONE"
config PAN_TRACE_LEVEL_ERROR
    bool "ERROR"
config PAN_TRACE_LEVEL_WARNING
    bool "WARNING"
config PAN_TRACE_LEVEL_API
    bool "API"
config PAN_TRACE_LEVEL_EVENT
    bool "EVENT"
config PAN_TRACE_LEVEL_DEBUG
    bool "DEBUG"
config PAN_TRACE_LEVEL_VERBOSE
    bool "VERBOSE"
endchoice

config PAN_INITIAL_TRACE_LEVEL
    int
    depends on BLUEDROID_ENABLED
    default 0 if PAN_TRACE_LEVEL_NONE
    default 1 if PAN_TRACE_LEVEL_ERROR
    default 2 if PAN_TRACE_LEVEL_WARNING
    default 3 if PAN_TRACE_LEVEL_API
    default 4 if PAN_TRACE_LEVEL_EVENT
    default 5 if PAN_TRACE_LEVEL_DEBUG
    default 6 if PAN_TRACE_LEVEL_VERBOSE
    default 2

choice A2D_INITIAL_TRACE_LEVEL
    prompt "A2D layer"
    default A2D_TRACE_LEVEL_WARNING
    depends on BLUEDROID_ENABLED && !BT_STACK_NO_LOG
    help
        Define BT trace level for A2D layer

config A2D_TRACE_LEVEL_NONE
    bool "NONE"
config A2D_TRACE_LEVEL_ERROR
    bool "ERROR"
config A2D_TRACE_LEVEL_WARNING
    bool "WARNING"
config A2D_TRACE_LEVEL_API
    bool "API"
config A2D_TRACE_LEVEL_EVENT
    bool "EVENT"
config A2D_TRACE_LEVEL_DEBUG
    bool "DEBUG"
config A2D_TRACE_LEVEL_VERBOSE
    bool "VERBOSE"
endchoice

config A2D_INITIAL_TRACE_LEVEL
    int
    depends on BLUEDROID_ENABLED
    default 0 if A2D_TRACE_LEVEL_NONE
    default 1 if A2D_TRACE_LEVEL_ERROR
    default 2 if A2D_TRACE_LEVEL_WARNING
    default 3 if A2D_TRACE_LEVEL_API
    default 4 if A2D_TRACE_LEVEL_EVENT
    default 5 if A2D_TRACE_LEVEL_DEBUG
    default 6 if A2D_TRACE_LEVEL_VERBOSE
    default 2

choice AVDT_INITIAL_TRACE_LEVEL
    prompt "AVDT layer"
    default AVDT_TRACE_LEVEL_WARNING
    depends on BLUEDROID_ENABLED && !BT_STACK_NO_LOG
    help
        Define BT trace level for AVDT layer

config AVDT_TRACE_LEVEL_NONE
    bool "NONE"
config AVDT_TRACE_LEVEL_ERROR
    bool "ERROR"
config AVDT_TRACE_LEVEL_WARNING
    bool "WARNING"
config AVDT_TRACE_LEVEL_API
    bool "API"
config AVDT_TRACE_LEVEL_EVENT
    bool "EVENT"
config AVDT_TRACE_LEVEL_DEBUG
    bool "DEBUG"
config AVDT_TRACE_LEVEL_VERBOSE
    bool "VERBOSE"
endchoice

config AVDT_INITIAL_TRACE_LEVEL
    int
    depends on BLUEDROID_ENABLED
    default 0 if AVDT_TRACE_LEVEL_NONE
    default 1 if AVDT_TRACE_LEVEL_ERROR
    default 2 if AVDT_TRACE_LEVEL_WARNING
    default 3 if AVDT_TRACE_LEVEL_API
    default 4 if AVDT_TRACE_LEVEL_EVENT
    default 5 if AVDT_TRACE_LEVEL_DEBUG
    default 6 if AVDT_TRACE_LEVEL_VERBOSE
    default 2

choice AVCT_INITIAL_TRACE_LEVEL
    prompt "AVCT layer"
    default AVCT_TRACE_LEVEL_WARNING
    depends on BLUEDROID_ENABLED && !BT_STACK_NO_LOG
    help
        Define BT trace level for AVCT layer

config AVCT_TRACE_LEVEL_NONE
    bool "NONE"
config AVCT_TRACE_LEVEL_ERROR
    bool "ERROR"
config AVCT_TRACE_LEVEL_WARNING
    bool "WARNING"
config AVCT_TRACE_LEVEL_API
    bool "API"
config AVCT_TRACE_LEVEL_EVENT
    bool "EVENT"
config AVCT_TRACE_LEVEL_DEBUG
    bool "DEBUG"
config AVCT_TRACE_LEVEL_VERBOSE
    bool "VERBOSE"
endchoice

config AVCT_INITIAL_TRACE_LEVEL
    int
    depends on BLUEDROID_ENABLED
    default 0 if AVCT_TRACE_LEVEL_NONE
    default 1 if AVCT_TRACE_LEVEL_ERROR
    default 2 if AVCT_TRACE_LEVEL_WARNING
    default 3 if AVCT_TRACE_LEVEL_API
    default 4 if AVCT_TRACE_LEVEL_EVENT
    default 5 if AVCT_TRACE_LEVEL_DEBUG
    default 6 if AVCT_TRACE_LEVEL_VERBOSE
    default 2

choice AVRC_INITIAL_TRACE_LEVEL
    prompt "AVRC layer"
    default AVRC_TRACE_LEVEL_WARNING
    depends on BLUEDROID_ENABLED && !BT_STACK_NO_LOG
    help
        Define BT trace level for AVRC layer

config AVRC_TRACE_LEVEL_NONE
    bool "NONE"
config AVRC_TRACE_LEVEL_ERROR
    bool "ERROR"
config AVRC_TRACE_LEVEL_WARNING
    bool "WARNING"
config AVRC_TRACE_LEVEL_API
    bool "API"
config AVRC_TRACE_LEVEL_EVENT
    bool "EVENT"
config AVRC_TRACE_LEVEL_DEBUG
    bool "DEBUG"
config AVRC_TRACE_LEVEL_VERBOSE
    bool "VERBOSE"
endchoice

config AVRC_INITIAL_TRACE_LEVEL
    int
    depends on BLUEDROID_ENABLED
    default 0 if AVRC_TRACE_LEVEL_NONE
    default 1 if AVRC_TRACE_LEVEL_ERROR
    default 2 if AVRC_TRACE_LEVEL_WARNING
    default 3 if AVRC_TRACE_LEVEL_API
    default 4 if AVRC_TRACE_LEVEL_EVENT
    default 5 if AVRC_TRACE_LEVEL_DEBUG
    default 6 if AVRC_TRACE_LEVEL_VERBOSE
    default 2

choice MCA_INITIAL_TRACE_LEVEL
    prompt "MCA layer"
    default MCA_TRACE_LEVEL_WARNING
    depends on BLUEDROID_ENABLED && !BT_STACK_NO_LOG
    help
        Define BT trace level for MCA layer

config MCA_TRACE_LEVEL_NONE
    bool "NONE"
config MCA_TRACE_LEVEL_ERROR
    bool "ERROR"
config MCA_TRACE_LEVEL_WARNING
    bool "WARNING"
config MCA_TRACE_LEVEL_API
    bool "API"
config MCA_TRACE_LEVEL_EVENT
    bool "EVENT"
config MCA_TRACE_LEVEL_DEBUG
    bool "DEBUG"
config MCA_TRACE_LEVEL_VERBOSE
    bool "VERBOSE"
endchoice

config MCA_INITIAL_TRACE_LEVEL
    int
    depends on BLUEDROID_ENABLED
    default 0 if MCA_TRACE_LEVEL_NONE
    default 1 if MCA_TRACE_LEVEL_ERROR
    default 2 if MCA_TRACE_LEVEL_WARNING
    default 3 if MCA_TRACE_LEVEL_API
    default 4 if MCA_TRACE_LEVEL_EVENT
    default 5 if MCA_TRACE_LEVEL_DEBUG
    default 6 if MCA_TRACE_LEVEL_VERBOSE
    default 2

choice HID_INITIAL_TRACE_LEVEL
    prompt "HID layer"
    default HID_TRACE_LEVEL_WARNING
    depends on BLUEDROID_ENABLED && !BT_STACK_NO_LOG
    help
        Define BT trace level for HID layer

config HID_TRACE_LEVEL_NONE
    bool "NONE"
config HID_TRACE_LEVEL_ERROR
    bool "ERROR"
config HID_TRACE_LEVEL_WARNING
    bool "WARNING"
config HID_TRACE_LEVEL_API
    bool "API"
config HID_TRACE_LEVEL_EVENT
    bool "EVENT"
config HID_TRACE_LEVEL_DEBUG
    bool "DEBUG"
config HID_TRACE_LEVEL_VERBOSE
    bool "VERBOSE"
endchoice

config HID_INITIAL_TRACE_LEVEL
    int
    depends on BLUEDROID_ENABLED
    default 0 if HID_TRACE_LEVEL_NONE
    default 1 if HID_TRACE_LEVEL_ERROR
    default 2 if HID_TRACE_LEVEL_WARNING
    default 3 if HID_TRACE_LEVEL_API
    default 4 if HID_TRACE_LEVEL_EVENT
    default 5 if HID_TRACE_LEVEL_DEBUG
    default 6 if HID_TRACE_LEVEL_VERBOSE
    default 2

choice APPL_INITIAL_TRACE_LEVEL
    prompt "APPL layer"
    default APPL_TRACE_LEVEL_WARNING
    depends on BLUEDROID_ENABLED && !BT_STACK_NO_LOG
    help
        Define BT trace level for APPL layer

config APPL_TRACE_LEVEL_NONE
    bool "NONE"
config APPL_TRACE_LEVEL_ERROR
    bool "ERROR"
config APPL_TRACE_LEVEL_WARNING
    bool "WARNING"
config APPL_TRACE_LEVEL_API
    bool "API"
config APPL_TRACE_LEVEL_EVENT
    bool "EVENT"
config APPL_TRACE_LEVEL_DEBUG
    bool "DEBUG"
config APPL_TRACE_LEVEL_VERBOSE
    bool "VERBOSE"
endchoice

config APPL_INITIAL_TRACE_LEVEL
    int
    depends on BLUEDROID_ENABLED
    default 0 if APPL_TRACE_LEVEL_NONE
    default 1 if APPL_TRACE_LEVEL_ERROR
    default 2 if APPL_TRACE_LEVEL_WARNING
    default 3 if APPL_TRACE_LEVEL_API
    default 4 if APPL_TRACE_LEVEL_EVENT
    default 5 if APPL_TRACE_LEVEL_DEBUG
    default 6 if APPL_TRACE_LEVEL_VERBOSE
    default 2

choice GATT_INITIAL_TRACE_LEVEL
    prompt "GATT layer"
    default GATT_TRACE_LEVEL_WARNING
    depends on BLUEDROID_ENABLED && !BT_STACK_NO_LOG
    help
        Define BT trace level for GATT layer

config GATT_TRACE_LEVEL_NONE
    bool "NONE"
config GATT_TRACE_LEVEL_ERROR
    bool "ERROR"
config GATT_TRACE_LEVEL_WARNING
    bool "WARNING"
config GATT_TRACE_LEVEL_API
    bool "API"
config GATT_TRACE_LEVEL_EVENT
    bool "EVENT"
config GATT_TRACE_LEVEL_DEBUG
    bool "DEBUG"
config GATT_TRACE_LEVEL_VERBOSE
    bool "VERBOSE"
endchoice

config GATT_INITIAL_TRACE_LEVEL
    int
    depends on BLUEDROID_ENABLED
    default 0 if GATT_TRACE_LEVEL_NONE
    default 1 if GATT_TRACE_LEVEL_ERROR
    default 2 if GATT_TRACE_LEVEL_WARNING
    default 3 if GATT_TRACE_LEVEL_API
    default 4 if GATT_TRACE_LEVEL_EVENT
    default 5 if GATT_TRACE_LEVEL_DEBUG
    default 6 if GATT_TRACE_LEVEL_VERBOSE
    default 2

choice SMP_INITIAL_TRACE_LEVEL
    prompt "SMP layer"
    default SMP_TRACE_LEVEL_WARNING
    depends on BLUEDROID_ENABLED && !BT_STACK_NO_LOG
    help
        Define BT trace level for SMP layer

config SMP_TRACE_LEVEL_NONE
    bool "NONE"
config SMP_TRACE_LEVEL_ERROR
    bool "ERROR"
config SMP_TRACE_LEVEL_WARNING
    bool "WARNING"
config SMP_TRACE_LEVEL_API
    bool "API"
config SMP_TRACE_LEVEL_EVENT
    bool "EVENT"
config SMP_TRACE_LEVEL_DEBUG
    bool "DEBUG"
config SMP_TRACE_LEVEL_VERBOSE
    bool "VERBOSE"
endchoice

config SMP_INITIAL_TRACE_LEVEL
    int
    depends on BLUEDROID_ENABLED
    default 0 if SMP_TRACE_LEVEL_NONE
    default 1 if SMP_TRACE_LEVEL_ERROR
    default 2 if SMP_TRACE_LEVEL_WARNING
    default 3 if SMP_TRACE_LEVEL_API
    default 4 if SMP_TRACE_LEVEL_EVENT
    default 5 if SMP_TRACE_LEVEL_DEBUG
    default 6 if SMP_TRACE_LEVEL_VERBOSE
    default 2

choice BTIF_INITIAL_TRACE_LEVEL
    prompt "BTIF layer"
    default BTIF_TRACE_LEVEL_WARNING
    depends on BLUEDROID_ENABLED && !BT_STACK_NO_LOG
    help
        Define BT trace level for BTIF layer

config BTIF_TRACE_LEVEL_NONE
    bool "NONE"
config BTIF_TRACE_LEVEL_ERROR
    bool "ERROR"
config BTIF_TRACE_LEVEL_WARNING
    bool "WARNING"
config BTIF_TRACE_LEVEL_API
    bool "API"
config BTIF_TRACE_LEVEL_EVENT
    bool "EVENT"
config BTIF_TRACE_LEVEL_DEBUG
    bool "DEBUG"
config BTIF_TRACE_LEVEL_VERBOSE
    bool "VERBOSE"
endchoice

config BTIF_INITIAL_TRACE_LEVEL
    int
    depends on BLUEDROID_ENABLED
    default 0 if BTIF_TRACE_LEVEL_NONE
    default 1 if BTIF_TRACE_LEVEL_ERROR
    default 2 if BTIF_TRACE_LEVEL_WARNING
    default 3 if BTIF_TRACE_LEVEL_API
    default 4 if BTIF_TRACE_LEVEL_EVENT
    default 5 if BTIF_TRACE_LEVEL_DEBUG
    default 6 if BTIF_TRACE_LEVEL_VERBOSE
    default 2

choice BTC_INITIAL_TRACE_LEVEL
    prompt "BTC layer"
    default BTC_TRACE_LEVEL_WARNING
    depends on BLUEDROID_ENABLED && !BT_STACK_NO_LOG
    help
        Define BT trace level for BTC layer

config BTC_TRACE_LEVEL_NONE
    bool "NONE"
config BTC_TRACE_LEVEL_ERROR
    bool "ERROR"
config BTC_TRACE_LEVEL_WARNING
    bool "WARNING"
config BTC_TRACE_LEVEL_API
    bool "API"
config BTC_TRACE_LEVEL_EVENT
    bool "EVENT"
config BTC_TRACE_LEVEL_DEBUG
    bool "DEBUG"
config BTC_TRACE_LEVEL_VERBOSE
    bool "VERBOSE"
endchoice

config BTC_INITIAL_TRACE_LEVEL
    int
    depends on BLUEDROID_ENABLED
    default 0 if BTC_TRACE_LEVEL_NONE
    default 1 if BTC_TRACE_LEVEL_ERROR
    default 2 if BTC_TRACE_LEVEL_WARNING
    default 3 if BTC_TRACE_LEVEL_API
    default 4 if BTC_TRACE_LEVEL_EVENT
    default 5 if BTC_TRACE_LEVEL_DEBUG
    default 6 if BTC_TRACE_LEVEL_VERBOSE
    default 2

choice OSI_INITIAL_TRACE_LEVEL
    prompt "OSI layer"
    default OSI_TRACE_LEVEL_WARNING
    depends on BLUEDROID_ENABLED && !BT_STACK_NO_LOG
    help
        Define BT trace level for OSI layer

config OSI_TRACE_LEVEL_NONE
    bool "NONE"
config OSI_TRACE_LEVEL_ERROR
    bool "ERROR"
config OSI_TRACE_LEVEL_WARNING
    bool "WARNING"
config OSI_TRACE_LEVEL_API
    bool "API"
config OSI_TRACE_LEVEL_EVENT
    bool "EVENT"
config OSI_TRACE_LEVEL_DEBUG
    bool "DEBUG"
config OSI_TRACE_LEVEL_VERBOSE
    bool "VERBOSE"
endchoice

config OSI_INITIAL_TRACE_LEVEL
    int
    depends on BLUEDROID_ENABLED
    default 0 if OSI_TRACE_LEVEL_NONE
    default 1 if OSI_TRACE_LEVEL_ERROR
    default 2 if OSI_TRACE_LEVEL_WARNING
    default 3 if OSI_TRACE_LEVEL_API
    default 4 if OSI_TRACE_LEVEL_EVENT
    default 5 if OSI_TRACE_LEVEL_DEBUG
    default 6 if OSI_TRACE_LEVEL_VERBOSE
    default 2

choice BLUFI_INITIAL_TRACE_LEVEL
    prompt "BLUFI layer"
    default BLUFI_TRACE_LEVEL_WARNING
    depends on BLUEDROID_ENABLED && !BT_STACK_NO_LOG
    help
        Define BT trace level for BLUFI layer

config BLUFI_TRACE_LEVEL_NONE
    bool "NONE"
config BLUFI_TRACE_LEVEL_ERROR
    bool "ERROR"
config BLUFI_TRACE_LEVEL_WARNING
    bool "WARNING"
config BLUFI_TRACE_LEVEL_API
    bool "API"
config BLUFI_TRACE_LEVEL_EVENT
    bool "EVENT"
config BLUFI_TRACE_LEVEL_DEBUG
    bool "DEBUG"
config BLUFI_TRACE_LEVEL_VERBOSE
    bool "VERBOSE"
endchoice

config BLUFI_INITIAL_TRACE_LEVEL
    int
    depends on BLUEDROID_ENABLED
    default 0 if BLUFI_TRACE_LEVEL_NONE
    default 1 if BLUFI_TRACE_LEVEL_ERROR
    default 2 if BLUFI_TRACE_LEVEL_WARNING
    default 3 if BLUFI_TRACE_LEVEL_API
    default 4 if BLUFI_TRACE_LEVEL_EVENT
    default 5 if BLUFI_TRACE_LEVEL_DEBUG
    default 6 if BLUFI_TRACE_LEVEL_VERBOSE
    default 2

endmenu #BT DEBUG LOG LEVEL


config BT_ACL_CONNECTIONS
    int "BT/BLE MAX ACL CONNECTIONS(1~7)"
    depends on BLUEDROID_ENABLED
    range 1 7
    default 4
    help
        Maximum BT/BLE connection count

config BT_ALLOCATION_FROM_SPIRAM_FIRST
    bool "BT/BLE will first malloc the memory from the PSRAM"
    depends on BLUEDROID_ENABLED
    default n
    help
        This select can save the internal RAM if there have the PSRAM

config BT_BLE_DYNAMIC_ENV_MEMORY
    bool "Use dynamic memory allocation in BT/BLE stack"
    depends on BLUEDROID_ENABLED
    default n
    help
        This select can make the allocation of memory will become more flexible

config BLE_HOST_QUEUE_CONGESTION_CHECK
    bool "BLE queue congestion check"
    depends on BLUEDROID_ENABLED
    default n
    help
        When scanning and scan duplicate is not enabled, if there are a lot of adv packets around or application layer
        handling adv packets is slow, it will cause the controller memory to run out. if enabled, adv packets will be
        lost when host queue is congested.

config SMP_ENABLE
   bool
   depends on BLUEDROID_ENABLED
   default CLASSIC_BT_ENABLED || BLE_SMP_ENABLE

config BLE_ACTIVE_SCAN_REPORT_ADV_SCAN_RSP_INDIVIDUALLY
    bool "Report adv data and scan response individually when BLE active scan"
    depends on BLUEDROID_ENABLED && (BTDM_CONTROLLER_MODE_BTDM || BTDM_CONTROLLER_MODE_BLE_ONLY)
    default n
    help
        Originally, when doing BLE active scan, Bluedroid will not report adv to application layer
        until receive scan response. This option is used to disable the behavior. When enable this option,
        Bluedroid will report adv data or scan response to application layer immediately.

# Memory reserved at start of DRAM for Bluetooth stack

config BLE_ESTABLISH_LINK_CONNECTION_TIMEOUT
        int "Timeout of BLE connection establishment"
        depends on BLUEDROID_ENABLED
        range 1 60
        default 30
        help
            Bluetooth Connection establishment maximum time, if connection time exceeds this value, the connection
            establishment fails, ESP_GATTC_OPEN_EVT or ESP_GATTS_OPEN_EVT is triggered.

config BT_RESERVE_DRAM
    hex
    default 0xdb5c if BT_ENABLED
    default 0

endmenu
