LoRaMAC  4.4.6
Documentation of the API
LoRaMacHeaderTypes.h File Reference

LoRa MAC layer header type definitions. More...

#include <stdint.h>

Go to the source code of this file.

Data Structures

union  LoRaMacDLSettings_t
 
struct  LoRaMacDLSettings_t::sDLSettingsBits
 
union  LoRaMacHeader_t
 
struct  LoRaMacHeader_t::sMacHeaderBits
 
union  LoRaMacFrameCtrl_t
 
struct  LoRaMacFrameCtrl_t::sCtrlBits
 
struct  LoRaMacFrameHeader_t
 

Macros

#define LORAMAC_MHDR_FIELD_SIZE   1
 
#define LORAMAC_JOIN_TYPE_FIELD_SIZE   1
 
#define LORAMAC_JOIN_EUI_FIELD_SIZE   8
 
#define LORAMAC_DEV_EUI_FIELD_SIZE   8
 
#define LORAMAC_DEV_NONCE_FIELD_SIZE   2
 
#define LORAMAC_JOIN_NONCE_FIELD_SIZE   3
 
#define LORAMAC_RJCOUNT_0_FIELD_SIZE   2
 
#define LORAMAC_RJCOUNT_1_FIELD_SIZE   2
 
#define LORAMAC_NET_ID_FIELD_SIZE   3
 
#define LORAMAC_DEV_ADDR_FIELD_SIZE   4
 
#define LORAMAC_DL_SETTINGS_FIELD_SIZE   1
 
#define LORAMAC_RX_DELAY_FIELD_SIZE   1
 
#define LORAMAC_CF_LIST_FIELD_SIZE   16
 
#define LORAMAC_FHDR_DEV_ADDR_FIELD_SIZE   LORAMAC_DEV_ADDR_FIELD_SIZE
 
#define LORAMAC_FHDR_F_CTRL_FIELD_SIZE   1
 
#define LORAMAC_FHDR_F_CNT_FIELD_SIZE   2
 
#define LORAMAC_FHDR_F_OPTS_MAX_FIELD_SIZE   15
 
#define LORAMAC_F_PORT_FIELD_SIZE   1
 
#define LORAMAC_MAC_PAYLOAD_FIELD_MAX_SIZE   242
 
#define LORAMAC_MIC_FIELD_SIZE   4
 
#define LORAMAC_JOIN_REQ_MSG_SIZE
 
#define LORAMAC_RE_JOIN_1_MSG_SIZE
 
#define LORAMAC_RE_JOIN_0_2_MSG_SIZE
 
#define LORAMAC_JOIN_ACCEPT_FRAME_MIN_SIZE
 
#define LORAMAC_JOIN_ACCEPT_FRAME_MAX_SIZE
 
#define JOIN_ACCEPT_MIC_COMPUTATION_OFFSET
 
#define LORAMAC_FRAME_PAYLOAD_OVERHEAD_SIZE
 
#define LORAMAC_FRAME_PAYLOAD_MIN_SIZE
 
#define LORAMAC_FRAME_PAYLOAD_MAX_SIZE
 

Detailed Description

LoRa MAC layer header type definitions.

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

addtogroup LORAMAC


Data Structure Documentation

◆ LoRaMacDLSettings_t

union LoRaMacDLSettings_t

LoRaMAC field definition of DLSettings

LoRaWAN Specification V1.0.2, chapter 5.4

Data Fields
uint8_t Value

Byte-access to the bits

struct sDLSettingsBits Bits

◆ LoRaMacDLSettings_t::sDLSettingsBits

struct LoRaMacDLSettings_t::sDLSettingsBits

Structure containing single access to header bits

Data Fields
uint8_t RX2DataRate: 4

Data rate of a downlink using the second receive window

uint8_t RX1DRoffset: 3

Offset between up and downlink datarate of first reception slot

uint8_t OptNeg: 1

Indicates network server LoRaWAN implementation version 1.1 or later.

◆ LoRaMacHeader_t

union LoRaMacHeader_t

LoRaMAC header field definition (MHDR field)

