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

rsource "../../common/cmake/Kconfig"
rsource "../cmake/Kconfig.matter.nxp"
rsource "Kconfig.openthread.common"
rsource "../../../third_party/nxp/nxp_matter_support/cmake/Kconfig"

# See config/common/cmake/Kconfig for full definition
config CHIP
	select CHIP_SDK_DEPENDENCIES

if CHIP

choice CHIP_NXP_PLATFORM_SELECTION
	prompt "CHIP NXP platform selection"
	config CHIP_NXP_PLATFORM_RW61X
		bool "RW61x platform"
		depends on MCUX_HW_DEVICE_RW612 || MCUX_HW_DEVICE_RW610
		help
			NXP RW61x platform.

	config CHIP_NXP_PLATFORM_RT1170
		bool "RT1170 platform"
		depends on MCUX_HW_DEVICE_MIMXRT1171 || MCUX_HW_DEVICE_MIMXRT1172 || MCUX_HW_DEVICE_MIMXRT1173 || MCUX_HW_DEVICE_MIMXRT1175 || MCUX_HW_DEVICE_MIMXRT1176
		help
			NXP RT1170 platform.

	config CHIP_NXP_PLATFORM_RT1060
		bool "RT1060 platform"
		depends on MCUX_HW_DEVICE_MIMXRT1061 || MCUX_HW_DEVICE_MIMXRT1062
		help
			NXP RT1060 platform.

	config CHIP_NXP_PLATFORM_MCXW72
		bool "mcxw72 platform"
		depends on MCUX_HW_DEVICE_MCXW727C
		help
			NXP mcxw72 platform.

endchoice # CHIP_NXP_PLATFORM_SELECTION

config CHIP_NXP_PLATFORM_FOLDER_NAME
	string "NXP platform folder name"
	default "rt/rw61x" if CHIP_NXP_PLATFORM_RW61X
	default "rt/rt1170" if CHIP_NXP_PLATFORM_RT1170
	default "rt/rt1060" if CHIP_NXP_PLATFORM_RT1060
	default "mcxw72" if CHIP_NXP_PLATFORM_MCXW72
	default "not specified"
	help
		Defines the platform folder name to be used.

config CHIP_NXP_DEVICE_LAYER
	string "NXP device layer"
	default "nxp/common"

# Invisible symbol to get the platform family name
config CHIP_NXP_PLATFORM_FAMILY
	string
	default "mcxw72" if CHIP_NXP_PLATFORM_MCXW72
	default "rt" if CHIP_NXP_PLATFORM_RW61X || CHIP_NXP_PLATFORM_RT1060 || CHIP_NXP_PLATFORM_RT1170

config CHIP_NXP_CRYPTO_IMPL
	string "NXP Crypto Implementation chosen"
	default "se05x" if CHIP_SE05X
	default ""
	help
		Defines crypto implementation to be used

choice CHIP_NVM_COMPONENT
	prompt "NVM component selection"
	default CHIP_NVM_COMPONENT_NVS

	config CHIP_NVM_COMPONENT_NVS
		bool "NVS"
		help
			Use NVS component to store CHIP data.

	config CHIP_NVM_COMPONENT_LITTLEFS
		bool "LittleFS"
		help
			Use LittleFS component to store CHIP data.

	config CHIP_NVM_COMPONENT_KEYSTORAGE
		bool "Key Storage"
		help
			Use the KeyStorage component to store CHIP data.

	config CHIP_NVM_COMPONENT_NVMFWK
		bool "NVM Framework"
		help
			Use the NVM Framework component to store CHIP data.
endchoice

config CHIP_USE_GENERATED_CONFIG
	bool "Use generated config"
	default y
	help
		Use the generated macro configs for CHIP configuration.

# Define BT config for FreeRTOS compatibility with Zephyr (already defined in Zephyr module)
# to enable shared code and Kconfig across both platforms.
config BT
	bool "Enable BLE"
	default y
	help
		Enable BLE support.

config CHIP_DEVICE_USE_ZEPHYR_BLE
	bool "Use Zephyr BLE implementation"
	depends on BT
	default y if CHIP_NXP_PLATFORM_RW61X || CHIP_NXP_PLATFORM_RT1060 || CHIP_NXP_PLATFORM_RT1170
	help
		Use Zephyr implementation for BLE manager.

# Secure Element Configurations

config CHIP_SE05X
	bool "Enable Secure Element support"
	select SE05X_LIB
	help
		Enable SE05x Secure element for offloading crypto operations.

if CHIP_SE05X

config CHIP_SE05X_SPAKE_VERIFIER
	bool "Enable SE05x Secure element for offloading spake verifier"
	help
		Enable SE05x Secure element for offloading spake verifier.

config CHIP_SE05X_SPAKE_PROVER
	bool "Enable SE05x Secure element for offloading spake prover"
	help
		Enable SE05x Secure element for offloading spake prover.

config CHIP_SE05X_RND_GEN
	bool "Enable SE05x Secure element for offloading random number generation"
	help
		Enable SE05x Secure element for offloading random number generation.

