# 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.
#

syscfg.defs:
    TESTBENCH_BLE:
        description: Enables BLE support in the testbench app.
        value: 0

    TESTBENCH_BLE_NAME:
        description: The BLE name to use.
        value: '"testbench-ble"'

syscfg.vals:
    CONSOLE_IMPLEMENTATION: full
    LOG_IMPLEMENTATION: full
    STATS_IMPLEMENTATION: full

    # Enable the shell task.
    SHELL_TASK: 1

    # Include names for statistics.
    STATS_NAMES: 1
    STATS_CLI: 1
    STATS_MGMT: 1

    # Log reboot messages to a flash circular buffer.
    REBOOT_LOG_FCB: 1
    LOG_FCB: 1

    # Enable coredump
    OS_COREDUMP: 1
    IMGMGR_COREDUMP: 1

    CONFIG_FCB: 1

    # Enable shell commands.
    LOG_CLI: 1
    CONFIG_CLI: 1

    # Enable mgmt commands.
    LOG_MGMT: 1
    CONFIG_MGMT: 1

    RUNTEST_LOG: 1
    RUNTEST_CLI: 1
    RUNTEST_MGMT: 1

    CRASH_TEST_CLI: 1
    IMGMGR_CLI: 1

    # Default task settings
    OS_MAIN_STACK_SIZE: 768

    # OC server, with serial transport.
    OC_SERVER: 1
    OC_TRANSPORT_SERIAL: 1

    # Optionally add OC BLE transport.
syscfg.vals.TESTBENCH_BLE:
    OC_TRANSPORT_GATT: 1

    # Config in RAM
    BLE_STORE_CONFIG_PERSIST: 0
