# LoRaWAN configuration options

# Copyright (c) 2020 Manivannan Sadhasivam <mani@kernel.org>
# SPDX-License-Identifier: Apache-2.0

menuconfig LORAWAN
	bool "LoRaWAN support [EXPERIMENTAL]"
	depends on LORA
	depends on SYSTEM_WORKQUEUE_STACK_SIZE >= 2048
	select REQUIRES_FULL_LIBC
	select HAS_SEMTECH_LORAMAC
	select HAS_SEMTECH_SOFT_SE
	select EXPERIMENTAL
	help
	  This option enables LoRaWAN support.

if LORAWAN

module = LORAWAN
module-str = lorawan
source "subsys/logging/Kconfig.template.log_config"

config LORAWAN_SYSTEM_MAX_RX_ERROR
	int "LoRaWAN System Max Rx Error"
	default 20
	help
	  System Max Rx timing error value in ms to be used by LoRaWAN stack
	  for calculating the RX1/RX2 window timing.

config LORAWAN_PUBLIC_NETWORK
	bool "LoRaWAN Public Network"
	default y
	help
	  Enable this option to use a public LoRaWAN network.
	  Disable for private LoRaWAN networks.

config LORAMAC_REGION_AS923
	bool "Asia 923MHz Frequency band"

config LORAMAC_REGION_AU915
	bool "Australia 915MHz Frequency band"

config LORAMAC_REGION_CN470
	bool "China 470MHz Frequency band"

config LORAMAC_REGION_CN779
	bool "China 779MHz Frequency band"

config LORAMAC_REGION_EU433
	bool "Europe 433MHz Frequency band"

config LORAMAC_REGION_EU868
	bool "Europe 868MHz Frequency band"

config LORAMAC_REGION_KR920
	bool "South Korea 920MHz Frequency band"

config LORAMAC_REGION_IN865
	bool "India 865MHz Frequency band"

config LORAMAC_REGION_US915
	bool "North America 915MHz Frequency band"

config LORAMAC_REGION_RU864
	bool "Russia 864MHz Frequency band"

rsource "nvm/Kconfig"

rsource "services/Kconfig"

endif # LORAWAN
