LoRaWAN MAC layer implementation

Dependents:   LoRaWAN-demo-72_tjm LoRaWAN-demo-72_jlc LoRaWAN-demo-elmo frdm_LoRa_Connect_Woodstream_Demo_tjm ... more

Embed: (wiki syntax)

« Back to documentation index

LoRaMac.h File Reference

LoRaMac.h File Reference

LoRa MAC layer implementation. More...

Go to the source code of this file.

Data Structures

union  uDrRange
struct  uDrRange::sFields
struct  sBand
struct  sChannelParams
struct  sRx2ChannelParams
struct  sMulticastParams
union  uLoRaMacHeader
struct  uLoRaMacHeader::sHdrBits
union  uLoRaMacFrameCtrl
struct  uLoRaMacFrameCtrl::sCtrlBits
union  eLoRaMacFlags_t
struct  eLoRaMacFlags_t::sMacFlagBits
struct  sMcpsReqUnconfirmed
struct  sMcpsReqConfirmed
struct  sMcpsReqProprietary
struct  sMcpsReq
union  sMcpsReq::uMcpsParam
struct  sMcpsConfirm
struct  sMcpsIndication
struct  sMlmeReqJoin
struct  sMlmeReq
union  sMlmeReq::uMlmeParam
struct  sMlmeConfirm
union  uMibParam
struct  eMibRequestConfirm
struct  sLoRaMacTxInfo
struct  sLoRaMacPrimitives

Typedefs

typedef enum eDeviceClass DeviceClass_t
typedef union uDrRange DrRange_t
typedef struct sBand Band_t
typedef struct sChannelParams ChannelParams_t
typedef struct sRx2ChannelParams Rx2ChannelParams_t
typedef struct sMulticastParams MulticastParams_t
typedef enum eLoRaMacFrameType LoRaMacFrameType_t
typedef enum eLoRaMacMoteCmd LoRaMacMoteCmd_t
typedef enum eLoRaMacSrvCmd LoRaMacSrvCmd_t
typedef enum eLoRaMacBatteryLevel LoRaMacBatteryLevel_t
typedef union uLoRaMacHeader LoRaMacHeader_t
typedef union uLoRaMacFrameCtrl LoRaMacFrameCtrl_t
typedef enum
eLoRaMacEventInfoStatus 
LoRaMacEventInfoStatus_t
typedef union eLoRaMacFlags_t LoRaMacFlags_t
typedef enum eMcps Mcps_t
 LoRaMAC data services.
typedef struct sMcpsReqUnconfirmed McpsReqUnconfirmed_t
typedef struct sMcpsReqConfirmed McpsReqConfirmed_t
typedef struct sMcpsReqProprietary McpsReqProprietary_t
typedef struct sMcpsReq McpsReq_t
typedef struct sMcpsConfirm McpsConfirm_t
typedef struct sMcpsIndication McpsIndication_t
typedef enum eMlme Mlme_t
 LoRaMAC management services.
typedef struct sMlmeReqJoin MlmeReqJoin_t
typedef struct sMlmeReq MlmeReq_t
typedef struct sMlmeConfirm MlmeConfirm_t
typedef enum eMib Mib_t
typedef union uMibParam MibParam_t
typedef struct eMibRequestConfirm MibRequestConfirm_t
typedef struct sLoRaMacTxInfo LoRaMacTxInfo_t
typedef enum eLoRaMacStatus LoRaMacStatus_t
typedef struct sLoRaMacPrimitives LoRaMacPrimitives_t

Enumerations

enum  eDeviceClass { CLASS_A, CLASS_B, CLASS_C }
enum  eLoRaMacFrameType {
  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_RFU = 0x06, FRAME_TYPE_PROPRIETARY = 0x07
}
enum  eLoRaMacMoteCmd {
  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
}
enum  eLoRaMacSrvCmd {
  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
}
enum  eLoRaMacBatteryLevel { BAT_LEVEL_EXT_SRC = 0x00, BAT_LEVEL_EMPTY = 0x01, BAT_LEVEL_FULL = 0xFE, BAT_LEVEL_NO_MEASURE = 0xFF }
enum  eLoRaMacEventInfoStatus {
  LORAMAC_EVENT_INFO_STATUS_OK = 0, LORAMAC_EVENT_INFO_STATUS_ERROR, LORAMAC_EVENT_INFO_STATUS_TX_TIMEOUT, LORAMAC_EVENT_INFO_STATUS_RX2_TIMEOUT,
  LORAMAC_EVENT_INFO_STATUS_RX2_ERROR, LORAMAC_EVENT_INFO_STATUS_JOIN_FAIL, LORAMAC_EVENT_INFO_STATUS_DOWNLINK_REPEATED, LORAMAC_EVENT_INFO_STATUS_DOWNLINK_TOO_MANY_FRAMES_LOSS,
  LORAMAC_EVENT_INFO_STATUS_ADDRESS_FAIL, LORAMAC_EVENT_INFO_STATUS_MIC_FAIL
}
enum  eMcps { MCPS_UNCONFIRMED, MCPS_CONFIRMED, MCPS_MULTICAST, MCPS_PROPRIETARY }
 

