Skip to content

Commit e5588c6

Browse files
authored
Merge pull request #4 from Lora-net/develop
bring repo in line with lora-net again
2 parents 1f0e5ee + bf9ab7e commit e5588c6

File tree

227 files changed

+26938
-2746
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

227 files changed

+26938
-2746
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,6 @@ tmp/
2323
*.cogui
2424
*.comarker
2525
.directory
26-
launch.json
26+
.vscode/launch.json
2727
.cmaketools.json
28+
ipch/

.vscode/settings.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,15 @@
2323
"CMAKE_TOOLCHAIN_FILE":"cmake/toolchain-arm-none-eabi.cmake",
2424

2525
// Determines the application. You can choose between:
26-
// LoRaMac (Default), ping-pong, rx-sensi, tx-cw and BootLoader.
26+
// LoRaMac (Default), ping-pong, rx-sensi, tx-cw.
2727
"APPLICATION":"LoRaMac",
2828

2929
// Select LoRaMac sub project. You can choose between:
30-
// classA, classB or classC.
31-
"CLASS":"classA",
30+
// classA, classB or classC, periodic-uplink-lpp, fuota-test-01.
31+
"SUB_PROJECT":"periodic-uplink-lpp",
3232

3333
// Switch for Class B support of LoRaMac:
34-
"CLASSB_ENABLED":"OFF",
34+
"CLASSB_ENABLED":"ON",
3535

3636
// Select the active region for which the stack will be initialized.
3737
// You can choose between:
@@ -44,7 +44,7 @@
4444
"MODULATION":"LORA",
4545

4646
// Target board, the following boards are supported:
47-
// NAMote72, NucleoL073 (Default), NucleoL152, NucleoL476, SAML21, SKiM880B, SKiM980A, SKiM881AXL and B-L072Z-LRWAN1.
47+
// NAMote72, NucleoL073 (Default), NucleoL152, NucleoL476, SAML21, SKiM880B, SKiM980A, SKiM881AXL, B-L072Z-LRWAN1.
4848
"BOARD":"NucleoL073",
4949

5050
// MBED Radio shield selection. (Applies only to Nucleo platforms)

Doc/development-environment.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ It allows to build the project either by using a command line terminal or by usi
1919
* GNU ARM-Toolchain
2020
* GNU/Linux:
2121
* Ubuntu 16.04/ Linux Mint 18: Since the official repository version is too old, one can use e.g. [PPA](https://launchpad.net/~team-gcc-arm-embedded/+archive/ubuntu/ppa)
22+
* Ubuntu 18.04: the toolchain has been updated but there is a bug with [`libnewlib`](https://github.com/bbcmicrobit/micropython/issues/514#issuecomment-404759614) causing the linker to fail. `sudo apt install gcc-arm-none-eabi`
2223
* Linux Arch: `pacman -S arm-none-eabi-gcc arm-none-eabi-newlib`
2324
* Windows:
2425
* [GNU Arm Embedded Toolchain](https://developer.arm.com/open-source/gnu-toolchain/gnu-rm)
@@ -68,7 +69,7 @@ For Windows platforms the prefix has to be provided anyway and additionally the
6869
The possibility to choose the application, target board and more options can be done using the provided configuration options.
6970

7071
These configuration options can be set through additional commandline parameters, for example:
71-
`cmake -DCMAKE_TOOLCHAIN_FILE="cmake/toolchain-arm-none-eabi.cmake" -DAPPLICATION="LoRaMac" -DCLASS="classC" ..`
72+
`cmake -DCMAKE_TOOLCHAIN_FILE="cmake/toolchain-arm-none-eabi.cmake" -DAPPLICATION="LoRaMac" -DSUB_PROJECT="classC" ..`
7273

7374
Alternatively one can use a graphical interface to configure CMake, drop down menus and check boxes will provide to the user the possible options.
7475

@@ -83,12 +84,14 @@ Alternatively one can use a graphical interface to configure CMake, drop down me
8384
* ping-pong
8485
* rx-sensi
8586
* tx-cw
86-
* `CLASS` - Class specific application example choice.
87+
* `SUB_PROJECT` - LoRaMac sub project example choice.
8788
**Note**: Only applicable to LoRaMac `APPLICATION` choice.
8889
The possible choices are:
8990
* classA
9091
* classB
9192
* classC
93+
* periodic-uplink-lpp
94+
* fuota-test-01
9295
* `ACTIVE_REGION` - Active region for which the stack will be initialized.
9396
**Note**: Only applicable to LoRaMac `APPLICATION` choice.
9497
The possible choices are:

cmake/launch.json.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
"exceptions": true
3333
},
3434
"MIMode": "gdb",
35-
"MIDebuggerPath": "@GDB_BIN@",
35+
"miDebuggerPath": "@GDB_BIN@",
3636
"debugServerPath": "@OPENOCD_BIN@"
3737
}
3838
]

