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.