# Bluetooth logging configuration options

# Copyright (c) 2023 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0

config BT_LOG
	# convenience symbol, _no touchy_
	bool
	default y if LOG && BT

if BT_LOG

menu "Bluetooth logging"

# (subsys/bluetooth/Kconfig)

module = BT
module-str = "Bluetooth"
source "subsys/logging/Kconfig.template.log_config"

# Set BT as the parent module for all the symbols that will use
# `Kconfig.template.log_config_inherit`. This is more convenient to do it here
# instead of setting it for every modules.
#
# The downside of doing that is that people need to be careful when adding a new
# parent module because  all the following symbol will use it.
parent-module = BT

# COMMON (subsys/bluetooth/common/Kconfig)

menu "Common"
module = BT_HCI_DRIVER
module-str = "Bluetooth HCI driver"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_RPA
module-str = "Bluetooth Resolvable Private Address (RPA)"
source "subsys/logging/Kconfig.template.log_config_inherit"
endmenu # Common

menu "Libraries"

if BT_EAD
module = BT_EAD
module-str = "Bluetooth Encrypted Advertising Data"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_EAD

if BT_CRYPTO
module = BT_CRYPTO
module-str = "Bluetooth Cryptographic Toolbox"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_CRYPTO

endmenu # Libraries

if BT_HCI_HOST
menu "Host"
module = BT_ATT
module-str = "Bluetooth Attribute Protocol (ATT)"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_GATT
module-str = "Bluetooth Generic Attribute Profile (GATT)"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_L2CAP
module-str = "Bluetooth L2CAP"
source "subsys/logging/Kconfig.template.log_config_inherit"

if BT_DF
module = BT_DF
module-str = "Bluetooth Direction Finding"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_DF

if BT_SETTINGS
module = BT_SETTINGS
module-str = "Bluetooth storage"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_SETTINGS

module = BT_HCI_CORE
module-str = "Bluetooth HCI core"
source "subsys/logging/Kconfig.template.log_config_inherit"

if BT_CONN
module = BT_CONN
module-str = "Bluetooth connection"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_CONN

if BT_ISO
module = BT_ISO
module-str = "ISO channel"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_ISO

module = BT_KEYS
module-str = "Bluetooth security keys"
source "subsys/logging/Kconfig.template.log_config_inherit"

if BT_SMP
module = BT_SMP
module-str = "Bluetooth Security Manager Protocol"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_SMP

module = BT_SERVICE
module-str = "Bluetooth Services"
source "subsys/logging/Kconfig.template.log_config_inherit"
endmenu # LE Host
endif # BT_HCI_HOST

if BT_AUDIO
menu "Audio"

if BT_AICS
module = BT_AICS
module-str = "Audio Input Control Service"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_AICS

if BT_AICS_CLIENT
module = BT_AICS_CLIENT
module-str = "Audio Input Control Service client"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_AICS_CLIENT

if BT_BAP_STREAM
module = BT_BAP_STREAM
module-str = "Bluetooth Audio Stream"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_BAP_STREAM

if BT_BAP_BASE
module = BT_BAP_BASE
module-str = "Bluetooth Basic Audio Profile Broadcast Audio Source Endpoint"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_BAP_BASE

if BT_BAP_STREAM
module = BT_AUDIO_CODEC
module-str = "Bluetooth Audio Codec"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_BAP_STREAM

if BT_ASCS
module = BT_ASCS
module-str = "Audio Stream Control Service"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_ASCS

if BT_BAP_UNICAST_SERVER
module = BT_BAP_UNICAST_SERVER
module-str = "Bluetooth Audio Unicast Server"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_BAP_UNICAST_SERVER

if BT_BAP_UNICAST_CLIENT
module = BT_BAP_UNICAST_CLIENT
module-str = "Basic Audio Profile"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_BAP_UNICAST_CLIENT

if BT_BAP_BROADCAST_SOURCE
module = BT_BAP_BROADCAST_SOURCE
module-str = "Bluetooth Audio Broadcast Source"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_BAP_BROADCAST_SOURCE

