menu Bluetooth


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

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

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 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

config HFP_AUDIO_DATA_PATH_PCM
    bool "PCM"
    help
        This enables the Serial Port Profile
config HFP_AUDIO_DATA_PATH_HCI
    bool "HCI"
    help
        This enables the Serial Port Profile
endchoice

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

config GATTC_ENABLE
    bool "Include GATT client module(GATTC)"
    depends on BLUEDROID_ENABLED
    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
    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
   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 BLE_SCAN_DUPLICATE
    bool "BLE Scan Duplicate Options"
    depends on BLUEDROID_ENABLED
    default y
    help
        This select enables parameters setting of BLE scan duplicate.

config DUPLICATE_SCAN_CACHE_SIZE
    int "Maximum number of devices in scan duplicate filter"
    depends on BLE_SCAN_DUPLICATE
    range 10 1000
    default 50
    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 100
    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 BLUEDROID_ENABLED
    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.

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
    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 BT_RESERVE_DRAM
    hex
    default 0x10000 if BT_ENABLED
    default 0

endmenu
