#
#   Copyright (c) 2024-2025 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 Kconfig options enabling specific features.
# Feature options will define defaults for settings that are related to the specific feature.

if CHIP

# See config/common/cmake/Kconfig for full definition
config CHIP_WIFI
	default y if !NET_L2_OPENTHREAD
	select WIFI
	select WIFI_NXP
	select WIFI_NM_WPA_SUPPLICANT
	select NET_L2_ETHERNET
	select NET_IPV4
	select NET_DHCPV4
	select DNS_RESOLVER
	imply THREAD_CUSTOM_DATA
	imply MBEDTLS_ENTROPY_C
	imply NET_STATISTICS
	imply NET_PKT_TXTIME
	imply NET_PKT_TIMESTAMP
	imply NET_IPV6_ND # enable Neighbor Discovery to handle Router Advertisements
	imply NET_IPV6_NBR_CACHE
	imply NET_STATISTICS_IPV6
	imply NET_STATISTICS_USER_API

# See config/common/cmake/Kconfig for full definition
config CHIP_ETHERNET
	default n
	depends on !CHIP_WIFI
	select NET_MGMT_EVENT
	select NET_MGMT_EVENT_INFO
	select NET_L2_ETHERNET
	select NET_L2_ETHERNET_MGMT
	select NET_UDP
	select NET_IP
	select NET_CONFIG_SETTINGS
	select NET_MGMT
	select NET_IPV4
	select NET_DHCPV4
	select NET_NATIVE_IPV4
	select NET_NATIVE
	select NET_TCP
	select DNS_RESOLVER
	select MDNS_RESOLVER
	select MDNS_RESPONDER
	select DNS_SD
	select MBEDTLS_PKCS5_C
	select MBEDTLS_HKDF_C
	select MBEDTLS_ECDSA_C
	select PSA_CRYPTO_ENABLE_ALL
endif # CHIP