LoRaMAC data services.

More...
enum  eMlme { MLME_JOIN, MLME_LINK_CHECK }
 

LoRaMAC management services.

More...
enum  eMib {
  MIB_DEVICE_CLASS, MIB_NETWORK_JOINED, MIB_ADR, MIB_NET_ID,
  MIB_DEV_ADDR, MIB_NWK_SKEY, MIB_APP_SKEY, MIB_PUBLIC_NETWORK,
  MIB_REPEATER_SUPPORT, MIB_CHANNELS, MIB_RX2_CHANNEL, MIB_CHANNELS_MASK,
  MIB_CHANNELS_NB_REP, MIB_MAX_RX_WINDOW_DURATION, MIB_RECEIVE_DELAY_1, MIB_RECEIVE_DELAY_2,
  MIB_JOIN_ACCEPT_DELAY_1, MIB_JOIN_ACCEPT_DELAY_2, MIB_CHANNELS_DEFAULT_DATARATE, MIB_CHANNELS_DATARATE,
  MIB_CHANNELS_TX_POWER, MIB_UPLINK_COUNTER, MIB_DOWNLINK_COUNTER, MIB_MULTICAST_CHANNEL
}
enum  eLoRaMacStatus {
  LORAMAC_STATUS_OK, LORAMAC_STATUS_BUSY, LORAMAC_STATUS_SERVICE_UNKNOWN, LORAMAC_STATUS_PARAMETER_INVALID,
  LORAMAC_STATUS_FREQUENCY_INVALID, LORAMAC_STATUS_DATARATE_INVALID, LORAMAC_STATUS_FREQ_AND_DR_INVALID, LORAMAC_STATUS_NO_NETWORK_JOINED,
  LORAMAC_STATUS_LENGTH_ERROR, LORAMAC_STATUS_MAC_CMD_LENGTH_ERROR, LORAMAC_STATUS_DEVICE_OFF
}

Functions

LoRaMacStatus_t LoRaMacInitialization (LoRaMacPrimitives_t *primitives, LoRaMacCallback_t *callbacks)
 LoRaMAC layer initialization.
LoRaMacStatus_t LoRaMacQueryTxPossible (uint8_t size, LoRaMacTxInfo_t *txInfo)
 Queries the LoRaMAC if it is possible to send the next frame with a given payload size. The LoRaMAC takes scheduled MAC commands into account and reports, when the frame can be send or not.
LoRaMacStatus_t LoRaMacChannelAdd (uint8_t id, ChannelParams_t params)
 LoRaMAC channel add service.
LoRaMacStatus_t LoRaMacChannelRemove (uint8_t id)
 LoRaMAC channel remove service.
LoRaMacStatus_t LoRaMacMulticastChannelLink (MulticastParams_t *channelParam)
 LoRaMAC multicast channel link service.
LoRaMacStatus_t LoRaMacMulticastChannelUnlink (MulticastParams_t *channelParam)
 LoRaMAC multicast channel unlink service.
LoRaMacStatus_t LoRaMacMibGetRequestConfirm (MibRequestConfirm_t *mibGet)
 LoRaMAC MIB-Get.
LoRaMacStatus_t LoRaMacMibSetRequestConfirm (MibRequestConfirm_t *mibSet)
 LoRaMAC MIB-Set.
LoRaMacStatus_t LoRaMacMlmeRequest (MlmeReq_t *mlmeRequest)
 LoRaMAC MLME-Request.
LoRaMacStatus_t LoRaMacMcpsRequest (McpsReq_t *mcpsRequest)
 LoRaMAC MCPS-Request.

Detailed Description

LoRa MAC layer implementation.

Revised BSD License, see section LICENSE.

                ______                              _
               / _____)             _              | |
              ( (____  _____ ____ _| |_ _____  ____| |__
               \____ \| ___ |    (_   _) ___ |/ ___)  _ \
               _____) ) ____| | | || |_| ____( (___| | | |
              (______/|_____)_|_|_| \__)_____)\____)_| |_|
              (C)2013 Semtech

               ___ _____ _   ___ _  _____ ___  ___  ___ ___
              / __|_   _/_\ / __| |/ / __/ _ \| _ \/ __| __|
              \__ \ | |/ _ \ (__| ' <| _| (_) |   / (__| _|
              |___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___|
              embedded.connectivity.solutions===============
Author:
Miguel Luis ( Semtech )
Gregory Cristian ( Semtech )
Daniel Jäckle ( STACKFORCE )

Definition in file LoRaMac.h.