# Copyright Runtime.io 2018. All rights reserved.
# Copyright Nordic Semiconductor ASA 2020-2022. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

# The Kconfig file is dedicated to Stat management group of
# of MCUmgr subsystem and provides Kconfig options to configure
# group commands behaviour and other aspects.
#
# Options defined in this file should be prefixed:
#  MCUMGR_GRP_STAT_ -- general group options;
#
# When adding Kconfig options, that control the same feature,
# try to group them together by the same stem after prefix.

menuconfig MCUMGR_GRP_STAT
	bool "Mcumgr handlers for statistics management"
	depends on STATS
	select MCUMGR_SMP_CBOR_MIN_DECODING_LEVEL_2
	select MCUMGR_SMP_CBOR_MIN_ENCODING_LEVEL_3 if ZCBOR_CANONICAL
	help
	  Enables MCUmgr handlers for statistics management.

if MCUMGR_GRP_STAT

config MCUMGR_GRP_STAT_MAX_NAME_LEN
	int "Maximum stat group name length"
	default 32
	depends on MCUMGR_GRP_STAT
	help
	  Limits the maximum stat group name length in MCUmgr requests, in bytes.
	  For stat group names. a buffer of this size gets allocated on the stack
	  during handling of all stat read commands. If a stat group's name
	  exceeds this limit, it will be impossible to retrieve its values with
	  a stat show command.
	  For stat names s_name and snm_name, this is the maximum length when
	  encoding the name to cbor.

module = MCUMGR_GRP_STAT
module-str = mcumgr_grp_stat
source "subsys/logging/Kconfig.template.log_config"

endif # MCUMGR_GRP_STAT
