# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE log
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this log
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this log except in compliance
# with the License.  You may obtain a copy of the License at
# 
#  http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# Under the License.

menuconfig MCUMGR_CMD_STAT_MGMT
    bool "Enable mcumgr handlers for statistics management"
    depends on STATS
    help
      Enables mcumgr handlers for statistics management.

if MCUMGR_CMD_STAT_MGMT
config STAT_MGMT_MAX_NAME_LEN
    int "Maximum stat group name length"
    default 32
    help
      Limits the maximum stat group name length in mcumgr requests, in bytes.
      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.
endif
