# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file 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.
#

# Package: sys/shell 

syscfg.defs:
    SHELL_TASK:
        description: 'Controls whether shell is enabled or not.'
        value: 0

    SHELL_CMD_ARGC_MAX:
        description: 'Max number of command line arguments'
        value: 12
    SHELL_CMD_HELP:
        description: 'Include help information for shell commands'
        value: 1
    SHELL_PROMPT_SUFFIX:
        description: 'Prompt suffix'
        value: '"> "'
    SHELL_MAX_MODULES:
        description: 'Max number of modules'
        value: 3
    SHELL_MAX_CMD_QUEUED:
        description: >
            Max number of command lines queued.  A value >= 2 is required if
            the shell is acting as a newtmgr transport.
        value: 2
    SHELL_COMPAT:
        description: 'Enable compatibility module'
        value: 1
    SHELL_MAX_COMPAT_COMMANDS:
        description: 'Max number of compatibility commands'
        value: 20
    SHELL_COMPLETION:
        description: 'Include completion functionality'
        value: 1
    SHELL_NEWTMGR:
        description: 'Enable newtmgr over shell'
        value: 1

    SHELL_OS_MODULE:
        description: 'Include shell os module'
        value: 1
    SHELL_OS_SERIAL_BOOT_NVREG:
        description: 'Include "reset serial_boot" option'
        value: 0
        restrictions:
            - (BOOT_SERIAL_NVREG_INDEX != -1)
    SHELL_PROMPT_MODULE:
        description: 'Include shell prompt module'
        value: 0

## duplicated from boot/boot_serial
    BOOT_SERIAL_NVREG_MAGIC:
        description: >
            Magic number, to be saved in a retained (reset-surviving) register.
            If the value in the register matches, the serial bootloader will
            load. Value must not be 0.
        value: 0xB7
        restrictions:
            - '(BOOT_SERIAL_NVREG_MAGIC != 0)'

    BOOT_SERIAL_NVREG_INDEX:
        description: >
            Index of retained register to use (using hal_nvreg_read) for reading
            magic value.
        value: -1
