#
#   Copyright (c) 2024 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

config CHIP_OPERATIONAL_TIME_SAVE_INTERVAL
	default 1

if CHIP_FACTORY_DATA

config CHIP_DEVICE_VENDOR_ID
	default 4151 # 0x1037

config CHIP_DEVICE_MANUFACTURING_DATE
	default "2023-01-01"

config CHIP_DEVICE_PRODUCT_ID
	default 41510 if SOC_SERIES_RW6XX

endif # CHIP_FACTORY_DATA

config LOG
	default y

if LOG

choice LOG_MODE
	default LOG_MODE_MINIMAL
endchoice

choice MATTER_LOG_LEVEL_CHOICE
	default MATTER_LOG_LEVEL_DBG
endchoice

config CHIP_APP_LOG_LEVEL
	default 4 # debug

config LOG_DEFAULT_LEVEL
	default 1 # error

config CHIP_LOG_SIZE_OPTIMIZATION
	default y

endif

config PRINTK_SYNC
	default y

config ASSERT
	default y

config ASSERT_NO_COND_INFO
	default y

config ASSERT_NO_MSG_INFO
	default y

config HW_STACK_PROTECTION
	default y

config FPU
	default y

config SHELL
	default y

config PTHREAD_IPC
	bool
	default n

config POSIX_MAX_FDS
	int
	default 8

# Application stack size
config MAIN_STACK_SIZE
	default 8192

config INIT_STACKS
	default y

config NET_MGMT_EVENT_STACK_SIZE
	default 2048

config NET_MGMT_EVENT_QUEUE_SIZE
	default 20

config NET_IPV6_MLD
	default y

config NET_IF_MCAST_IPV6_ADDR_COUNT
	default 14

config NET_IF_MAX_IPV4_COUNT
	default 2

config NET_IF_MAX_IPV6_COUNT
	default 2

config NET_TC_TX_COUNT
	default 1

config NET_TC_RX_COUNT
	default 1

config NET_TC_THREAD_PRIO_CUSTOM
	default y

choice NET_TC_THREAD_TYPE
	default NET_TC_THREAD_PREEMPTIVE
endchoice

config NET_TCP_WORKER_PRIO
	default -16

config NET_TC_TX_THREAD_BASE_PRIO
	default 3

config NET_TC_RX_THREAD_BASE_PRIO
	default 3

# Network buffers
config NET_PKT_RX_COUNT
	default 60

config NET_PKT_TX_COUNT
	default 40

config NET_BUF_RX_COUNT
	default 60

config NET_BUF_TX_COUNT
	default 80

config NET_BUF_DATA_SIZE
	default 1744

# Bluetooth Low Energy configs

config BT
	default y

config BT_PERIPHERAL
	default y

config BT_CENTRAL
	default n

config BT_PERIPHERAL_PREF_MIN_INT
	default 36

config BT_PERIPHERAL_PREF_MAX_INT
	default 36

# Increase BT timeout to 5 s to improve connection reliability and avoid fast drop outs.
config BT_PERIPHERAL_PREF_TIMEOUT
	default 500

config BT_GAP_AUTO_UPDATE_CONN_PARAMS
	default y

# Decrease connection parameters update time, as some Matter controllers request
# enabling IP networking faster than BT connection parameters are updated, what may result
# in commissioning instabilities.
config BT_CONN_PARAM_UPDATE_TIMEOUT
	default 1000

config BT_GATT_DYNAMIC_DB
	default y

config BT_DEVICE_NAME_DYNAMIC
	default y

config BT_DEVICE_NAME_MAX
	default 15

config BT_MAX_CONN
	default 1

config BT_L2CAP_TX_MTU
	default 247

config BT_BUF_ACL_RX_SIZE
	default 251

config BT_BUF_ACL_TX_SIZE
	default 251

config BT_RX_STACK_SIZE
	default 2048 if NO_OPTIMIZATIONS && DEBUG
	default 1600

config BT_DEVICE_NAME_GATT_WRITABLE
	bool
	default n

config HCI_NXP_ENABLE_AUTO_SLEEP
	default n

config CHIP_OTA_REQUESTOR
	default n