LoRaWAN Specification V1.0.2, chapter 4.2

Data Fields
uint8_t Value

Byte-access to the bits

struct sMacHeaderBits Bits

◆ LoRaMacHeader_t::sMacHeaderBits

struct LoRaMacHeader_t::sMacHeaderBits

Structure containing single access to header bits

Data Fields
uint8_t Major: 2

Major version

uint8_t RFU: 3

RFU

uint8_t MType: 3

Message type

◆ LoRaMacFrameCtrl_t

union LoRaMacFrameCtrl_t

LoRaMAC frame control field definition (FCtrl)

LoRaWAN Specification V1.0.2, chapter 4.3.1

Data Fields
uint8_t Value

Byte-access to the bits

struct sCtrlBits Bits

◆ LoRaMacFrameCtrl_t::sCtrlBits

struct LoRaMacFrameCtrl_t::sCtrlBits

Structure containing single access to bits

Data Fields
uint8_t FOptsLen: 4

Frame options length

uint8_t FPending: 1

Frame pending bit

uint8_t Ack: 1

Message acknowledge bit

uint8_t AdrAckReq: 1

ADR acknowledgment request bit

uint8_t Adr: 1

ADR control in frame header

◆ LoRaMacFrameHeader_t

struct LoRaMacFrameHeader_t

LoRaMac Frame header (FHDR)

LoRaWAN Specification V1.0.2, chapter 4.3.1

Data Fields
uint32_t DevAddr

Device address

LoRaMacFrameCtrl_t FCtrl

Frame control field

uint16_t FCnt

Frame counter

uint8_t FOpts[LORAMAC_FHDR_F_OPTS_MAX_FIELD_SIZE]

FOpts field may transport MAC commands (opt. 0-15 Bytes)

Macro Definition Documentation

◆ LORAMAC_MHDR_FIELD_SIZE

#define LORAMAC_MHDR_FIELD_SIZE   1

MAC header field size

◆ LORAMAC_JOIN_TYPE_FIELD_SIZE

#define LORAMAC_JOIN_TYPE_FIELD_SIZE   1

ReJoinType field size

◆ LORAMAC_JOIN_EUI_FIELD_SIZE

#define LORAMAC_JOIN_EUI_FIELD_SIZE   8

Join EUI field size

◆ LORAMAC_DEV_EUI_FIELD_SIZE

#define LORAMAC_DEV_EUI_FIELD_SIZE   8

Device EUI field size

◆ LORAMAC_DEV_NONCE_FIELD_SIZE

#define LORAMAC_DEV_NONCE_FIELD_SIZE   2

End-device nonce field size

◆ LORAMAC_JOIN_NONCE_FIELD_SIZE

#define LORAMAC_JOIN_NONCE_FIELD_SIZE   3

Join-server nonce field size

◆ LORAMAC_RJCOUNT_0_FIELD_SIZE

#define LORAMAC_RJCOUNT_0_FIELD_SIZE   2

RJcount0 field size

◆ LORAMAC_RJCOUNT_1_FIELD_SIZE

#define LORAMAC_RJCOUNT_1_FIELD_SIZE   2

RJcount1 field size

◆ LORAMAC_NET_ID_FIELD_SIZE

#define LORAMAC_NET_ID_FIELD_SIZE   3

Network ID field size

◆ LORAMAC_DEV_ADDR_FIELD_SIZE

#define LORAMAC_DEV_ADDR_FIELD_SIZE   4

Device address field size

◆ LORAMAC_DL_SETTINGS_FIELD_SIZE

#define LORAMAC_DL_SETTINGS_FIELD_SIZE   1

DLSettings field size

◆ LORAMAC_RX_DELAY_FIELD_SIZE

#define LORAMAC_RX_DELAY_FIELD_SIZE   1

RxDelay field size

◆ LORAMAC_CF_LIST_FIELD_SIZE

#define LORAMAC_CF_LIST_FIELD_SIZE   16

CFList field size

◆ LORAMAC_FHDR_DEV_ADDR_FIELD_SIZE