cmake/toolchain-arm-none-eabi.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
6363
# Options for DEBUG build
6464
# -Og enables optimizations that do not interfere with debugging
6565
# -g produce debugging information in the operating system’s native format
66-
set(CMAKE_C_FLAGS_DEBUG "-Og -g" CACHE INTERNAL "C Compiler options for debug build type")
67-
set(CMAKE_CXX_FLAGS_DEBUG "-Og -g" CACHE INTERNAL "C++ Compiler options for debug build type")
66+
set(CMAKE_C_FLAGS_DEBUG "-Og -g -DDEBUG" CACHE INTERNAL "C Compiler options for debug build type")
67+
set(CMAKE_CXX_FLAGS_DEBUG "-Og -g -DDEBUG" CACHE INTERNAL "C++ Compiler options for debug build type")
6868
set(CMAKE_ASM_FLAGS_DEBUG "-g" CACHE INTERNAL "ASM Compiler options for debug build type")
6969
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "" CACHE INTERNAL "Linker options for debug build type")
7070

src/CMakeLists.txt

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,13 @@ set(MBED_RADIO_SHIELD SX1261MBXBAS CACHE STRING "Default MBED radio shield is SX
3333
set_property(CACHE MBED_RADIO_SHIELD PROPERTY STRINGS ${MBED_RADIO_SHIELD_LIST})
3434

3535
# Allow switching of Applications
36-
set(APPLICATION_LIST LoRaMac ping-pong rx-sensi tx-cw BootLoader)
36+
set(APPLICATION_LIST LoRaMac ping-pong rx-sensi tx-cw )
3737
set(APPLICATION LoRaMac CACHE STRING "Default Application is LoRaMac")
3838
set_property(CACHE APPLICATION PROPERTY STRINGS ${APPLICATION_LIST})
3939

4040
# Switch for USB-Uart support, enable it for some Applications who needs it.
4141
option(USE_USB_CDC "Use USB-Uart" OFF)
4242

43-
# Switch for bootloader support.
44-
option(USE_BOOTLOADER "Use Bootloader" OFF)
45-
4643
# Switch for debugger support.
4744
option(USE_DEBUGGER "Use Debugger" ON)
4845

@@ -211,8 +208,4 @@ elseif(APPLICATION STREQUAL tx-cw)
211208

212209
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/apps/tx-cw)
213210

214-
elseif(APPLICATION STREQUAL BootLoader)
215-
216-
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/apps/BootLoader)
217-
218211
endif()

src/apps/LoRaMac/CMakeLists.txt

Lines changed: 106 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ cmake_minimum_required(VERSION 3.6)
2222
# Options
2323
#---------------------------------------------------------------------------------------
2424

25-
# Allow switching of device class
26-
set(CLASS_LIST classA classB classC)
27-
set(CLASS classA CACHE STRING "Default device is Class A")
28-
set_property(CACHE CLASS PROPERTY STRINGS ${CLASS_LIST})
25+
# Allow switching of sub projects
26+
set(SUB_PROJECT_LIST classA classB classC periodic-uplink-lpp fuota-test-01)
27+
set(SUB_PROJECT classA CACHE STRING "Default sub project is Class A")
28+
set_property(CACHE SUB_PROJECT PROPERTY STRINGS ${SUB_PROJECT_LIST})
2929

