LoRaMAC  4.4.5
Documentation of the API
LoRaMacTypes.h File Reference

LoRa MAC layer internal types definition. Please do not include in application sources. More...

#include <stdint.h>
#include <stdbool.h>
#include "timer.h"
#include "systime.h"

Go to the source code of this file.

Data Structures

union  McRxParams_t
 
struct  McChannelParams_t
 
union  McChannelParams_t::uMcKeys
 
struct  MulticastCtx_t
 
struct  Band_t
 
struct  McRxParams_t.ClassB
 
struct  McRxParams_t.ClassC
 
struct  McChannelParams_t::uMcKeys.Session
 
#define LORAMAC_CRYPTO_UNICAST_KEYS   0
 
#define LORAMAC_CRYPTO_MULTICAST_KEYS   127
 
#define LORAMAC_MAX_MC_CTX   4
 
enum  DeviceClass_t { CLASS_A = 0x00, CLASS_B = 0x01, CLASS_C = 0x02 }
 
enum  FType_t { FRAME_TYPE_A, FRAME_TYPE_B, FRAME_TYPE_C, FRAME_TYPE_D }
 
enum  FCntIdentifier_t {
  FCNT_UP = 0, N_FCNT_DOWN, A_FCNT_DOWN, FCNT_DOWN,
  MC_FCNT_DOWN_0, MC_FCNT_DOWN_1, MC_FCNT_DOWN_2, MC_FCNT_DOWN_3
}
 
enum  KeyIdentifier_t {
  APP_KEY = 0, NWK_KEY, J_S_INT_KEY, J_S_ENC_KEY,
  F_NWK_S_INT_KEY, S_NWK_S_INT_KEY, NWK_S_ENC_KEY, APP_S_KEY,
  MC_ROOT_KEY, MC_KE_KEY = LORAMAC_CRYPTO_MULTICAST_KEYS, MC_KEY_0, MC_APP_S_KEY_0,
  MC_NWK_S_KEY_0, MC_KEY_1, MC_APP_S_KEY_1, MC_NWK_S_KEY_1,
  MC_KEY_2, MC_APP_S_KEY_2, MC_NWK_S_KEY_2, MC_KEY_3,
  MC_APP_S_KEY_3, MC_NWK_S_KEY_3, SLOT_RAND_ZERO_KEY, NO_KEY
}
 
enum  AddressIdentifier_t {
  MULTICAST_0_ADDR = 0, MULTICAST_1_ADDR = 1, MULTICAST_2_ADDR = 2, MULTICAST_3_ADDR = 3,
  UNICAST_DEV_ADDR = 4
}
 
enum  JoinReqIdentifier_t { REJOIN_REQ_0 = 0x00, REJOIN_REQ_1 = 0x01, REJOIN_REQ_2 = 0x02, JOIN_REQ = 0xFF }
 
enum  LoRaMacMoteCmd_t {
  MOTE_MAC_LINK_CHECK_REQ = 0x02, MOTE_MAC_LINK_ADR_ANS = 0x03, MOTE_MAC_DUTY_CYCLE_ANS = 0x04, MOTE_MAC_RX_PARAM_SETUP_ANS = 0x05,
  MOTE_MAC_DEV_STATUS_ANS = 0x06, MOTE_MAC_NEW_CHANNEL_ANS = 0x07, MOTE_MAC_RX_TIMING_SETUP_ANS = 0x08, MOTE_MAC_TX_PARAM_SETUP_ANS = 0x09,
  MOTE_MAC_DL_CHANNEL_ANS = 0x0A, MOTE_MAC_DEVICE_TIME_REQ = 0x0D, MOTE_MAC_PING_SLOT_INFO_REQ = 0x10, MOTE_MAC_PING_SLOT_FREQ_ANS = 0x11,
  MOTE_MAC_BEACON_TIMING_REQ = 0x12, MOTE_MAC_BEACON_FREQ_ANS = 0x13
}
 
enum  LoRaMacSrvCmd_t {
  SRV_MAC_RESET_CONF = 0x01, SRV_MAC_LINK_CHECK_ANS = 0x02, SRV_MAC_LINK_ADR_REQ = 0x03, SRV_MAC_DUTY_CYCLE_REQ = 0x04,
  SRV_MAC_RX_PARAM_SETUP_REQ = 0x05, SRV_MAC_DEV_STATUS_REQ = 0x06, SRV_MAC_NEW_CHANNEL_REQ = 0x07, SRV_MAC_RX_TIMING_SETUP_REQ = 0x08,
  SRV_MAC_TX_PARAM_SETUP_REQ = 0x09, SRV_MAC_DL_CHANNEL_REQ = 0x0A, SRV_MAC_DEVICE_TIME_ANS = 0x0D, SRV_MAC_PING_SLOT_INFO_ANS = 0x10,
  SRV_MAC_PING_SLOT_CHANNEL_REQ = 0x11, SRV_MAC_BEACON_TIMING_ANS = 0x12, SRV_MAC_BEACON_FREQ_REQ = 0x13
}
 
