1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
RIOT/examples/lorawan/Makefile
2022-04-21 11:26:56 +02:00

99 lines
3.0 KiB
Makefile

# name of your application
APPLICATION = lorawan
# Use the ST B-L072Z-LRWAN1 board by default:
BOARD ?= b-l072z-lrwan1
# This has to be the absolute path to the RIOT base directory:
RIOTBASE ?= $(CURDIR)/../..
# Change this to abp to enable Activation By Personnalization mode
ACTIVATION_MODE ?= otaa
ifeq (otaa,$(ACTIVATION_MODE))
DEVEUI ?= 0000000000000000
APPEUI ?= 0000000000000000
APPKEY ?= 00000000000000000000000000000000
else ifeq (abp,$(ACTIVATION_MODE))
DEVADDR ?= 00000000
NWKSKEY ?= 00000000000000000000000000000000
APPSKEY ?= 00000000000000000000000000000000
RX2_FREQ ?= 869525000
RX2_DR ?= 3
else
$(error Unsupported activation mode '$(ACTIVATION_MODE)')
endif
# Send a message every 20s after joining the network
SEND_PERIOD_S ?= 20
# Pass these enviroment variables to docker
DOCKER_ENV_VARS += DEVEUI
DOCKER_ENV_VARS += APPEUI
DOCKER_ENV_VARS += APPKEY
# Default radio driver is Semtech SX1276 (used by the B-L072Z-LRWAN1 board)
DRIVER ?= sx1276
# Default region is Europe and default band is 868MHz
LORA_REGION ?= EU868
# Include the Semtech-loramac package
USEPKG += semtech-loramac
USEMODULE += auto_init_loramac
USEMODULE += $(DRIVER)
USEMODULE += fmt
FEATURES_OPTIONAL += periph_rtc
# Uncomment the following line to enable Loramac stack state persistence on EEPROM.
# Make sure the EEPROM is erased before enabling this and when flashing a board
# with an EEPROM the first time. If the board already contains a previous Loramac state
# in its EEPROM that is not corresponding to your LoRaWAN application settings,
# joining a network will fail.
# FEATURES_OPTIONAL += periph_eeprom
CFLAGS += -DSEND_PERIOD_S=$(SEND_PERIOD_S)
ifeq (otaa,$(ACTIVATION_MODE))
CFLAGS += -DUSE_OTAA
else ifeq (abp,$(ACTIVATION_MODE))
CFLAGS += -DUSE_ABP
endif
# Comment this out to disable code in RIOT that does safety checking
# which is not needed in a production environment but helps in the
# development process:
DEVELHELP ?= 1
# Change this to 0 show compiler invocation lines by default:
QUIET ?= 1
# Default IotLab Config to run the test
ifneq (,$(filter iotlab%,$(MAKECMDGOALS)))
IOTLAB_NODES ?= 1
IOTLAB_TYPE ?= st-lrwan1:sx1276
IOTLAB_SITE ?= saclay
include $(RIOTBASE)/dist/testbed-support/Makefile.iotlab
endif
ifneq (,$(filter test,$(MAKECMDGOALS)))
DEFAULT_MODULE += test_utils_interactive_sync
endif
include $(RIOTBASE)/Makefile.include
ifndef CONFIG_KCONFIG_USEMODULE_LORAWAN
ifeq (otaa,$(ACTIVATION_MODE))
# OTAA compile time configuration keys
CFLAGS += -DCONFIG_LORAMAC_APP_KEY_DEFAULT=\"$(APPKEY)\"
CFLAGS += -DCONFIG_LORAMAC_APP_EUI_DEFAULT=\"$(APPEUI)\"
CFLAGS += -DCONFIG_LORAMAC_DEV_EUI_DEFAULT=\"$(DEVEUI)\"
else ifeq (abp,$(ACTIVATION_MODE))
CFLAGS += -DCONFIG_LORAMAC_DEV_ADDR_DEFAULT=\"$(DEVADDR)\"
CFLAGS += -DCONFIG_LORAMAC_APP_SKEY_DEFAULT=\"$(APPSKEY)\"
CFLAGS += -DCONFIG_LORAMAC_NWK_SKEY_DEFAULT=\"$(NWKSKEY)\"
CFLAGS += -DCONFIG_LORAMAC_DEFAULT_RX2_FREQ=$(RX2_FREQ)
CFLAGS += -DCONFIG_LORAMAC_DEFAULT_RX2_DR=$(RX2_DR)
endif
endif