3030
# Allow switching of active region
3131
set(ACTIVE_REGION_LIST LORAMAC_REGION_EU868 LORAMAC_REGION_US915 LORAMAC_REGION_CN779
@@ -35,23 +35,99 @@ set(ACTIVE_REGION_LIST LORAMAC_REGION_EU868 LORAMAC_REGION_US915 LORAMAC_REGIO
3535
set(ACTIVE_REGION LORAMAC_REGION_EU868 CACHE STRING "Default active region is EU868")
3636
set_property(CACHE ACTIVE_REGION PROPERTY STRINGS ${ACTIVE_REGION_LIST})
3737

38-
if((CLASS STREQUAL classB) AND NOT CLASSB_ENABLED )
39-
message(FATAL_ERROR "Please turn on Class B support of LoRaMac ( CLASSB_ENABLED=ON ) to use Class B application")
38+
if((SUB_PROJECT STREQUAL classB OR SUB_PROJECT STREQUAL periodic-uplink-lpp OR SUB_PROJECT STREQUAL fuota-test-01) AND NOT CLASSB_ENABLED )
39+
message(FATAL_ERROR "Please turn on Class B support of LoRaMac ( CLASSB_ENABLED=ON ) to use Class B, periodic-uplink-lpp, fuota-test-01 sub projects")
4040
endif()
4141

42-
#---------------------------------------------------------------------------------------
43-
# Applications
44-
#---------------------------------------------------------------------------------------
45-
file(GLOB ${PROJECT_NAME}_APPS "${CMAKE_CURRENT_LIST_DIR}/common/*.c")
42+
if(SUB_PROJECT STREQUAL periodic-uplink-lpp)
43+
44+
#---------------------------------------------------------------------------------------
45+
# Application common features handling
46+
#---------------------------------------------------------------------------------------
47+
list(APPEND ${PROJECT_NAME}_COMMON
48+
"${CMAKE_CURRENT_LIST_DIR}/common/CayenneLpp.c"
49+
"${CMAKE_CURRENT_LIST_DIR}/common/LmHandlerMsgDisplay.c"
50+
"${CMAKE_CURRENT_LIST_DIR}/common/NvmCtxMgmt.c"
51+
)
52+
53+
#---------------------------------------------------------------------------------------
54+
# Application LoRaMac handler
55+
#---------------------------------------------------------------------------------------
56+
list(APPEND ${PROJECT_NAME}_LMH
57+
"${CMAKE_CURRENT_LIST_DIR}/common/LmHandler/LmHandler.c"
58+
)
59+
60+
#---------------------------------------------------------------------------------------
61+
# LoRaMac handler applicative packages
62+
#---------------------------------------------------------------------------------------
63+
list(APPEND ${PROJECT_NAME}_LMHP
64+
"${CMAKE_CURRENT_LIST_DIR}/common/LmHandler/packages/FragDecoder.c"
65+
"${CMAKE_CURRENT_LIST_DIR}/common/LmHandler/packages/LmhpClockSync.c"
66+
"${CMAKE_CURRENT_LIST_DIR}/common/LmHandler/packages/LmhpCompliance.c"
67+
"${CMAKE_CURRENT_LIST_DIR}/common/LmHandler/packages/LmhpFragmentation.c"
68+
"${CMAKE_CURRENT_LIST_DIR}/common/LmHandler/packages/LmhpRemoteMcastSetup.c"
69+
)
70+
71+
elseif(SUB_PROJECT STREQUAL fuota-test-01)
72+
73+
#---------------------------------------------------------------------------------------
74+
# Application common features handling
75+
#---------------------------------------------------------------------------------------
76+
list(APPEND ${PROJECT_NAME}_COMMON
77+
"${CMAKE_CURRENT_LIST_DIR}/common/LmHandlerMsgDisplay.c"
78+
"${CMAKE_CURRENT_LIST_DIR}/common/NvmCtxMgmt.c"
79+
)
80+
81+
#---------------------------------------------------------------------------------------
82+
# Application LoRaMac handler
83+
#---------------------------------------------------------------------------------------
84+
list(APPEND ${PROJECT_NAME}_LMH
85+
"${CMAKE_CURRENT_LIST_DIR}/common/LmHandler/LmHandler.c"
86+
)
87+
88+
#---------------------------------------------------------------------------------------
89+
# LoRaMac handler applicative packages
90+
#---------------------------------------------------------------------------------------
91+
list(APPEND ${PROJECT_NAME}_LMHP
92+
"${CMAKE_CURRENT_LIST_DIR}/common/LmHandler/packages/FragDecoder.c"
93+
"${CMAKE_CURRENT_LIST_DIR}/common/LmHandler/packages/LmhpClockSync.c"
94+
"${CMAKE_CURRENT_LIST_DIR}/common/LmHandler/packages/LmhpCompliance.c"
95+
"${CMAKE_CURRENT_LIST_DIR}/common/LmHandler/packages/LmhpFragmentation.c"
96+
"${CMAKE_CURRENT_LIST_DIR}/common/LmHandler/packages/LmhpRemoteMcastSetup.c"
97+
)
98+
99+
else() #if(SUB_PROJECT STREQUAL classA OR SUB_PROJECT STREQUAL classB OR SUB_PROJECT STREQUAL classC)
100+
101+
#---------------------------------------------------------------------------------------
102+
# Application common features handling
103+
#---------------------------------------------------------------------------------------
104+
list(APPEND ${PROJECT_NAME}_COMMON
105+
"${CMAKE_CURRENT_LIST_DIR}/common/NvmCtxMgmt.c"
106+
)
107+
108+
#---------------------------------------------------------------------------------------
109+
# Application LoRaMac handler
110+
#---------------------------------------------------------------------------------------
111+
list(APPEND ${PROJECT_NAME}_LMH
112+
)
113+
114+
#---------------------------------------------------------------------------------------
115+
# LoRaMac handler applicative packages
116+
#---------------------------------------------------------------------------------------
117+
list(APPEND ${PROJECT_NAME}_LMHP
118+
)
119+
120+
endif()
46121

47122
#---------------------------------------------------------------------------------------
48-
# Target
123+
# Application
49124
#---------------------------------------------------------------------------------------
125+
file(GLOB ${PROJECT_NAME}_SOURCES "${CMAKE_CURRENT_LIST_DIR}/${SUB_PROJECT}/${BOARD}/*.c")
50126

51-
file(GLOB ${PROJECT_NAME}_SOURCES "${CMAKE_CURRENT_LIST_DIR}/${CLASS}/${BOARD}/*.c")
52-
53-
add_executable(${PROJECT_NAME}-${CLASS}
54-
${${PROJECT_NAME}_APPS}
127+
add_executable(${PROJECT_NAME}-${SUB_PROJECT}
128+
${${PROJECT_NAME}_COMMON}
129+
${${PROJECT_NAME}_LMH}
130+
${${PROJECT_NAME}_LMHP}
55131
${${PROJECT_NAME}_SOURCES}
56132
$<TARGET_OBJECTS:mac>
57133
$<TARGET_OBJECTS:system>
@@ -60,24 +136,28 @@ add_executable(${PROJECT_NAME}-${CLASS}
60136
$<TARGET_OBJECTS:${BOARD}>
61137
)
62138

63-
target_compile_definitions(${PROJECT_NAME}-${CLASS} PRIVATE ACTIVE_REGION=${ACTIVE_REGION})
139+
target_compile_definitions(${PROJECT_NAME}-${SUB_PROJECT} PRIVATE $<$<BOOL:${CLASSB_ENABLED}>:LORAMAC_CLASSB_ENABLED>)
140+
target_compile_definitions(${PROJECT_NAME}-${SUB_PROJECT} PRIVATE ACTIVE_REGION=${ACTIVE_REGION})
64141

65-
target_compile_definitions(${PROJECT_NAME}-${CLASS} PUBLIC
142+
target_compile_definitions(${PROJECT_NAME}-${SUB_PROJECT} PUBLIC
66143
$<BUILD_INTERFACE:$<TARGET_PROPERTY:mac,INTERFACE_COMPILE_DEFINITIONS>>
67144
)
68145

69-
target_include_directories(${PROJECT_NAME}-${CLASS} PUBLIC
146+
target_include_directories(${PROJECT_NAME}-${SUB_PROJECT} PUBLIC
70147
${CMAKE_CURRENT_SOURCE_DIR}/common
148+
${CMAKE_CURRENT_SOURCE_DIR}/common/LmHandler
149+
${CMAKE_CURRENT_SOURCE_DIR}/common/LmHandler/packages
150+
${CMAKE_CURRENT_SOURCE_DIR}/${SUB_PROJECT}/${BOARD}
71151
$<BUILD_INTERFACE:$<TARGET_PROPERTY:mac,INTERFACE_INCLUDE_DIRECTORIES>>
72152
$<BUILD_INTERFACE:$<TARGET_PROPERTY:system,INTERFACE_INCLUDE_DIRECTORIES>>
73153
$<BUILD_INTERFACE:$<TARGET_PROPERTY:radio,INTERFACE_INCLUDE_DIRECTORIES>>
74154
$<BUILD_INTERFACE:$<TARGET_PROPERTY:peripherals,INTERFACE_INCLUDE_DIRECTORIES>>
75155
$<BUILD_INTERFACE:$<TARGET_PROPERTY:${BOARD},INTERFACE_INCLUDE_DIRECTORIES>>
76156
)
77157

78-
set_property(TARGET ${PROJECT_NAME}-${CLASS} PROPERTY C_STANDARD 11)
158+
set_property(TARGET ${PROJECT_NAME}-${SUB_PROJECT} PROPERTY C_STANDARD 11)
79159

80-
target_link_libraries(${PROJECT_NAME}-${CLASS} m)
160+
target_link_libraries(${PROJECT_NAME}-${SUB_PROJECT} m)
81161

82162
#---------------------------------------------------------------------------------------
83163
# Debugging and Binutils
@@ -87,13 +167,13 @@ include(gdb-helper)
87167
include(binutils-arm-none-eabi)
88168

89169
# Generate debugger configurations
90-
generate_run_gdb_stlink(${PROJECT_NAME}-${CLASS})
91-
generate_run_gdb_openocd(${PROJECT_NAME}-${CLASS})
92-
generate_vscode_launch_openocd(${PROJECT_NAME}-${CLASS})
170+
generate_run_gdb_stlink(${PROJECT_NAME}-${SUB_PROJECT})
171+
generate_run_gdb_openocd(${PROJECT_NAME}-${SUB_PROJECT})
172+
generate_vscode_launch_openocd(${PROJECT_NAME}-${SUB_PROJECT})
93173

94174
# Print section sizes of target
95-
print_section_sizes(${PROJECT_NAME}-${CLASS})
175+
print_section_sizes(${PROJECT_NAME}-${SUB_PROJECT})
96176

97177
# Create output in hex and binary format
98-
create_bin_output(${PROJECT_NAME}-${CLASS})
99-
create_hex_output(${PROJECT_NAME}-${CLASS})
178+
create_bin_output(${PROJECT_NAME}-${SUB_PROJECT})
179+
create_hex_output(${PROJECT_NAME}-${SUB_PROJECT})

src/apps/LoRaMac/classA/B-L072Z-LRWAN1/Commissioning.h

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -31,25 +31,25 @@
3131
versions of the specification.
3232
Thus it has been decided to use the 1.1.x keys and EUI name definitions.
3333
The below table shows the names equivalence between versions:
34-
+-------------------+-------------------------+
35-
| 1.0.x | 1.1.x |
36-
+===================+=========================+
37-
| LORAWAN_DEVICE_EUI| LORAWAN_DEVICE_EUI |
38-
+-------------------+-------------------------+
39-
| LORAWAN_APP_EUI | LORAWAN_JOIN_EUI |
40-
+-------------------+-------------------------+
41-
| N/A | LORAWAN_APP_KEY |
42-
+-------------------+-------------------------+
43-
| LORAWAN_APP_KEY | LORAWAN_NWK_KEY |
44-
+-------------------+-------------------------+
45-
| LORAWAN_NWK_S_KEY | LORAWAN_F_NWK_S_INT_KEY |
46-
+-------------------+-------------------------+
47-
| LORAWAN_NWK_S_KEY | LORAWAN_S_NWK_S_INT_KEY |
48-
+-------------------+-------------------------+
49-
| LORAWAN_NWK_S_KEY | LORAWAN_NWK_S_ENC_KEY |
50-
+-------------------+-------------------------+
51-
| LORAWAN_APP_S_KEY | LORAWAN_APP_S_KEY |
52-
+-------------------+-------------------------+
34+
+---------------------+-------------------------+
35+
| 1.0.x | 1.1.x |
36+
+=====================+=========================+
37+
| LORAWAN_DEVICE_EUI | LORAWAN_DEVICE_EUI |
38+
+---------------------+-------------------------+
39+
| LORAWAN_APP_EUI | LORAWAN_JOIN_EUI |
40+
+---------------------+-------------------------+
41+
| LORAWAN_GEN_APP_KEY | LORAWAN_APP_KEY |
42+
+---------------------+-------------------------+
43+
| LORAWAN_APP_KEY | LORAWAN_NWK_KEY |
44+
+---------------------+-------------------------+
45+
| LORAWAN_NWK_S_KEY | LORAWAN_F_NWK_S_INT_KEY |
46+
+---------------------+-------------------------+
47+
| LORAWAN_NWK_S_KEY | LORAWAN_S_NWK_S_INT_KEY |
48+
+---------------------+-------------------------+
49+
| LORAWAN_NWK_S_KEY | LORAWAN_NWK_S_ENC_KEY |
50+
+---------------------+-------------------------+
51+
| LORAWAN_APP_S_KEY | LORAWAN_APP_S_KEY |
52+
+---------------------+-------------------------+
5353
******************************************************************************
5454
******************************************************************************
5555
******************************************************************************
@@ -99,6 +99,12 @@
9999
*/
100100
#define LORAWAN_APP_KEY { 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C }
101101

102+
/*!
103+
* Application root key - Used to derive Multicast keys on 1.0.x devices.
104+
* WARNING: USED only FOR 1.0.x DEVICES
105+
*/
106+
#define LORAWAN_GEN_APP_KEY { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }
107+
102108
/*!
103109
* Network root key
104110
* WARNING: FOR 1.0.x DEVICES IT IS THE \ref LORAWAN_APP_KEY

0 commit comments

Comments
 (0)