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

menuconfig CHIP
	bool "Matter protocol stack"
	default n
	select CPLUSPLUS
	imply LIB_CPLUSPLUS
	imply REQUIRES_FULL_LIBC
	imply NEWLIB_LIBC_NANO
	imply CBPRINTF_LIBC_SUBSTS
	imply POSIX_API if !ARCH_POSIX && !CHIP_NRF_PLATFORM
	imply EVENTFD if !ARCH_POSIX
	imply REBOOT
	imply ENTROPY_GENERATOR
	imply NET_UDP
	imply NET_IPV6
	imply NET_CONFIG_NEED_IPV6
	imply NET_SOCKETS
	imply NET_SOCKETS_POSIX_NAMES if !ARCH_POSIX && CHIP_NRF_PLATFORM
	imply NETWORKING
	imply HWINFO
	imply FLASH
	imply FLASH_MAP
	imply NVS
	imply SETTINGS
	help
	  Enables Matter libraries required for the Matter protocol stack to work.

if CHIP

# Device and firmware identifers

config CHIP_DEVICE_VENDOR_ID
	int "Device Vendor ID"
	default 65521 # 0xFFF1
	range 0 65535
	help
	  Provides the 16-bit numeric identifier of the device manufacturer,
	  assigned by Connectivity Standards Alliance. The identifier is exposed as
	  an attribute of the Basic Informationcluster, and included in the header
	  of the generated Matter Over-the-air (OTA) update image.

config CHIP_DEVICE_VENDOR_NAME
	string "Device vendor name"
	help
	  Provides a human-readable name of the device manufacturer. The name is
	  exposed as an attribute of the Basic Information cluster.

config CHIP_DEVICE_PRODUCT_ID
	int "Product ID"
	default 32768 # 0x8000
	range 0 65535
	help
	  Provides the 16-bit numeric identifier of the product, assigned by the
	  device manufacturer. The identifier is exposed as an attribute of the
	  Basic Information cluster, and included in the header of the generated
	  Matter over-the-air (OTA) update image.

config CHIP_DEVICE_PRODUCT_NAME
	string "Product name"
	default "not-specified"
	help
	  Provides a human-readable product name, such as the model number, assigned
	  by the device manufacturer. The name is exposed as an attribute of the
	  Basic Information cluster.

config CHIP_DEVICE_HARDWARE_VERSION
	int "Hardware version"
	default 0
	help
	  Provides the 16-bit hardware version number, assigned by the device
	  manufacturer. The number is exposed as an attribute of the Basic
	  Information cluster.

config CHIP_DEVICE_HARDWARE_VERSION_STRING
	string "Hardware version string"
	default "prerelease"
	help
	  Provides a human-readable representation of the hardware version number.
	  This must be an ASCII string of a length between 1 and 64 characters. The
	  hardware version string is exposed as an attribute of the Basic
	  Information cluster.

config CHIP_DEVICE_SOFTWARE_VERSION
	int "Software version"
	default 0
	range 0 4294967295
	help
	  Provides the 32-bit software version number. The number is exposed as an
	  attribute of the Basic Information cluster, and included in the header of
	  the generated Matter Over-the-air (OTA) update image. The exact numbering
	  scheme is up to the device manufacturer. However, when using the Matter
	  OTA mechanism, only updates to higher versions than the current one are
	  accepted.

config CHIP_DEVICE_SOFTWARE_VERSION_STRING
	string "Software version string"
	default "prerelease"
	help
	  Provides a human-readable representation of the software version number.
	  This must be an ASCII string of a length between 1 and 64 characters. The
	  software version string is exposed as an attribute of the Basic
	  Information cluster, and included in the header of the generated Matter
	  over-the-air (OTA) update image.

config CHIP_DEVICE_MANUFACTURING_DATE
	string "Manufacturing date (ISO 8601 format)"
	default "2022-01-01"
	help
	  Provides the device manufacturing date in the ISO 8601 format: YYYY-MM-DD.

config CHIP_DEVICE_SERIAL_NUMBER
	string "Device serial number"
	default "11223344556677889900"
	help
	  Provides a human-readable representation of the device serial number that
	  uniquely identifies the device. This must be an ASCII string of no more
	  than 32 characters.