config CHIP_SE05X_DEVICE_ATTESTATION
	bool "Enable SE05x Secure element for offloading Device attestation Sign"
	default y if CHIP_FACTORY_DATA
	help
		Enable SE05x Secure element for offloading Device attestation Sign.

config CHIP_SE05X_SPAKE_VERIFIER_USE_TP_VALUES
	bool "Enable SE05x Secure element for offloading spake verifier and use the trust provisioned w0 and L values"
	depends on CHIP_SE05X_SPAKE_VERIFIER
	depends on CHIP_FACTORY_DATA
	default y if CHIP_FACTORY_DATA
	default n
	help
		Enable SE05x Secure element for offloading spake verifier and use the trust provisioned w0 and L values. This
		should be enable only if factory data is configured.

config CHIP_SE05X_SPAKE_VERIFIER_TP_SET_NO
	int "SE05x Trust Provisioned spake verifier set number"
	default 1
	range 1 3
	help
		SE05x Trust Provisioned spake verifier set number.

config CHIP_SE05X_SPAKE_VERIFIER_TP_ITER_CNT
	int "SE05x Trust Provisioned spake verifier iteration count"
	default 1000
	help
		SE05x Trust Provisioned spake verifier iteration count.

endif # CHIP_SE05X

config CHIP_OTA_POSTED_OPERATIONS_IN_IDLE
	bool "Use Posted Operations in Idle task for OTA Image Processing"
	default y if CHIP_NXP_PLATFORM_RW61X || CHIP_NXP_PLATFORM_RT1060 || CHIP_NXP_PLATFORM_RT1170
	depends on CHIP_OTA_REQUESTOR
	help
		When processing the OTA image, the write/erase operations will be posted and only resumed in the context of the Idle task.

if CHIP_OTA_REQUESTOR

config CHIP_OTA_ENCRYPTION
	bool "OTA with encryption"
	help
		When enabled, the OTA image processor expects the image to be encrypted with AES,
		so it will attempt to decrypt each block before storing it in flash.

config CHIP_OTA_ENCRYPTION_KEY
	string "OTA encryption key"
	depends on CHIP_OTA_ENCRYPTION
	default "1234567890ABCDEFA1B2C3D4E5F6F1B4"
	help
		Defines the key used for encrypting the OTA image.
		This key is reused to perform an AES decryption of the OTA image.

endif # CHIP_OTA_REQUESTOR

if CHIP_BUILD_TESTS

config NXP_CUSTOM_UNIT_TESTS_DIR
	string "Path to custom NXP test directory"
	help
	Provide a path to the location of NXP custom Matter tests

endif # CHIP_BUILD_TESTS

# Define Debug config for FreeRTOS compatibility with Zephyr (already defined in Zephyr module)
# to enable shared code and Kconfig across both platforms.
config DEBUG
	bool "Build Matter stack with debugging enabled"
	help
		Build Matter stack with debugging enabled.

config CHIP_NXP_MULTIPLE_BLE_CONNECTIONS
	bool "Use Multiple BLE connections after commissioning"
	depends on CHIP_NXP_PLATFORM_MCXW72
	help
	  Enable app usage of Multiple BLE connections after commissioning.

config CHIP_NXP_BLE_PAIRING
	bool "Enable BLE Pairing"
	default y if CHIP_NXP_MULTIPLE_BLE_CONNECTIONS
	help
	  Enable BLE Pairing for Multiple BLE connections after commissioning.

config CHIP_NXP_BLE_BONDING
	bool "Enable BLE Bonding"
	default y if CHIP_NXP_MULTIPLE_BLE_CONNECTIONS
	help
	  Enable BLE Bonding for Multiple BLE connections after commissioning.

config NXP_USE_SMU2_STATIC
	bool "Use SMU2"
	depends on CHIP_NXP_PLATFORM_MCXW72
	help
	  Enable app usage of SMU2.

config NXP_USE_SMU2_DYNAMIC
	bool "Use extra SMU2 after commissioning"
	depends on CHIP_NXP_PLATFORM_MCXW72
	help
	  Enable app usage of extra SMU2 after commissioning.

config NXP_USE_LOW_POWER
	bool "Enable low power support"
	help
	  Enables low power support

if NXP_USE_LOW_POWER

config NXP_USE_POWER_DOWN
	bool "Use PowerDown to reduce power consumption"
	help
	  Uses PowerDown to reduce power consumption during idle times

if NXP_USE_POWER_DOWN

config NXP_POWER_DOWN_POLL_THRESHOLD
	int "Data poll interval threshold, in seconds, for power down"
	depends on NXP_USE_POWER_DOWN
	range 1 60
	help
	  Minimum data poll interval, in seconds, from which the device will
	  start using power down as a low power state, instead of deep sleep

endif # NXP_USE_POWER_DOWN

endif # NXP_USE_LOW_POWER

config NXP_USE_PLAIN_DAC_KEY
	bool "Store DAC private key in plaintext"
	help
	  Store DAC private key in plaintext.

endif # CHIP