#define LORAMAC_FHDR_DEV_ADDR_FIELD_SIZE   LORAMAC_DEV_ADDR_FIELD_SIZE

FHDR Device address field size

◆ LORAMAC_FHDR_F_CTRL_FIELD_SIZE

#define LORAMAC_FHDR_F_CTRL_FIELD_SIZE   1

FHDR Frame control field size

◆ LORAMAC_FHDR_F_CNT_FIELD_SIZE

#define LORAMAC_FHDR_F_CNT_FIELD_SIZE   2

FHDR Frame control field size

◆ LORAMAC_FHDR_F_OPTS_MAX_FIELD_SIZE

#define LORAMAC_FHDR_F_OPTS_MAX_FIELD_SIZE   15

FOpts maximum field size

◆ LORAMAC_F_PORT_FIELD_SIZE

#define LORAMAC_F_PORT_FIELD_SIZE   1

Port field size

◆ LORAMAC_MAC_PAYLOAD_FIELD_MAX_SIZE

#define LORAMAC_MAC_PAYLOAD_FIELD_MAX_SIZE   242

Port field size

◆ LORAMAC_MIC_FIELD_SIZE

#define LORAMAC_MIC_FIELD_SIZE   4

MIC field size

◆ LORAMAC_JOIN_REQ_MSG_SIZE

#define LORAMAC_JOIN_REQ_MSG_SIZE
Value:
LORAMAC_DEV_EUI_FIELD_SIZE + LORAMAC_DEV_NONCE_FIELD_SIZE + \
LORAMAC_MIC_FIELD_SIZE )

JoinRequest frame size

MHDR(1) + JoinEUI(8) + DevEUI(8) + DevNonce(2) + MIC(4)

◆ LORAMAC_RE_JOIN_1_MSG_SIZE

#define LORAMAC_RE_JOIN_1_MSG_SIZE
Value:
LORAMAC_JOIN_EUI_FIELD_SIZE + LORAMAC_DEV_EUI_FIELD_SIZE + \
LORAMAC_RJCOUNT_1_FIELD_SIZE + \
LORAMAC_MIC_FIELD_SIZE )

ReJoinRequest type 1 frame size

MHDR(1) + ReJoinType(1) + JoinEUI(8) + DevEUI(8) + RJcount1(2) + MIC(4)

◆ LORAMAC_RE_JOIN_0_2_MSG_SIZE

#define LORAMAC_RE_JOIN_0_2_MSG_SIZE
Value:
LORAMAC_NET_ID_FIELD_SIZE + LORAMAC_DEV_EUI_FIELD_SIZE + \
LORAMAC_RJCOUNT_0_FIELD_SIZE + \
LORAMAC_MIC_FIELD_SIZE )

ReJoinRequest type 0 or 2 frame size

MHDR(1) + ReJoinType(1) + NetID(3) + DevEUI(8) + RJcount0(2) + MIC(4)

◆ LORAMAC_JOIN_ACCEPT_FRAME_MIN_SIZE

#define LORAMAC_JOIN_ACCEPT_FRAME_MIN_SIZE
Value:
LORAMAC_NET_ID_FIELD_SIZE + LORAMAC_DEV_ADDR_FIELD_SIZE + \
LORAMAC_DL_SETTINGS_FIELD_SIZE + LORAMAC_RX_DELAY_FIELD_SIZE + \
LORAMAC_MIC_FIELD_SIZE )

JoinAccept frame minimum size

MHDR(1) + AppNonce(3) + NetID(3) + DevAddr(4) + DLSettings(1) + RxDelay(1) + MIC(4)

◆ LORAMAC_JOIN_ACCEPT_FRAME_MAX_SIZE

#define LORAMAC_JOIN_ACCEPT_FRAME_MAX_SIZE
Value:
LORAMAC_NET_ID_FIELD_SIZE + LORAMAC_DEV_ADDR_FIELD_SIZE + \
LORAMAC_DL_SETTINGS_FIELD_SIZE + LORAMAC_RX_DELAY_FIELD_SIZE + \
LORAMAC_CF_LIST_FIELD_SIZE + LORAMAC_MIC_FIELD_SIZE )