config CHIP_DEVICE_ROTATING_DEVICE_UID
	string "Rotating device ID unique ID (HEX format)"
	default "91a9c12a7c80700a31ddcfa7fce63e44"
	help
	  Provides a unique identifier of the device. This ID is used to derive the
	  rotating device identifier, which allows commissioners to discover the
	  device in a privacy-preserving way. The identifier must be a string of at
	  least 16 bytes encoded in HEX.

config CHIP_DEVICE_TYPE
	int "Primary device type"
	default 65535
	range 0 65535
	help
	  Provides the primary device type implemented by the node. This must be one
	  of the device type identifiers defined in the Matter Device Library
	  specification.

config CHIP_DEVICE_DISCRIMINATOR
	hex "Device pairing discriminator"
	default 0xF00
	help
	  Provides a 12-bit identifier that is used to discover the device during
	  the commissioning.

config CHIP_DEVICE_SPAKE2_PASSCODE
	int "SPAKE2+ passcode"
	default 20202021
	range 1 99999998
	help
	  Provides a pairing passcode. This is a 27-bit unsigned integer that serves
	  as a proof of possession during the commissioning. The passcode must be
	  a value between 1 and 99999998, excluding the following invalid passcodes:
	  00000000, 11111111, 22222222, 33333333, 44444444, 55555555,
	  66666666, 77777777, 88888888, 99999999, 12345678, 87654321.

config CHIP_DEVICE_SPAKE2_IT
	int "SPAKE2+ iteration count"
	default 1000
	help
	  Provides the SPAKE2+ iteration count, which is one of the input parameters
	  for the PBKDF operation, used to generate the SPAKE2+ verifier.

config CHIP_DEVICE_SPAKE2_SALT
	string "SPAKE2+ salt (base64 format)"
	default "U1BBS0UyUCBLZXkgU2FsdA=="
	help
	  Provides the SPAKE2+ salt, which is one of the input parameters for the
	  PBKDF operation, used to generate the SPAKE2+ verifier. The salt must be
	  of a length between 16 and 32 bytes and it should be randomly generated
	  for each SPAKE2+ passcode.

config CHIP_DEVICE_SPAKE2_TEST_VERIFIER
	string "SPAKE2+ verifier for testing purposes (base64 format)"
	default "uWFwqugDNGiEck/po7KHwwMwwqZgN10XuyBajPGuyzUEV/iree4lOrao5GuwnlQ65CJzbeUB49s31EH+NEkg0JVI5MGCQGMMT/SRPFNRODm3wH/MBiehuFc6FJ/NH6Rmzw=="
	help
	  Provides the SPAKE2+ verifier that was generated using the configured
	  SPAKE2+ passcode, iteration count and salt. This configuration option can
	  be used for development or testing purposes. The default value was
	  generated using the following command:
	  ./scripts/tools/spake2p/spake2p.py gen-verifier -i 1000 -s U1BBS0UyUCBLZXkgU2FsdA== -p 20202021

config CHIP_DEVICE_ENABLE_KEY
	string "Enable Key for triggering test actions (HEX format)"
	default "00112233445566778899AABBCCDDEEFF"
	help
	  Provides the Enable Key, which is a 16-byte value encoded in HEX that
	  must be provided in the TestEventTrigger command to trigger a requested
	  test action. This value is used during certification tests, and should not
	  be present on devices in production environment.

config CHIP_DEVICE_PRODUCT_FINISH
	string "Description of the product's external case finish method"
	default "other"
	help
	  provides a description of the product's external case finish method.
	  Possible values:
	  other; matte; satin; polished; rugged; fabric

config CHIP_DEVICE_PRODUCT_COLOR
	string "Description of the product's primary color"
	help
	  provides a description of the product's primary color.
	  Possible values:
	  black; navy; green; teal; maroon; purple; olive; gray; blue; lime; 
	  aqua; red; fuchsia; yellow; white; nickel; chrome; brass; cooper; 
	  silver; gold.

# Matter optional features and parameters

config CHIP_ENABLE_PAIRING_AUTOSTART
	bool "Open commissioning window on boot"
	default n
	help
	  Opens the commissioning window automatically at application boot time if
	  the node is not yet commissioned.

