#
#   Copyright (c) 2022 Project CHIP Authors
#
#   Licensed 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.
#

# The purpose of this file is to define new default values of settings used when building Matter samples.
# This file only changes defaults and thus all symbols here must be promptless
# and safeguarded so that they only are applied when building Matter.

if CHIP

rsource "../../nxp/chip-module/Kconfig.defaults"

# disable synchronous printk to avoid blocking IRQs which
# may affect time sensitive components
config PRINTK_SYNC
	bool
	default n

config ASSERT
	bool
	default y

config HW_STACK_PROTECTION
	bool
	default y

config FPU
	bool
	default y

config SHELL
	bool
	default y

# Enable getting reboot reasons information
config HWINFO
	bool
	default y

# Application stack size
config MAIN_STACK_SIZE
	int
	default 8192

config INIT_STACKS
	bool
	default y

config CHIP_DEVICE_VENDOR_ID
	int
	default 65521

config CHIP_DEVICE_PRODUCT_ID
	int
	default 32768

# Disable certain parts of Zephyr IPv6 stack
config NET_IPV6_NBR_CACHE
	bool
	default n

config NET_IPV6_MLD
	bool
	default y

config NET_IF_MCAST_IPV6_ADDR_COUNT
	int
	default 14

# Network buffers
config NET_PKT_RX_COUNT
	int
	default 16

config NET_PKT_TX_COUNT
	int
	default 16

config NET_BUF_RX_COUNT
	int
	default 80

config NET_BUF_TX_COUNT
	int
	default 80



config CHIP_OTA_REQUESTOR
	bool
	default y

# Enable extended discovery
config CHIP_EXTENDED_DISCOVERY
	bool
	default y

config NVS_LOOKUP_CACHE
	bool
	default y

# Enable OpenThread
config NET_L2_OPENTHREAD
	bool
	default y

# Enable mbedTLS
config MBEDTLS_ENABLE_HEAP
	bool
	default y

config MBEDTLS_HEAP_SIZE
	int
	default 15360

# Disable not used shell modules
config SENSOR_SHELL
	bool
	default n

config DEVICE_SHELL
	bool
	default n

config DATE_SHELL
	bool
	default n

config DEVMEM_SHELL
	bool
	default n

config MCUBOOT_SHELL
	bool
	default n

config FLASH_SHELL
	bool
	default n

endif # CHIP