JoinAccept frame maximum size

MHDR(1) + AppNonce(3) + NetID(3) + DevAddr(4) + DLSettings(1) + RxDelay(1) + CFList(16) + MIC(4)

◆ JOIN_ACCEPT_MIC_COMPUTATION_OFFSET

#define JOIN_ACCEPT_MIC_COMPUTATION_OFFSET
Value:

MIC computation offset

Remarks
required for 1.1.x support

◆ LORAMAC_FRAME_PAYLOAD_OVERHEAD_SIZE

#define LORAMAC_FRAME_PAYLOAD_OVERHEAD_SIZE
Value:

FRMPayload overhead to be used when setting the Radio.SetMaxPayloadLength

Overhead to be used when setting the Radio.SetMaxPayloadLength in RxWindowSetup function.

MHDR(1) + FHDR(7) + Port(1) + MIC(4)

Maximum PHYPayload = MaxPayloadOfDatarate + LORAMAC_FRAME_PAYLOAD_OVERHEAD_SIZE

◆ LORAMAC_FRAME_PAYLOAD_MIN_SIZE

#define LORAMAC_FRAME_PAYLOAD_MIN_SIZE
Value:

FRMPayload minimum size

MHDR(1) + FHDR(7) + MIC(4)

◆ LORAMAC_FRAME_PAYLOAD_MAX_SIZE

#define LORAMAC_FRAME_PAYLOAD_MAX_SIZE
Value:

FRMPayload maximum possible size

MHDR(1) + FHDR(7) + Port(1) + MACPayload(242) + MIC(4)

LORAMAC_FHDR_F_CNT_FIELD_SIZE
#define LORAMAC_FHDR_F_CNT_FIELD_SIZE
Definition: LoRaMacHeaderTypes.h:93
LORAMAC_DEV_ADDR_FIELD_SIZE
#define LORAMAC_DEV_ADDR_FIELD_SIZE
Definition: LoRaMacHeaderTypes.h:75
LORAMAC_RX_DELAY_FIELD_SIZE
#define LORAMAC_RX_DELAY_FIELD_SIZE
Definition: LoRaMacHeaderTypes.h:81
LORAMAC_JOIN_EUI_FIELD_SIZE
#define LORAMAC_JOIN_EUI_FIELD_SIZE
Definition: LoRaMacHeaderTypes.h:54
LORAMAC_F_PORT_FIELD_SIZE
#define LORAMAC_F_PORT_FIELD_SIZE
Definition: LoRaMacHeaderTypes.h:99
LORAMAC_MAC_PAYLOAD_FIELD_MAX_SIZE
#define LORAMAC_MAC_PAYLOAD_FIELD_MAX_SIZE
Definition: LoRaMacHeaderTypes.h:102
LORAMAC_JOIN_TYPE_FIELD_SIZE
#define LORAMAC_JOIN_TYPE_FIELD_SIZE
Definition: LoRaMacHeaderTypes.h:51
LORAMAC_DEV_EUI_FIELD_SIZE
#define LORAMAC_DEV_EUI_FIELD_SIZE
Definition: LoRaMacHeaderTypes.h:57
LORAMAC_FHDR_DEV_ADDR_FIELD_SIZE
#define LORAMAC_FHDR_DEV_ADDR_FIELD_SIZE
Definition: LoRaMacHeaderTypes.h:87
LORAMAC_MHDR_FIELD_SIZE
#define LORAMAC_MHDR_FIELD_SIZE
Definition: LoRaMacHeaderTypes.h:48
LORAMAC_MIC_FIELD_SIZE
#define LORAMAC_MIC_FIELD_SIZE
Definition: LoRaMacHeaderTypes.h:105
LORAMAC_JOIN_NONCE_FIELD_SIZE
#define LORAMAC_JOIN_NONCE_FIELD_SIZE
Definition: LoRaMacHeaderTypes.h:63
LORAMAC_DEV_NONCE_FIELD_SIZE
#define LORAMAC_DEV_NONCE_FIELD_SIZE
Definition: LoRaMacHeaderTypes.h:60