if BT_BAP_BROADCAST_SINK
module = BT_BAP_BROADCAST_SINK
module-str = "Bluetooth Audio Broadcast Sink"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_BAP_BROADCAST_SINK

if BT_BAP_SCAN_DELEGATOR
module = BT_BAP_SCAN_DELEGATOR
module-str = "Broadcast Audio Scan Service"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_BAP_SCAN_DELEGATOR

if BT_BAP_BROADCAST_ASSISTANT
module = BT_BAP_BROADCAST_ASSISTANT
module-str = "Broadcast Audio Scan Service client debug"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_BAP_BROADCAST_ASSISTANT

if BT_BAP_STREAM
module = BT_BAP_ISO
module-str = "Bluetooth Audio ISO"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_BAP_STREAM

# CAP

if BT_CAP_ACCEPTOR
module = BT_CAP_ACCEPTOR
module-str = "Common Audio Profile Acceptor"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_CAP_ACCEPTOR

if BT_CAP_INITIATOR
module = BT_CAP_INITIATOR
module-str = "Common Audio Profile Initiator"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_CAP_INITIATOR

if BT_CAP_COMMANDER
module = BT_CAP_COMMANDER
module-str = "Common Audio Profile Commander"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_CAP_COMMANDER

if BT_CAP_HANDOVER
module = BT_CAP_HANDOVER
module-str = "Common Audio Profile Handover"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_CAP_HANDOVER

if BT_AUDIO
module = BT_CAP_COMMON
module-str = "Common Audio Profile Common"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_AUDIO

if BT_CAP
module = BT_CAP_STREAM
module-str = "Common Audio Profile Stream"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_CAP

# CSIP

if BT_CSIP_SET_MEMBER
module = BT_CSIP_SET_MEMBER
module-str = "Coordinated Set Identification Service"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_CSIP_SET_MEMBER

if BT_CSIP_SET_COORDINATOR
module = BT_CSIP_SET_COORDINATOR
module-str = "Coordinated Set Identification Profile Set Coordinator"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_CSIP_SET_COORDINATOR

if BT_AUDIO
module = BT_CSIP_SET_MEMBER_CRYPTO
module-str = "Coordinated Set Identification Profile crypto functions"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_AUDIO

# HAS

if BT_HAS
module = BT_HAS
module-str = "Hearing Access Service"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_HAS

if BT_HAS_CLIENT
module = BT_HAS_CLIENT
module-str = "Hearing Access Service Client"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_HAS_CLIENT

# MCS

if BT_MCS
module = BT_MCS
module-str = "Media Control Service"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_MCS

if BT_MCC
module = BT_MCC
module-str = "Media Control Client"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_MCC

# MCTL

if MCTL
module = MCTL
module-str = "Media control"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # MCTL

# MICP

if BT_MICP_MIC_DEV
module = BT_MICP_MIC_DEV
module-str = "Microphone Control Profile Microphone Device"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_MICP_MIC_DEV

if BT_MICP_MIC_CTLR
module = BT_MICP_MIC_CTLR
module-str = "Microphone Control Profile Microphone Controller"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_MICP_MIC_CTLR

# MPL

if BT_MPL
module = BT_MPL
module-str = "Media player"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_MPL

# PACS

if BT_PACS
module = BT_PACS
module-str = "Published Audio Capabilities Service"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_PACS

# TBS

if BT_TBS
module = BT_TBS
module-str = "Telephone Bearer Service"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_TBS

if BT_TBS_CLIENT
module = BT_TBS_CLIENT
module-str = "Telephone Bearer Service client"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_TBS_CLIENT

# VCP

if BT_VCP_VOL_REND
module = BT_VCP_VOL_REND
module-str = "Volume Control Profile Volume Renderer"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_VCP_VOL_REND

if BT_VCP_VOL_CTLR
module = BT_VCP_VOL_CTLR
module-str = "Volume Control Profile Volume Controller"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_VCP_VOL_CTLR

# VOCS

if BT_VOCS
module = BT_VOCS
module-str = "Volume Offset Control Service"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_VOCS

if BT_VOCS_CLIENT
module = BT_VOCS_CLIENT
module-str = "Volume Offset Control Service client"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_VOCS_CLIENT

# PBP