config CHIP_OTA_REQUESTOR
	bool "OTA Software Update Requestor"
	help
	  Enables over-the-air (OTA) Requestor role that allows the node to perform
	  Device Firmware Upgrade by quering and downloading a new firmware image
	  from a peer OTA Provider node.

config CHIP_ROTATING_DEVICE_ID
	bool "Generate rotating device ID"
	help
	  Enables the rotating device identifier that provides a non-trackable
	  identifier. The identifier is unique per device and rotates at pre-defined
	  moments.

config CHIP_COMMISSIONABLE_DEVICE_TYPE
	bool "Include device type subtype in commissionable node discovery record"
	help
	  Includes the device type subtype in the commissionable node discovery
	  record. This allows a commissioner to find the node when looking for
	  a specific device type.

config CHIP_EXTENDED_DISCOVERY
	bool "Extended discovery"
	help
	  Enables advertising of the commissionable node service even if the node
	  does not have the commissioning window open.

config CHIP_OPERATIONAL_TIME_SAVE_INTERVAL
	int "Total operational time save interval (hours unit)"
	default 10
	range 1 4294967295
	help
	  Provides an interval in hours with which the node operational time is
	  saved to the flash memory. The provided value is a trade-off between
	  performing frequent saves to know the precise operational time (in case of
	  device reboot) and maximizing the flash memory lifetime.

config CHIP_CRYPTO_PSA
	bool "Use PSA crypto API for cryptographic operations"
	help
	  Enables the implementation of the Matter cryptographic operations that is
	  based on the PSA crypto API (instead of the default implementation, which
	  is based on the legacy mbedTLS APIs).

config CHIP_PERSISTENT_SUBSCRIPTIONS
	bool "Persistent subscriptions"
	help
	  Persists Matter subscriptions on the publisher node. This feature allows
	  a Matter node to faster get back to the previous operation after it went
	  offline, for example, due to a power outage. That is, the node can use the
	  persisted subscription information to quickly re-establish the previous
	  subscriptions instead of waiting for the subscriber node to realize that
	  the publisher is alive again.

config CHIP_LIB_SHELL
	bool "Matter shell commands"
	default n
	imply SHELL
	help
	  Enables linking the application with the library that contains Matter
	  shell commands.

config CHIP_PROJECT_CONFIG
	string "Project configuration file for Matter"
	help
	  Provides a path to the project configuration file for Matter. The path can
	  be either absolute or relative to the application directory. If specified,
	  Matter's generic configuration files will include the project
	  configuration file that can be used to override any of Matter's default or
	  platform-specific settings.

# Thread network features

config CHIP_ENABLE_DNSSD_SRP
	bool "OpenThread Service Registration Protocol"
	default y if NET_L2_OPENTHREAD
	imply OPENTHREAD_ECDSA
	imply OPENTHREAD_SRP_CLIENT
	help
	  Enables using the OpenThread SRP client for the Matter service
	  advertising.

config CHIP_ENABLE_DNS_CLIENT
	bool "OpenThread DNS client"
	default y if NET_L2_OPENTHREAD
	imply OPENTHREAD_DNS_CLIENT
	help
	  Enables using the OpenThread DNS client for the Matter service discovery.

config CHIP_ENABLE_SLEEPY_END_DEVICE_SUPPORT
	bool "Thread Sleepy End Device support"
	default n
	depends on OPENTHREAD_MTD
	imply OPENTHREAD_MTD_SED
	help
	  Enables the Thread Sleepy End Device (SED) support in Matter.

if CHIP_ENABLE_SLEEPY_END_DEVICE_SUPPORT

config CHIP_SED_IDLE_INTERVAL
	int "Sleepy End Device idle interval (ms)"
	default 1000
	help
	  Provides the Sleepy End Device wake interval in milliseconds while the
	  device is idle (which means that there is no active exchange to or from
	  the device, and its commissioning window is closed).

config CHIP_SED_ACTIVE_INTERVAL
	int "Sleepy End Device active interval (ms)"
	default 200
	help
	  Provides the Sleepy End Device wake interval in milliseconds while the
	  device is active (which means that there is an active exchange to or from
	  the device, or its commissioning window is open).

endif # CHIP_ENABLE_SLEEPY_END_DEVICE_SUPPORT

