44 #ifndef CONFIG_LORAMAC_DEV_EUI_DEFAULT 
   45 #define CONFIG_LORAMAC_DEV_EUI_DEFAULT          "0000000000000000" 
   53 #ifndef CONFIG_LORAMAC_JOIN_EUI_DEFAULT 
   54 #define CONFIG_LORAMAC_JOIN_EUI_DEFAULT          "0000000000000000" 
   62 #ifndef CONFIG_LORAMAC_APP_EUI_DEFAULT 
   63 #define CONFIG_LORAMAC_APP_EUI_DEFAULT          "0000000000000000" 
   71 #ifndef CONFIG_LORAMAC_APP_KEY_DEFAULT 
   72 #define CONFIG_LORAMAC_APP_KEY_DEFAULT          "00000000000000000000000000000000" 
   80 #ifndef CONFIG_LORAMAC_NWK_KEY_DEFAULT 
   81 #define CONFIG_LORAMAC_NWK_KEY_DEFAULT          "00000000000000000000000000000000" 
   89 #ifndef CONFIG_LORAMAC_APP_SKEY_DEFAULT 
   90 #define CONFIG_LORAMAC_APP_SKEY_DEFAULT         "00000000000000000000000000000000" 
   98 #ifndef CONFIG_LORAMAC_NWK_SKEY_DEFAULT 
   99 #define CONFIG_LORAMAC_NWK_SKEY_DEFAULT         "00000000000000000000000000000000" 
  107 #ifndef CONFIG_LORAMAC_FNWKSINT_KEY_DEFAULT 
  108 #define CONFIG_LORAMAC_FNWKSINT_KEY_DEFAULT          "00000000000000000000000000000000" 
  116 #ifndef CONFIG_LORAMAC_SNWKSINT_KEY_DEFAULT 
  117 #define CONFIG_LORAMAC_SNWKSINT_KEY_DEFAULT          "00000000000000000000000000000000" 
  125 #ifndef CONFIG_LORAMAC_NWKSENC_KEY_DEFAULT 
  126 #define CONFIG_LORAMAC_NWKSENC_KEY_DEFAULT          "00000000000000000000000000000000" 
  132 #ifndef CONFIG_LORAMAC_DEV_ADDR_DEFAULT 
  133 #define CONFIG_LORAMAC_DEV_ADDR_DEFAULT         "00000000" 
  139 #if !IS_ACTIVE(CONFIG_LORAMAC_REGION_EU_868) \ 
  140     && !IS_ACTIVE(CONFIG_LORAMAC_REGION_IN_865) 
  141 #define CONFIG_LORAMAC_REGION_EU_868           1 
  156 #if IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_DEVICE_CLASS_A) 
  157 #define CONFIG_LORAMAC_DEFAULT_DEVICE_CLASS     (LORAMAC_CLASS_A) 
  158 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_DEVICE_CLASS_B) 
  159 #define CONFIG_LORAMAC_DEFAULT_DEVICE_CLASS     (LORAMAC_CLASS_B) 
  160 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_DEVICE_CLASS_C) 
  161 #define CONFIG_LORAMAC_DEFAULT_DEVICE_CLASS     (LORAMAC_CLASS_C) 
  164 #ifndef CONFIG_LORAMAC_DEFAULT_DEVICE_CLASS 
  165 #define CONFIG_LORAMAC_DEFAULT_DEVICE_CLASS     (LORAMAC_CLASS_A) 
  176 #ifndef CONFIG_LORAMAC_DEFAULT_NETID 
  177 #define CONFIG_LORAMAC_DEFAULT_NETID            (1U) 
  189 #define CONFIG_LORAMAC_DEFAULT_PRIVATE_NETWORK 
  201 #if IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_DR_0) 
  202 #define CONFIG_LORAMAC_DEFAULT_DR               (LORAMAC_DR_0) 
  203 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_DR_1) 
  204 #define CONFIG_LORAMAC_DEFAULT_DR               (LORAMAC_DR_1) 
  205 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_DR_2) 
  206 #define CONFIG_LORAMAC_DEFAULT_DR               (LORAMAC_DR_2) 
  207 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_DR_3) 
  208 #define CONFIG_LORAMAC_DEFAULT_DR               (LORAMAC_DR_3) 
  209 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_DR_4) 
  210 #define CONFIG_LORAMAC_DEFAULT_DR               (LORAMAC_DR_4) 
  211 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_DR_5) 
  212 #define CONFIG_LORAMAC_DEFAULT_DR               (LORAMAC_DR_5) 
  213 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_DR_6) 
  214 #define CONFIG_LORAMAC_DEFAULT_DR               (LORAMAC_DR_6) 
  215 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_DR_7) 
  216 #define CONFIG_LORAMAC_DEFAULT_DR               (LORAMAC_DR_7) 
  217 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_DR_8) 
  218 #define CONFIG_LORAMAC_DEFAULT_DR               (LORAMAC_DR_8) 
  219 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_DR_9) 
  220 #define CONFIG_LORAMAC_DEFAULT_DR               (LORAMAC_DR_9) 
  221 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_DR_10) 
  222 #define CONFIG_LORAMAC_DEFAULT_DR               (LORAMAC_DR_10) 
  223 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_DR_11) 
  224 #define CONFIG_LORAMAC_DEFAULT_DR               (LORAMAC_DR_11) 
  225 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_DR_12) 
  226 #define CONFIG_LORAMAC_DEFAULT_DR               (LORAMAC_DR_12) 
  227 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_DR_13) 
  228 #define CONFIG_LORAMAC_DEFAULT_DR               (LORAMAC_DR_13) 
  229 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_DR_14) 
  230 #define CONFIG_LORAMAC_DEFAULT_DR               (LORAMAC_DR_14) 
  231 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_DR_15) 
  232 #define CONFIG_LORAMAC_DEFAULT_DR               (LORAMAC_DR_15) 
  235 #ifndef CONFIG_LORAMAC_DEFAULT_DR 
  236 #define CONFIG_LORAMAC_DEFAULT_DR               (LORAMAC_DR_0) 
  245 #if IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_TX_POWER_0) 
  246 #define CONFIG_LORAMAC_DEFAULT_TX_POWER         (LORAMAC_TX_PWR_0) 
  247 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_TX_POWER_1) 
  248 #define CONFIG_LORAMAC_DEFAULT_TX_POWER         (LORAMAC_TX_PWR_1) 
  249 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_TX_POWER_2) 
  250 #define CONFIG_LORAMAC_DEFAULT_TX_POWER         (LORAMAC_TX_PWR_2) 
  251 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_TX_POWER_3) 
  252 #define CONFIG_LORAMAC_DEFAULT_TX_POWER         (LORAMAC_TX_PWR_3) 
  253 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_TX_POWER_4) 
  254 #define CONFIG_LORAMAC_DEFAULT_TX_POWER         (LORAMAC_TX_PWR_4) 
  255 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_TX_POWER_5) 
  256 #define CONFIG_LORAMAC_DEFAULT_TX_POWER         (LORAMAC_TX_PWR_5) 
  257 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_TX_POWER_6) 
  258 #define CONFIG_LORAMAC_DEFAULT_TX_POWER         (LORAMAC_TX_PWR_6) 
  259 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_TX_POWER_7) 
  260 #define CONFIG_LORAMAC_DEFAULT_TX_POWER         (LORAMAC_TX_PWR_7) 
  261 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_TX_POWER_8) 
  262 #define CONFIG_LORAMAC_DEFAULT_TX_POWER         (LORAMAC_TX_PWR_8) 
  263 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_TX_POWER_9) 
  264 #define CONFIG_LORAMAC_DEFAULT_TX_POWER         (LORAMAC_TX_PWR_9) 
  265 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_TX_POWER_10) 
  266 #define CONFIG_LORAMAC_DEFAULT_TX_POWER         (LORAMAC_TX_PWR_10) 
  267 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_TX_POWER_11) 
  268 #define CONFIG_LORAMAC_DEFAULT_TX_POWER         (LORAMAC_TX_PWR_11) 
  269 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_TX_POWER_12) 
  270 #define CONFIG_LORAMAC_DEFAULT_TX_POWER         (LORAMAC_TX_PWR_12) 
  271 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_TX_POWER_13) 
  272 #define CONFIG_LORAMAC_DEFAULT_TX_POWER         (LORAMAC_TX_PWR_13) 
  273 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_TX_POWER_14) 
  274 #define CONFIG_LORAMAC_DEFAULT_TX_POWER         (LORAMAC_TX_PWR_14) 
  275 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_TX_POWER_15) 
  276 #define CONFIG_LORAMAC_DEFAULT_TX_POWER         (LORAMAC_TX_PWR_15) 
  279 #ifndef CONFIG_LORAMAC_DEFAULT_TX_POWER 
  280 #define CONFIG_LORAMAC_DEFAULT_TX_POWER         (LORAMAC_TX_PWR_1) 
  292 #ifndef CONFIG_LORAMAC_DEFAULT_TX_PORT 
  293 #define CONFIG_LORAMAC_DEFAULT_TX_PORT          (2U) 
  304 #if IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_TX_MODE_CNF) 
  305 #define CONFIG_LORAMAC_DEFAULT_TX_MODE          (LORAMAC_TX_CNF) 
  306 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_TX_MODE_UNCNF) 
  307 #define CONFIG_LORAMAC_DEFAULT_TX_MODE          (LORAMAC_TX_UNCNF) 
  310 #ifndef CONFIG_LORAMAC_DEFAULT_TX_MODE 
  311 #define CONFIG_LORAMAC_DEFAULT_TX_MODE          (LORAMAC_TX_CNF) 
  325 #ifndef CONFIG_LORAMAC_DEFAULT_REDUNDANCY 
  326 #define CONFIG_LORAMAC_DEFAULT_REDUNDANCY       (0U) 
  338 #define CONFIG_LORAMAC_DEFAULT_ADR 
  347 #ifndef CONFIG_LORAMAC_DEFAULT_RETX 
  348 #define CONFIG_LORAMAC_DEFAULT_RETX             (5U) 
  359 #ifndef CONFIG_LORAMAC_DEFAULT_LINKCHK 
  360 #define CONFIG_LORAMAC_DEFAULT_LINKCHK          (0U) 
  369 #ifndef CONFIG_LORAMAC_DEFAULT_RX1_DELAY 
  370 #define CONFIG_LORAMAC_DEFAULT_RX1_DELAY        (1000U) 
  379 #if IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_RX2_DR_0) 
  380 #define CONFIG_LORAMAC_DEFAULT_RX2_DR           (LORAMAC_DR_0) 
  381 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_RX2_DR_1) 
  382 #define CONFIG_LORAMAC_DEFAULT_RX2_DR           (LORAMAC_DR_1) 
  383 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_RX2_DR_2) 
  384 #define CONFIG_LORAMAC_DEFAULT_RX2_DR           (LORAMAC_DR_2) 
  385 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_RX2_DR_3) 
  386 #define CONFIG_LORAMAC_DEFAULT_RX2_DR           (LORAMAC_DR_3) 
  387 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_RX2_DR_4) 
  388 #define CONFIG_LORAMAC_DEFAULT_RX2_DR           (LORAMAC_DR_4) 
  389 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_RX2_DR_5) 
  390 #define CONFIG_LORAMAC_DEFAULT_RX2_DR           (LORAMAC_DR_5) 
  391 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_RX2_DR_6) 
  392 #define CONFIG_LORAMAC_DEFAULT_RX2_DR           (LORAMAC_DR_6) 
  393 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_RX2_DR_7) 
  394 #define CONFIG_LORAMAC_DEFAULT_RX2_DR           (LORAMAC_DR_7) 
  395 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_RX2_DR_8) 
  396 #define CONFIG_LORAMAC_DEFAULT_RX2_DR           (LORAMAC_DR_8) 
  397 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_RX2_DR_9) 
  398 #define CONFIG_LORAMAC_DEFAULT_RX2_DR           (LORAMAC_DR_9) 
  399 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_RX2_DR_10) 
  400 #define CONFIG_LORAMAC_DEFAULT_RX2_DR           (LORAMAC_DR_10) 
  401 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_RX2_DR_11) 
  402 #define CONFIG_LORAMAC_DEFAULT_RX2_DR           (LORAMAC_DR_11) 
  403 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_RX2_DR_12) 
  404 #define CONFIG_LORAMAC_DEFAULT_RX2_DR           (LORAMAC_DR_12) 
  405 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_RX2_DR_13) 
  406 #define CONFIG_LORAMAC_DEFAULT_RX2_DR           (LORAMAC_DR_13) 
  407 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_RX2_DR_14) 
  408 #define CONFIG_LORAMAC_DEFAULT_RX2_DR           (LORAMAC_DR_14) 
  409 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_RX2_DR_15) 
  410 #define CONFIG_LORAMAC_DEFAULT_RX2_DR           (LORAMAC_DR_15) 
  413 #ifndef CONFIG_LORAMAC_DEFAULT_RX2_DR 
  414 #if IS_ACTIVE(CONFIG_LORAMAC_REGION_EU_868) 
  415 #define CONFIG_LORAMAC_DEFAULT_RX2_DR           (LORAMAC_DR_0) 
  416 #elif IS_ACTIVE(CONFIG_LORAMAC_REGION_IN_865) 
  417 #define CONFIG_LORAMAC_DEFAULT_RX2_DR           (LORAMAC_DR_2) 
  424 #ifndef CONFIG_LORAMAC_DEFAULT_RX2_FREQ 
  425 #if IS_ACTIVE(CONFIG_LORAMAC_REGION_EU_868) 
  426 #define CONFIG_LORAMAC_DEFAULT_RX2_FREQ         (869525000UL) 
  427 #elif IS_ACTIVE(CONFIG_LORAMAC_REGION_IN_865) 
  428 #define CONFIG_LORAMAC_DEFAULT_RX2_FREQ         (866550000UL) 
  442 #if IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_JOIN_PROCEDURE_OTAA) 
  443 #define CONFIG_LORAMAC_DEFAULT_JOIN_PROCEDURE   (LORAMAC_JOIN_OTAA) 
  444 #elif IS_ACTIVE(CONFIG_LORAMAC_DEFAULT_JOIN_PROCEDURE_ABP) 
  445 #define CONFIG_LORAMAC_DEFAULT_JOIN_PROCEDURE   (LORAMAC_JOIN_ABP) 
  448 #ifndef CONFIG_LORAMAC_DEFAULT_JOIN_PROCEDURE 
  449 #define CONFIG_LORAMAC_DEFAULT_JOIN_PROCEDURE   (LORAMAC_JOIN_OTAA) 
  459 #ifndef CONFIG_LORAMAC_DEFAULT_JOIN_DELAY1 
  460 #define CONFIG_LORAMAC_DEFAULT_JOIN_DELAY1      (5U) 
  470 #ifndef CONFIG_LORAMAC_DEFAULT_JOIN_DELAY2 
  471 #define CONFIG_LORAMAC_DEFAULT_JOIN_DELAY2      (6U) 
  480 #ifndef CONFIG_LORAMAC_DEFAULT_MAX_FCNT_GAP 
  481 #define CONFIG_LORAMAC_DEFAULT_MAX_FCNT_GAP     (16384U) 
  491 #ifndef CONFIG_LORAMAC_DEFAULT_SYSTEM_MAX_RX_ERROR 
  492 #define CONFIG_LORAMAC_DEFAULT_SYSTEM_MAX_RX_ERROR  (50) 
  503 #ifndef CONFIG_LORAMAC_DEFAULT_MIN_RX_SYMBOLS 
  504 #define CONFIG_LORAMAC_DEFAULT_MIN_RX_SYMBOLS   (12) 
  515 #ifndef LORAMAC_DEFAULT_ADR_ACK_LIMIT 
  516 #define LORAMAC_DEFAULT_ADR_ACK_LIMIT           (64U) 
  524 #ifndef LORAMAC_DEFAULT_ADR_ACK_DELAY 
  525 #define LORAMAC_DEFAULT_ADR_ACK_DELAY           (32U) 
  533 #ifndef LORAMAC_DEFAULT_ADR_TIMEOUT 
  534 #define LORAMAC_DEFAULT_ADR_TIMEOUT             (3U) 
  540 #define LORAMAC_DEFAULT_RX2_DELAY               (1000U + CONFIG_LORAMAC_DEFAULT_RX1_DELAY) 
  549 #define LORAMAC_DEVEUI_LEN                      (8U) 
  554 #define LORAMAC_DEVADDR_LEN                     (4U) 
  559 #define LORAMAC_APPEUI_LEN                      (8U) 
  564 #define LORAMAC_JOINEUI_LEN                     (8U) 
  569 #define LORAMAC_APPKEY_LEN                      (16U) 
  574 #define LORAMAC_NWKKEY_LEN                      (16U) 
  579 #define LORAMAC_APPSKEY_LEN                     (16U) 
  584 #define LORAMAC_NWKSKEY_LEN                     (16U) 
  589 #define LORAMAC_FNWKSINTKEY_LEN                 (16U) 
  594 #define LORAMAC_SNWKSINTKEY_LEN                 (16U) 
  599 #define LORAMAC_NWKSENCKEY_LEN                  (16U) 
  604 #define LORAMAC_JSINTKEY_LEN                  (16U) 
  609 #define LORAMAC_JSENCKEY_LEN                  (16U) 
  614 #define LORAMAC_JSINTKEY_LEN                  (16U) 
  619 #define LORAMAC_PORT_MIN                        (1U) 
  624 #define LORAMAC_PORT_MAX                        (223U) 
  629 #define LORAMAC_APP_NONCE_LEN                   (3U) 
  634 #define LORAMAC_JOIN_NONCE_LEN                  (3U) 
  639 #define LORAMAC_NETWORK_ID_LEN                  (3U) 
  646 #if defined(REGION_AU915) || defined(REGION_CN470) || defined(REGION_US915) || defined(REGION_US915_HYBRID) || defined(REGION_AS923) 
  647 #define LORAMAC_CHANNELS_MASK_LEN                     (6U) 
  649 #define LORAMAC_CHANNELS_MASK_LEN                     (1U) 
 1084     const uint8_t _K[6][4] = {
 
 1093     uint32_t t_sym = 1 << (15 - dr);
 
 1094     uint32_t t_preamble = (t_sym << 3) + (t_sym << 2) + (t_sym >> 2);
 
 1097     uint8_t n0 = _K[index][0];
 
 1098     uint32_t nb_symbols;
 
 1100     uint8_t offset = _K[index][1];
 
 1102     if (pkt_len < offset) {
 
 1103         nb_symbols = 8 + n0 * (cr + 4);
 
 1106         uint8_t c1 = _K[index][2];
 
 1107         uint8_t c2 = _K[index][3];
 
 1108         uint8_t pos = (pkt_len - offset) % (c1 + c2);
 
 1109         uint8_t cycle = (pkt_len - offset) / (c1 + c2);
 
 1110         nb_symbols = 8 + (n0 + 2 * cycle + 1 + (pos > (c1 - 1))) * (cr + 4);
 
 1113     uint32_t t_payload = t_sym * nb_symbols;
 
 1115     return t_preamble + t_payload;
 
POSIX.1-2008 compliant version of the assert macro.
 
#define assert(cond)
abort the program if assertion is false
 
loramac_join_mode_t
LoRaMAC network join procedure type.
 
loramac_tx_mode_t
LoRaMAC transmission mode.
 
loramac_dr_idx_t
LoRaMAC datarate indexes.
 
static uint32_t lora_time_on_air(size_t pkt_len, loramac_dr_idx_t dr, uint8_t cr)
Compute the time on air of a LoRa packet.
 
loramac_class_t
Device class.
 
loramac_tx_pwr_idx_t
LoRaMAC transmission power indexes.
 
@ LORAMAC_JOIN_ABP
Activation by personnalization.
 
@ LORAMAC_JOIN_OTAA
Other-the-air activation.
 
@ LORAMAC_TX_CNF
Confirmable transmission mode.
 
@ LORAMAC_TX_UNCNF
Unconfirmable transmission mode.
 
@ LORAMAC_CLASS_C
Class C device.
 
@ LORAMAC_CLASS_B
Class B device.
 
@ LORAMAC_CLASS_A
Class A device.
 
Common macros and compiler attributes/pragmas configuration.
 
A LoRaMAC network channel.
 
uint8_t dr_max
Maximum datarate index.
 
uint8_t index
Channel index in defined list.
 
uint8_t bw
Bandwidth index.
 
uint8_t dcycle
Duty cycle to use on this channel (1 to 100)
 
uint32_t freq
Center frequency in Hz.
 
uint8_t dr_min
Minimum datarate index.