if BT_PBP
module = BT_PBP
module-str = "Public Broadcast Profile"
source "$(ZEPHYR_BASE)/subsys/logging/Kconfig.template.log_config"
endif # BT_PBP

endmenu # Audio
endif # BT_AUDIO

if BT_CLASSIC
menu "Bluetooth Classic"

module = BT_RFCOMM
module-str = "Bluetooth RFCOMM"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_HFP_HF
module-str = "Bluetooth Hands Free Profile (HFP)"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_HFP_AG
module-str = "Bluetooth Hands Free Audio Gateway Profile (HFP AG)"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_AVDTP
module-str = "Bluetooth AVDTP debug"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_A2DP
module-str = "Bluetooth A2DP"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_AVCTP
module-str = "Bluetooth AVCTP"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_AVRCP
module-str = "Bluetooth AVRCP"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_SDP
module-str = "Bluetooth Service Discovery Protocol (SDP)"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_GOEP
module-str = "Bluetooth Generic Object Exchange Profile (GOEP)"
source "subsys/logging/Kconfig.template.log_config_inherit"

endmenu # Bluetooth Classic
endif # BT_CLASSIC

# MESH (subsys/bluetooth/mesh/Kconfig)

if BT_MESH
menu "Mesh"

module = BT_MESH
module-str = "Debug logs"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_MESH_NET
module-str = "Network layer"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_MESH_BRG
module-str = "Subnet Bridging layer"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_MESH_RPL
module-str = "Replay protection list"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_MESH_TRANS
module-str = "Transport layer"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_MESH_BEACON
module-str = "Beacon"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_MESH_CRYPTO
module-str = "Crypto"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_MESH_KEYS
module-str = "Key management"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_MESH_PROV
module-str = "Provisioning"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_MESH_PROVISIONER
module-str = "Provisioner"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_MESH_PROVISIONEE
module-str = "Provisioning device"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_MESH_ACCESS
module-str = "Access layer"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_MESH_MODEL
module-str = "Foundation model"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_MESH_DFU
module-str = "DFU model"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_MESH_ADV
module-str = "Advertising"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_MESH_LOW_POWER
module-str = "Low Power"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_MESH_FRIEND
module-str = "Friend"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_MESH_PROXY
module-str = "Proxy"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_MESH_SETTINGS
module-str = "Persistent settings"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_MESH_CDB
module-str = "Configuration database"
source "subsys/logging/Kconfig.template.log_config_inherit"

module = BT_MESH_CFG
module-str = "Configuration"
source "subsys/logging/Kconfig.template.log_config_inherit"

endmenu # Mesh
endif # BT_MESH

menu "Services"

# BAS

if BT_BAS
module = BT_BAS
module-str = BAS
source "subsys/logging/Kconfig.template.log_config"
endif # BT_BAS

# CTS

if BT_CTS
module = BT_CTS
module-str = CTS
source "subsys/logging/Kconfig.template.log_config"
endif # BT_CTS

# HRS

if BT_HRS
module = BT_HRS
module-str = HRS
source "subsys/logging/Kconfig.template.log_config"
endif # BT_HRS

# TPS

if BT_TPS
module = BT_TPS
module-str = TPS
source "subsys/logging/Kconfig.template.log_config"
endif # BT_TPS

# IAS

if BT_IAS_CLIENT
module = BT_IAS_CLIENT
module-str = "Immediate Alert Service Client"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_IAS_CLIENT

if BT_IAS
module = BT_IAS
module-str = IAS
source "$(ZEPHYR_BASE)/subsys/logging/Kconfig.template.log_config"
endif # BT_IAS

# OTS (subsys/bluetooth/services/ots/Kconfig)

if BT_OTS_CLIENT
module = BT_OTS_CLIENT
module-str = "Object Transfer Service Client"
source "subsys/logging/Kconfig.template.log_config_inherit"
endif # BT_OTS_CLIENT

if BT_OTS
module = BT_OTS
module-str = BT_OTS
source "$(ZEPHYR_BASE)/subsys/logging/Kconfig.template.log_config"
endif # BT_OTS

endmenu # Services

endmenu # Bluetooth logging

endif # BT_LOG
