# Kconfig template file for setting networking log level for
# various network related components.
#
# Copyright (c) 2018 Intel Corporation.
#
# SPDX-License-Identifier: Apache-2.0
#

choice
	prompt "$(module-str)"
	default $(module)_LOG_LEVEL_DEFAULT
	depends on $(module-dep)
# If we ever get help text macro expansion, then just uncomment
# the following lines.
#	help
#	  $(module-help)

config $(module)_LOG_LEVEL_OFF
	bool "Off"
	help
	  Do not write to log.

config $(module)_LOG_LEVEL_ERR
	bool "Error"
	help
	  Only write to log when NET_ERR or LOG_ERR is used.

config $(module)_LOG_LEVEL_WRN
	bool "Warning"
	help
	  Write to log with NET_WARN or LOG_WRN in addition to previous level.

config $(module)_LOG_LEVEL_INF
	bool "Info"
	help
	  Write to log with NET_INFO or LOG_INF in addition to previous levels.

config $(module)_LOG_LEVEL_DBG
	bool "Debug"
	help
	  Write to log with NET_DBG or LOG_DBG in addition to previous levels.

config $(module)_LOG_LEVEL_DEFAULT
	bool "Default"
	help
	  Use default log level.

endchoice

config $(module)_LOG_LEVEL
	int
	default 0 if $(module)_LOG_LEVEL_OFF || !$(module-dep)
	default 1 if $(module)_LOG_LEVEL_ERR
	default 2 if $(module)_LOG_LEVEL_WRN
	default 3 if $(module)_LOG_LEVEL_INF
	default 4 if $(module)_LOG_LEVEL_DBG
	default LOG_DEFAULT_LEVEL if $(module)_LOG_LEVEL_DEFAULT