enum  LoRaMacFrameType_t {
  FRAME_TYPE_JOIN_REQ = 0x00, FRAME_TYPE_JOIN_ACCEPT = 0x01, FRAME_TYPE_DATA_UNCONFIRMED_UP = 0x02, FRAME_TYPE_DATA_UNCONFIRMED_DOWN = 0x03,
  FRAME_TYPE_DATA_CONFIRMED_UP = 0x04, FRAME_TYPE_DATA_CONFIRMED_DOWN = 0x05, FRAME_TYPE_PROPRIETARY = 0x07
}
 
enum  LoRaMacBatteryLevel_t { BAT_LEVEL_EXT_SRC = 0x00, BAT_LEVEL_EMPTY = 0x01, BAT_LEVEL_FULL = 0xFE, BAT_LEVEL_NO_MEASURE = 0xFF }
 

Detailed Description

LoRa MAC layer internal types definition. Please do not include in application sources.

______ _
/ _____) _ | |
( (____ _____ ____ _| |_ _____ ____| |__
\____ \| ___ | (_ _) ___ |/ ___) _ \
_____) ) ____| | | || |_| ____( (___| | | |
(______/|_____)_|_|_| \__)_____)\____)_| |_|
(C)2013 Semtech
___ _____ _ ___ _ _____ ___ ___ ___ ___
/ __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __|
\__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _|
|___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___|
embedded.connectivity.solutions===============
Author
Miguel Luis ( Semtech )
Daniel Jaeckle ( STACKFORCE )
Johannes Bruder ( STACKFORCE )

addtogroup LORAMAC


Data Structure Documentation

◆ McRxParams_t

union McRxParams_t
Data Fields
struct McRxParams_t ClassB
struct McRxParams_t ClassC

◆ McChannelParams_t

struct McChannelParams_t
Data Fields
bool IsRemotelySetup

Indicate if the multicast channel is being setup remotely or locally. Indicates which set of keys are to be used. uMcKeys

DeviceClass_t Class

Multicats channel LoRaWAN class B or C

bool IsEnabled

True if the entry is active

AddressIdentifier_t GroupID
uint32_t Address

Address

union uMcKeys McKeys
uint32_t FCountMin

Minimum multicast frame counter value

uint32_t FCountMax

Maximum multicast frame counter value

McRxParams_t RxParams

Multicast reception parameters

◆ McChannelParams_t::uMcKeys

union McChannelParams_t::uMcKeys

Multicast keys

Data Fields
uint8_t * McKeyE

Encrypted multicast key - Used when IsRemotelySetup equals true. MC_KEY is decrypted and then the session keys ar derived.

struct uMcKeys Session

Multicast Session keys - Used when IsRemotelySetup equals false

◆ MulticastCtx_t

struct MulticastCtx_t

Multicast context

Data Fields
McChannelParams_t ChannelParams

Multicast channel parameters

uint32_t * DownLinkCounter

Downlink counter

uint8_t PingNb

Number of multicast slots. The variable can be calculated as follows: PingNb = 128 / ( 1 << periodicity ), where 0 <= periodicity <= 7

uint16_t PingPeriod

Period of the multicast slots. The variable can be calculated as follows: PingPeriod = 4096 / PingNb

uint16_t PingOffset

Ping offset of the multicast channel for Class B

◆ Band_t

struct Band_t

LoRaMAC band parameters definition

Data Fields
uint16_t DCycle

Duty cycle

int8_t TxMaxPower

Maximum Tx power

TimerTime_t LastBandUpdateTime

The last time the band has been synchronized with the current time

TimerTime_t LastMaxCreditAssignTime

The last time we have assigned the max credits for the 24h interval.

TimerTime_t TimeCredits

Current time credits which are available. This is a value in ms

TimerTime_t MaxTimeCredits

Maximum time credits which are available. This is a value in ms

bool ReadyForTransmission

Set to true when the band is ready for use.

◆ McRxParams_t.ClassB

struct McRxParams_t.ClassB
Data Fields
uint32_t Frequency

Reception frequency of the ping slot windows

int8_t Datarate

Datarate of the ping slot

uint16_t Periodicity

This parameter is necessary for class B operation. It defines the periodicity of the multicast downlink slots

◆ McRxParams_t.ClassC

struct McRxParams_t.ClassC
Data Fields
uint32_t Frequency

Reception frequency of the ping slot windows

int8_t Datarate