config CHIP_DEVICE_SOFTWARE_VERSION
	default 1

# Enable extended discovery
config CHIP_EXTENDED_DISCOVERY
	default y

config NVS_LOOKUP_CACHE
	default y

config NVS_LOOKUP_CACHE_SIZE
	default 1024

if CHIP_WIFI

choice SCHED_ALGORITHM
	default SCHED_MULTIQ
endchoice

choice LIBC_IMPLEMENTATION
	default NEWLIB_LIBC
endchoice

choice WPA_SUPP_LOG_LEVEL_CHOICE
	default WPA_SUPP_LOG_LEVEL_ERR
endchoice

config WPA_SUPP_THREAD_STACK_SIZE
	default 12288

config SYSTEM_WORKQUEUE_STACK_SIZE
	default 2048

config NET_TCP_WORKQ_STACK_SIZE
	default 2048

# align these numbers to match the OpenThread config
config NET_IF_UNICAST_IPV6_ADDR_COUNT
	default 6

config NET_IF_MCAST_IPV6_ADDR_COUNT
	default 8

config NET_SOCKETS_POLL_MAX
	default 8

config NET_IPV4_FRAGMENT_MAX_COUNT
	default 3

config NET_IPV4_FRAGMENT_MAX_PKT
	default 7

config NET_IPV4_FRAGMENT_TIMEOUT
	default 3

config NET_IPV6_FRAGMENT_MAX_COUNT
	default 3

config NET_IPV6_FRAGMENT_MAX_PKT
	default 7

config NET_IPV6_FRAGMENT_TIMEOUT
	default 3

# options managed by IP4/IP6 simultaneous support
# aligned here to match OpenThread config
config NET_MAX_ROUTERS
	default 1

config NET_MAX_CONN
	default 4

config SHELL_STACK_SIZE
	default 2616

config HEAP_MEM_POOL_SIZE
	default 122880

config CHIP_MALLOC_SYS_HEAP_SIZE
	default 28672 # 28 kB

endif

# Configure MBEDTLS lib
config MBEDTLS
	default y

config MBEDTLS_CFG_FILE
	default "config-tls-generic.h"

config MBEDTLS_USER_CONFIG_ENABLE
    default y

config MBEDTLS_USER_CONFIG_FILE
    default "nxp-zephyr-mbedtls-config.h"

config MBEDTLS_ENTROPY_ENABLED
	default y

config MBEDTLS_ZEPHYR_ENTROPY
	default y

config MBEDTLS_ENABLE_HEAP
	default y

config MBEDTLS_HEAP_SIZE
	default 15360

config MBEDTLS_CIPHER_AES_ENABLED
	default y

config MBEDTLS_CIPHER_CCM_ENABLED
	default y

config MBEDTLS_CTR_DRBG_ENABLED
	default y

config MBEDTLS_CIPHER_MODE_CBC_ENABLED
	default y

config MBEDTLS_ECP_C
	default y

config MBEDTLS_ECP_DP_SECP256R1_ENABLED
	default y

if CHIP_CRYPTO_PSA

config MBEDTLS_PSA_CRYPTO_C
	default y

config WPA_SUPP_CRYPTO_MBEDTLS_PSA
	default y if WPA_SUPP_CRYPTO

endif

config MCUX_ELS_PKC
	default y if SOC_SERIES_RW6XX

if MCUX_ELS_PKC

config KSDK_MBEDTLS
	default n

config MCUX_PSA_CRYPTO_DRIVER_ELS_PKC
	default y if MBEDTLS_PSA_CRYPTO_C

config ENTROPY_GENERATOR
	default y

endif # MCUX_ELS_PKC


if SHELL

config KERNEL_SHELL
	default y

config DEVICE_SHELL
	default y

config REBOOT
	default y

# Disable not used shell modules
config SHELL_WILDCARD
	default n

config SHELL_VT100_COLORS
	default n

config SHELL_STATS
	default n

config SENSOR_SHELL
	default n

config DATE_SHELL
	default n

config DEVMEM_SHELL
	default n

config MCUBOOT_SHELL
	default n

config FLASH_SHELL
	default n

endif # SHELL

endif