config CHIP_THREAD_SSED
	bool "Enable Thread Synchronized Sleepy End Device support"
	depends on OPENTHREAD_CSL_RECEIVER && CHIP_ENABLE_SLEEPY_END_DEVICE_SUPPORT
	help
	  Enables the Thread Synchronized Sleepy End Device support in Matter.

config CHIP_OPENTHREAD_CONFIG
	string "Custom OpenThread configuration file"
	help
	  Provides a path to an OpenThread configuration file. The path can be
	  either absolute or relative to the application directory. When this option
	  is specified, it replaces the OpenThread configuration file supplied by
	  Zephyr.

# Platform additions and configuration

config CHIP_CERTIFICATION_DECLARATION_STORAGE
	bool "Certification Declaration settings storage"
	depends on CHIP_FACTORY_DATA
	help
	  Enables storing of the Certification Declaration in Zephyr settings
	  instead of using the hardcoded value from firmware. This option also adds
	  support for including new Certification Declaration into a firmware
	  update image package that is sent as part of the OTA software update.

if CHIP_CERTIFICATION_DECLARATION_STORAGE

config CHIP_CERTIFiCATION_DECLARATION_OTA_IMAGE_ID
	int "Certification declaration OTA image ID"
	default 205 #0xcd
	help
	  Provides the image ID of the Certification Declaration image for sending
	  it as part of the OTA software update.

endif

config CHIP_FACTORY_RESET_ERASE_NVS
	bool "Erase NVS flash pages on factory reset"
	depends on SETTINGS_NVS
	help
	  Erases flash pages occupied by non-volatile storage when a factory reset
	  is requested, instead of removing Matter-related settings only. Enabling
	  this option provides a more robust factory reset mechanism and allows to
	  regain the original storage performance if any firmware issue has brought
	  it to an unexpected state. For this reason, set this option if the entire
	  configuration is supposed to be cleared on a factory reset, including
	  device-specific entries.

config CHIP_MALLOC_SYS_HEAP
	bool "Memory allocator based on Zephyr sys_heap"
	imply SYS_HEAP_RUNTIME_STATS
	help
	  Enables memory allocation functions that imitate the default malloc,
	  calloc, realloc and free, based on sys_heap from Zephyr RTOS.

if CHIP_MALLOC_SYS_HEAP

config CHIP_MALLOC_SYS_HEAP_OVERRIDE
	bool "Override default allocator with memory allocator based on Zephyr sys_heap"
	default y
	help
	  Replaces the default memory allocation functions (such as malloc, calloc,
	  realloc, free, and their reentrant versions) with their counterparts based
	  on sys_heap from Zephyr RTOS.

config CHIP_MALLOC_SYS_HEAP_SIZE
	int "Heap size used by memory allocator based on Zephyr sys_heap"
	default 12288 # 12kB
	help
	  Provides a value that controls how much of the device RAM is reserved for
	  the heap used by the memory allocation functions based on sys_heap from
	  Zephyr RTOS.

endif

module = MATTER
module-str = Matter
source "${ZEPHYR_BASE}/subsys/logging/Kconfig.template.log_config"

# Build system options

config APP_LINK_WITH_CHIP
	bool "Link application with Matter libraries"
	default y
	help
	  Adds Matter directories to the 'app' target include paths and links the
	  'app' target with Matter libraries.

config CHIP_PW_RPC
	bool "Pigweed RPC library"
	default n
	help
	  Links the application with the libraries containing Pigweed RPC
	  functionalities.

config CHIP_BUILD_TESTS
	bool "Build Matter unit tests"
	default n
	help
	  Enables building Matter unit tests.

config CHIP_OTA_IMAGE_BUILD
	bool "Generate OTA image"
	help
	  Enables building Matter over-the-air (OTA) update image.

if CHIP_OTA_IMAGE_BUILD

config CHIP_OTA_IMAGE_FILE_NAME
	string "OTA image file name"
	default "matter.ota"
	help
	  Provides the file name of the generated Matter OTA image.

config CHIP_OTA_IMAGE_EXTRA_ARGS
	string "OTA image creator extra arguments"
	help
	  Provides optional arguments to the ota_image_tool.py script, used for
	  building Matter OTA image.

endif

endif