Datarate of the ping slot

◆ McChannelParams_t::uMcKeys.Session

struct McChannelParams_t::uMcKeys.Session

Multicast Session keys - Used when IsRemotelySetup equals false

Data Fields
uint8_t * McAppSKey

Multicast application session key

uint8_t * McNwkSKey

Multicast network session key

Macro Definition Documentation

◆ LORAMAC_CRYPTO_UNICAST_KEYS

#define LORAMAC_CRYPTO_UNICAST_KEYS   0

Start value for unicast keys enumeration

◆ LORAMAC_CRYPTO_MULTICAST_KEYS

#define LORAMAC_CRYPTO_MULTICAST_KEYS   127

Start value for multicast keys enumeration

◆ LORAMAC_MAX_MC_CTX

#define LORAMAC_MAX_MC_CTX   4

Maximum number of multicast context

Enumeration Type Documentation

◆ DeviceClass_t

LoRaWAN devices classes definition

LoRaWAN Specification V1.0.2, chapter 2.1

Enumerator
CLASS_A 

LoRaWAN device class A

LoRaWAN Specification V1.0.2, chapter 3

CLASS_B 

LoRaWAN device class B

LoRaWAN Specification V1.0.2, chapter 8

CLASS_C 

LoRaWAN device class C

LoRaWAN Specification V1.0.2, chapter 17

Examples
classB/B-L072Z-LRWAN1/main.c, classB/NAMote72/main.c, classB/NucleoL073/main.c, classB/NucleoL152/main.c, classB/NucleoL476/main.c, classB/SAMR34/main.c, classB/SKiM880B/main.c, classB/SKiM881AXL/main.c, and classB/SKiM980A/main.c.

◆ FType_t

enum FType_t

LoRaWAN Frame type enumeration to differ between the possible data up/down frame configurations.

Note: The naming is implementation specific since there is no definition in the LoRaWAN specification included.

Enumerator
FRAME_TYPE_A 

Frame type A

FOptsLen > 0, Fopt present, FPort > 0, FRMPayload present

FRAME_TYPE_B 

Frame type B

FOptsLen > 0, Fopt present, FPort not present, FRMPayload not present

FRAME_TYPE_C 

Frame type C

FOptsLen = 0, Fopt not present, FPort = 0 , FRMPayload containing MAC commands

FRAME_TYPE_D 

Frame type D

FOptsLen = 0, Fopt not present, FPort > 0 , FRMPayload present

◆ FCntIdentifier_t

LoRaWAN Frame counter identifier.

Enumerator
FCNT_UP 

Uplink frame counter which is incremented with each uplink.

N_FCNT_DOWN 

Network downlink frame counter which is incremented with each downlink on FPort 0 or when the FPort field is missing.

A_FCNT_DOWN 

Application downlink frame counter which is incremented with each downlink on a port different than 0.

FCNT_DOWN 

In case if the device is connected to a LoRaWAN 1.0 Server, this counter is used for every kind of downlink frame.

MC_FCNT_DOWN_0 

Multicast downlink counter for index 0

MC_FCNT_DOWN_1 

Multicast downlink counter for index 1

MC_FCNT_DOWN_2 

Multicast downlink counter for index 2

MC_FCNT_DOWN_3 

Multicast downlink counter for index 3

◆ KeyIdentifier_t

LoRaMac Key identifier

Enumerator
APP_KEY 

Application root key

NWK_KEY 

Network root key

J_S_INT_KEY 

Join session integrity key

J_S_ENC_KEY 

Join session encryption key

F_NWK_S_INT_KEY 

Forwarding Network session integrity key

S_NWK_S_INT_KEY 

Serving Network session integrity key

NWK_S_ENC_KEY 

Network session encryption key

APP_S_KEY 

Application session key

MC_ROOT_KEY 

Multicast root key

MC_KE_KEY 

Multicast key encryption key

MC_KEY_0 

Multicast root key index 0

MC_APP_S_KEY_0 

Multicast Application session key index 0

MC_NWK_S_KEY_0 

Multicast Network session key index 0

MC_KEY_1 

Multicast root key index 1

MC_APP_S_KEY_1 

Multicast Application session key index 1

MC_NWK_S_KEY_1 

Multicast Network session key index 1

MC_KEY_2 

Multicast root key index 2

MC_APP_S_KEY_2 

Multicast Application session key index 2

MC_NWK_S_KEY_2 

Multicast Network session key index 2

MC_KEY_3 

Multicast root key index 3

MC_APP_S_KEY_3 

Multicast Application session key index 3

MC_NWK_S_KEY_3 

Multicast Network session key index 3

SLOT_RAND_ZERO_KEY 

Zero key for slot randomization in class B

NO_KEY 

No Key

