loramac.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2017 Inria
3  *
4  * This file is subject to the terms and conditions of the GNU Lesser
5  * General Public License v2.1. See the file LICENSE in the top level
6  * directory for more details.
7  */
8 
22 #ifndef NET_LORAMAC_H
23 #define NET_LORAMAC_H
24 
25 #include <stdint.h>
26 #include <stdlib.h>
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
42 #ifndef LORAMAC_DEV_EUI_DEFAULT
43 #define LORAMAC_DEV_EUI_DEFAULT { 0x00, 0x00, 0x00, 0x00, \
44  0x00, 0x00, 0x00, 0x00 }
45 #endif
46 
52 #ifndef LORAMAC_APP_EUI_DEFAULT
53 #define LORAMAC_APP_EUI_DEFAULT { 0x00, 0x00, 0x00, 0x00, \
54  0x00, 0x00, 0x00, 0x00 }
55 #endif
56 
62 #ifndef LORAMAC_APP_KEY_DEFAULT
63 #define LORAMAC_APP_KEY_DEFAULT { 0x00, 0x00, 0x00, 0x00, \
64  0x00, 0x00, 0x00, 0x00, \
65  0x00, 0x00, 0x00, 0x00, \
66  0x00, 0x00, 0x00, 0x00 }
67 #endif
68 
74 #ifndef LORAMAC_APP_SKEY_DEFAULT
75 #define LORAMAC_APP_SKEY_DEFAULT { 0x00, 0x00, 0x00, 0x00, \
76  0x00, 0x00, 0x00, 0x00, \
77  0x00, 0x00, 0x00, 0x00, \
78  0x00, 0x00, 0x00, 0x00 }
79 #endif
80 
86 #ifndef LORAMAC_NWK_SKEY_DEFAULT
87 #define LORAMAC_NWK_SKEY_DEFAULT { 0x00, 0x00, 0x00, 0x00, \
88  0x00, 0x00, 0x00, 0x00, \
89  0x00, 0x00, 0x00, 0x00, \
90  0x00, 0x00, 0x00, 0x00 }
91 #endif
92 
96 #ifndef LORAMAC_DEV_ADDR_DEFAULT
97 #define LORAMAC_DEV_ADDR_DEFAULT { 0x00, 0x00, 0x00, 0x00 }
98 #endif
99 
108 #ifndef LORAMAC_DEFAULT_DEVICE_CLASS
109 #define LORAMAC_DEFAULT_DEVICE_CLASS (LORAMAC_CLASS_A)
110 #endif
111 
115 #ifndef LORAMAC_DEFAULT_NETID
116 #define LORAMAC_DEFAULT_NETID (1U)
117 #endif
118 
122 #ifndef LORAMAC_DEFAULT_PUBLIC_NETWORK
123 #define LORAMAC_DEFAULT_PUBLIC_NETWORK (true)
124 #endif
125 
128 #ifndef LORAMAC_DEFAULT_DR
129 #define LORAMAC_DEFAULT_DR (LORAMAC_DR_0)
130 #endif
131 
135 #ifndef LORAMAC_DEFAULT_TX_POWER
136 #define LORAMAC_DEFAULT_TX_POWER (LORAMAC_TX_PWR_1)
137 #endif
138 
142 #ifndef LORAMAC_DEFAULT_TX_PORT
143 #define LORAMAC_DEFAULT_TX_PORT (2U)
144 #endif
145 
149  #ifndef LORAMAC_DEFAULT_TX_MODE
150  #define LORAMAC_DEFAULT_TX_MODE (LORAMAC_TX_CNF)
151  #endif
152 
156 #ifndef LORAMAC_DEFAULT_TX_POWER
157 #define LORAMAC_DEFAULT_TX_POWER (LORAMAC_TX_PWR_1)
158 #endif
159 
163 #ifndef LORAMAC_DEFAULT_ADR
164 #define LORAMAC_DEFAULT_ADR (false)
165 #endif
166 
170 #ifndef LORAMAC_DEFAULT_RETX
171 #define LORAMAC_DEFAULT_RETX (5U)
172 #endif
173 
179 #ifndef LORAMAC_DEFAULT_LINKCHK
180 #define LORAMAC_DEFAULT_LINKCHK (0U)
181 #endif
182 
186 #ifndef LORAMAC_DEFAULT_RX1_DELAY
187 #define LORAMAC_DEFAULT_RX1_DELAY (1000U)
188 #endif
189 
193 #define LORAMAC_DEFAULT_RX2_DELAY (1000U + LORAMAC_DEFAULT_RX1_DELAY)
194 
198 #ifndef LORAMAC_DEFAULT_AR
199 #define LORAMAC_DEFAULT_AR (false)
200 #endif
201 
205 #ifndef LORAMAC_DEFAULT_RX2_DR
206 #define LORAMAC_DEFAULT_RX2_DR (LORAMAC_DR_0)
207 #endif
208 
212 #ifndef LORAMAC_DEFAULT_RX2_FREQ
213 #define LORAMAC_DEFAULT_RX2_FREQ (869525000UL)
214 #endif
215 
219 #ifndef LORAMAC_DEFAULT_JOIN_PROCEDURE
220 #define LORAMAC_DEFAULT_JOIN_PROCEDURE (LORAMAC_JOIN_OTAA)
221 #endif
222 
226 #ifndef LORAMAC_DEFAULT_JOIN_DELAY1
227 #define LORAMAC_DEFAULT_JOIN_DELAY1 (5U)
228 #endif
229 
233 #ifndef LORAMAC_DEFAULT_JOIN_DELAY2
234 #define LORAMAC_DEFAULT_JOIN_DELAY2 (6U)
235 #endif
236 
240 #ifndef LORAMAC_DEFAULT_MAX_FCNT_GAP
241 #define LORAMAC_DEFAULT_MAX_FCNT_GAP (16384U)
242 #endif
243 
247 #ifndef LORAMAC_DEFAULT_ADR_ACK_LIMIT
248 #define LORAMAC_DEFAULT_ADR_ACK_LIMIT (64U)
249 #endif
250 
254 #ifndef LORAMAC_DEFAULT_ADR_ACK_DELAY
255 #define LORAMAC_DEFAULT_ADR_ACK_DELAY (32U)
256 #endif
257 
261 #ifndef LORAMAC_DEFAULT_ADR_TIMEOUT
262 #define LORAMAC_DEFAULT_ADR_TIMEOUT (3U)
263 #endif
264 
268 #ifndef LORAMAC_DEFAULT_SYSTEM_MAX_RX_ERROR
269 #define LORAMAC_DEFAULT_SYSTEM_MAX_RX_ERROR (50)
270 #endif
271 
275 #ifndef LORAMAC_DEFAULT_MIN_RX_SYMBOLS
276 #define LORAMAC_DEFAULT_MIN_RX_SYMBOLS (12)
277 #endif
278 
287 #define LORAMAC_DEVEUI_LEN (8U)
288 
292 #define LORAMAC_DEVADDR_LEN (4U)
293 
297 #define LORAMAC_APPEUI_LEN (8U)
298 
302 #define LORAMAC_APPKEY_LEN (16U)
303 
307 #define LORAMAC_APPSKEY_LEN (16U)
308 
312 #define LORAMAC_NWKSKEY_LEN (16U)
313 
317 #define LORAMAC_PORT_MIN (1U)
318 
322 #define LORAMAC_PORT_MAX (223U)
323 
327 #define LORAMAC_APP_NONCE_LEN (3U)
328 
332 #define LORAMAC_NETWORK_ID_LEN (3U)
333 
343 typedef enum {
348 
352 typedef enum {
356 
360 typedef enum {
364 
371 typedef enum {
551 
558 typedef enum {
743  typedef struct {
744  uint32_t freq;
745  uint8_t index;
746  uint8_t bw;
747  uint8_t dr_min;
748  uint8_t dr_max;
749  uint8_t dcycle;
751 
752 #ifdef __cplusplus
753 }
754 #endif
755 
756 #endif /* NET_LORAMAC_H */
757 
uint8_t index
Channel index in defined list.
Definition: loramac.h:745
Other-the-air activation.
Definition: loramac.h:353
Confirmable transmission mode.
Definition: loramac.h:361
Activation by personnalization.
Definition: loramac.h:354
Class A device.
Definition: loramac.h:344
Class C device.
Definition: loramac.h:346
uint8_t dr_max
Maximum datarate index.
Definition: loramac.h:748
Class B device.
Definition: loramac.h:345
loramac_tx_pwr_idx_t
LoRaMAC transmission power indexes.
Definition: loramac.h:558
A LoRaMAC network channel.
Definition: loramac.h:743
loramac_tx_mode_t
LoRaMAC transmission mode.
Definition: loramac.h:360
loramac_join_mode_t
LoRaMAC network join procedure type.
Definition: loramac.h:352
loramac_dr_idx_t
LoRaMAC datarate indexes.
Definition: loramac.h:371
uint32_t freq
Center frequency in Hz.
Definition: loramac.h:744
uint8_t dr_min
Minimum datarate index.
Definition: loramac.h:747
stdlib.h wrapper for MSP430
loramac_class_t
Device class.
Definition: loramac.h:343
Unconfirmable transmission mode.
Definition: loramac.h:362
uint8_t dcycle
Duty cycle to use on this channel (1 to 100)
Definition: loramac.h:749
uint8_t bw
Bandwidth index.
Definition: loramac.h:746