#
#    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.
#
mainmenu "Matter nRF Connect Light Switch Example Application"

config STATE_LEDS
	bool "Use LEDs to indicate the device state"
	default y
	help
	  Use LEDs to render the current state of the device such as the progress of commissioning of
	  the device into a network or the factory reset initiation. Note that setting this option to
	  'n' does not disable the LED indicating the state of the simulated bolt.

# Sample configuration used for Thread networking
if NET_L2_OPENTHREAD

choice OPENTHREAD_NORDIC_LIBRARY_CONFIGURATION
	default OPENTHREAD_NORDIC_LIBRARY_MTD
endchoice

choice OPENTHREAD_DEVICE_TYPE
	default OPENTHREAD_MTD
endchoice

config CHIP_ENABLE_SLEEPY_END_DEVICE_SUPPORT
	bool
	default y

endif # NET_L2_OPENTHREAD

rsource "../../../config/nrfconnect/chip-module/Kconfig.features"
rsource "../../../config/nrfconnect/chip-module/Kconfig.defaults"
source "Kconfig.zephyr"