◆ AddressIdentifier_t

LoRaMac Crypto address identifier

Enumerator
MULTICAST_0_ADDR 

Multicast Address for index 0

MULTICAST_1_ADDR 

Multicast Address for index 1

MULTICAST_2_ADDR 

Multicast Address for index 2

MULTICAST_3_ADDR 

Multicast Address for index 3

UNICAST_DEV_ADDR 

Unicast End-device address

◆ JoinReqIdentifier_t

LoRaMac join-request / rejoin type identifier

Enumerator
REJOIN_REQ_0 

Rejoin type 0

REJOIN_REQ_1 

Rejoin type 1

REJOIN_REQ_2 

Rejoin type 2

JOIN_REQ 

Join-request

◆ LoRaMacMoteCmd_t

LoRaMAC mote MAC commands

LoRaWAN Specification V1.1.0, chapter 5, table 4

Enumerator
MOTE_MAC_LINK_CHECK_REQ 

LinkCheckReq

MOTE_MAC_LINK_ADR_ANS 

LinkADRAns

MOTE_MAC_DUTY_CYCLE_ANS 

DutyCycleAns

MOTE_MAC_RX_PARAM_SETUP_ANS 

RXParamSetupAns

MOTE_MAC_DEV_STATUS_ANS 

DevStatusAns

MOTE_MAC_NEW_CHANNEL_ANS 

NewChannelAns

MOTE_MAC_RX_TIMING_SETUP_ANS 

RXTimingSetupAns

MOTE_MAC_TX_PARAM_SETUP_ANS 

TXParamSetupAns

MOTE_MAC_DL_CHANNEL_ANS 

DlChannelAns

MOTE_MAC_DEVICE_TIME_REQ 

DeviceTimeReq

MOTE_MAC_PING_SLOT_INFO_REQ 

PingSlotInfoReq

MOTE_MAC_PING_SLOT_FREQ_ANS 

PingSlotFreqAns

MOTE_MAC_BEACON_TIMING_REQ 

BeaconTimingReq

MOTE_MAC_BEACON_FREQ_ANS 

BeaconFreqAns

◆ LoRaMacSrvCmd_t

LoRaMAC server MAC commands

LoRaWAN Specification V1.1.0 chapter 5, table 4

Enumerator
SRV_MAC_RESET_CONF 

ResetInd

SRV_MAC_LINK_CHECK_ANS 

LinkCheckAns

SRV_MAC_LINK_ADR_REQ 

LinkADRReq

SRV_MAC_DUTY_CYCLE_REQ 

DutyCycleReq

SRV_MAC_RX_PARAM_SETUP_REQ 

RXParamSetupReq

SRV_MAC_DEV_STATUS_REQ 

DevStatusReq

SRV_MAC_NEW_CHANNEL_REQ 

NewChannelReq

SRV_MAC_RX_TIMING_SETUP_REQ 

RXTimingSetupReq

SRV_MAC_TX_PARAM_SETUP_REQ 

NewChannelReq

SRV_MAC_DL_CHANNEL_REQ 

DlChannelReq

SRV_MAC_DEVICE_TIME_ANS 

DeviceTimeAns

SRV_MAC_PING_SLOT_INFO_ANS 

PingSlotInfoAns

SRV_MAC_PING_SLOT_CHANNEL_REQ 

PingSlotChannelReq

SRV_MAC_BEACON_TIMING_ANS 

BeaconTimingAns

SRV_MAC_BEACON_FREQ_REQ 

BeaconFreqReq

◆ LoRaMacFrameType_t

LoRaMAC frame types

LoRaWAN Specification V1.0.2, chapter 4.2.1, table 1

Enumerator
FRAME_TYPE_JOIN_REQ 

LoRaMAC join request frame

FRAME_TYPE_JOIN_ACCEPT 

LoRaMAC join accept frame

FRAME_TYPE_DATA_UNCONFIRMED_UP 

LoRaMAC unconfirmed up-link frame

FRAME_TYPE_DATA_UNCONFIRMED_DOWN 

LoRaMAC unconfirmed down-link frame

FRAME_TYPE_DATA_CONFIRMED_UP 

LoRaMAC confirmed up-link frame

FRAME_TYPE_DATA_CONFIRMED_DOWN 

LoRaMAC confirmed down-link frame

FRAME_TYPE_PROPRIETARY 

LoRaMAC proprietary frame

◆ LoRaMacBatteryLevel_t

LoRaMAC Battery level indicator

Enumerator
BAT_LEVEL_EXT_SRC 

External power source

BAT_LEVEL_EMPTY 

Battery level empty

BAT_LEVEL_FULL 

Battery level full

BAT_LEVEL_NO_MEASURE 

Battery level - no measurement available