| SX126x-Arduino 2.0.1

Functions | Variables
LoRaMacHelper.cpp File Reference
`#include "LoRaMacHelper.h"`
`#include "region/RegionCommon.h"`
`#include "system/utilities.h"`
`#include "mac/LoRaMacTest.h"`

## Functions
void | lmh_setDevEui (uint8_t userDevEui[])
void | lmh_setAppEui (uint8_t *userAppEui)
| Set Application IEEE EUI. More...
void | lmh_setAppKey (uint8_t *userAppKey)
| Set Application Key AES encryption/decryption cipher application key. More...
void | lmh_setNwkSKey (uint8_t *userNwkSKey)
| Set Network Session Key AES encryption/decryption cipher network session key. More...
void | lmh_setAppSKey (uint8_t *userAppSKey)
| Set Application Session Key AES encryption/decryption cipher application session key. More...
void | lmh_setDevAddr (uint32_t userDevAddr)
| Set Device address on the network (big endian) More...
void | lmh_setSingleChannelGateway (uint8_t userSingleChannel, int8_t userDatarate)
| Disable channel hoping for connnection to single channel gateways Check the file CHANNELS.MD to find out which channel corresponds to which frequency in a specific region Check the file Region.h to find out which datarate corresponds to which SF and bandwidth in a specific region. More...
bool | lmh_setSubBandChannels (uint8_t subBand)
| Set custom channel mask. More...
static bool | compliance_test_tx (void)
static void | OnComplianceTestTxNextPacketTimerEvent (void)
| Function executed on TxNextPacket Timeout event. More...
static void | McpsConfirm (McpsConfirm_t *mcpsConfirm)
| MCPS-Confirm event function. More...
static void | McpsIndication (McpsIndication_t *mcpsIndication)
| MCPS-Indication event function. More...
static void | MlmeConfirm (MlmeConfirm_t *mlmeConfirm)
| MLME-Confirm event function. More...
lmh_error_status | lmh_init (lmh_callback_t *callbacks, lmh_param_t lora_param, bool otaa, eDeviceClass nodeClass, LoRaMacRegion_t user_region)
| Lora Initialisation. More...
void | lmh_datarate_set (uint8_t data_rate, uint8_t enable_adr)
| Configure data rate. More...
void | lmh_tx_power_set (uint8_t tx_power)
| Configure tx power. More...
void | lmh_join (void)
| Join a Lora Network in class A. More...
lmh_join_status | lmh_join_status_get (void)
| Check whether the Device is joined to the network. More...
lmh_error_status | lmh_send (lmh_app_data_t *app_data, lmh_confirm is_tx_confirmed)
| Send data. More...
lmh_error_status | lmh_send_blocking (lmh_app_data_t *app_data, lmh_confirm is_tx_confirmed, uint32_t time_out)
| Send data and wait for RX2 window closed or timeout occurs. More...
lmh_error_status | lmh_class_request (DeviceClass_t newClass)
| change Lora Class More...
void | lmh_class_get (DeviceClass_t *currentClass)
| get the current Lora Class More...
uint32_t | lmh_getDevAddr (void)
| Returns the Device address set by the LoRaWan server after OTAA join success. More...
bool | lmh_setAS923Version (uint8_t version)
| Adjust frequency band to AS923-1, AS923-2, AS923-3. More...

## Variables
uint16_t | ChannelsMask [6]
uint16_t | ChannelsDefaultMask [6]
uint16_t | ChannelsMaskRemaining [6]
size_t | ch_mask_size = sizeof(ChannelsMask)
LoRaMacRegion_t | region
bool | _otaa = false
bool | _dutyCycleEnabled = false
bool | lmh_mac_is_busy = false
static uint8_t | DevEui [] = LORAWAN_DEVICE_EUI
static uint8_t | AppEui [] = LORAWAN_APPLICATION_EUI
static uint8_t | AppKey [] = LORAWAN_APPLICATION_KEY
static MlmeReqJoin_t | JoinParameters
static uint8_t | NwkSKey [] = LORAWAN_NWKSKEY
static uint8_t | AppSKey [] = LORAWAN_APPSKEY
static uint32_t | DevAddr = LORAWAN_DEVICE_ADDRESS
bool | singleChannelGateway = false
uint8_t | singleChannelSelected = 0
int8_t | singleChannelDatarate = DR_3
static LoRaMacPrimitives_t | LoRaMacPrimitives
static LoRaMacCallback_t | LoRaMacCallbacks
static MibRequestConfirm_t | mibReq
static lmh_param_t | m_param
static lmh_callback_t * | m_callbacks
static lmh_compliance_test_t | m_compliance_test
static bool | m_adr_enable_init
static TimerEvent_t | ComplianceTestTxNextPacketTimer

## Function Documentation

## ◆ lmh_setDevEui()

void lmh_setDevEui | ( | uint8_t | userDevEui[] | ) |

Examples
  LoRaWanPio\src\main.cpp.

## ◆ lmh_setAppEui()

void lmh_setAppEui | ( | uint8_t * | userAppEui | ) |

Set Application IEEE EUI.

Parameters

  userAppEui | Application IEEE EUI as uint8_t[] *

Examples
  LoRaWanPio\src\main.cpp.

## ◆ lmh_setAppKey()

void lmh_setAppKey | ( | uint8_t * | userAppKey | ) |

Set Application Key AES encryption/decryption cipher application key.

Parameters

  userAppKey | Application Key as uint8_t[] *

Examples
  LoRaWanPio\src\main.cpp.

## ◆ lmh_setNwkSKey()

void lmh_setNwkSKey | ( | uint8_t * | userNwkSKey | ) |

Set Network Session Key AES encryption/decryption cipher network session key.

Parameters

  userNwkSKey | Network Session Key as uint8_t[] *

Examples
  LoRaWanPio\src\main.cpp.

## ◆ lmh_setAppSKey()

void lmh_setAppSKey | ( | uint8_t * | userAppSKey | ) |

Set Application Session Key AES encryption/decryption cipher application session key.

Parameters

  userAppSKey | Application Session Key as uint8_t[] *

Examples
  LoRaWanPio\src\main.cpp.

## ◆ lmh_setDevAddr()

void lmh_setDevAddr | ( | uint32_t | userDevAddr | ) |

Set Device address on the network (big endian)

Parameters

  userDevAddr | Device address as uint8_t[] *

Examples
  LoRaWanPio\src\main.cpp.

## ◆ lmh_setSingleChannelGateway()

void lmh_setSingleChannelGateway | ( | uint8_t | userSingleChannel,
|  | int8_t | userDatarate
| ) |  |

Disable channel hoping for connnection to single channel gateways Check the file CHANNELS.MD to find out which channel corresponds to which frequency in a specific region Check the file Region.h to find out which datarate corresponds to which SF and bandwidth in a specific region.

Parameters

  userSingleChannel | Channel to be used
  userDatarate | Datarate to be used

## ◆ lmh_setSubBandChannels()

bool lmh_setSubBandChannels | ( | uint8_t | subBand | ) |

Set custom channel mask.

Parameters

  subBand | Sub channel number 1 to 8

Examples
  LoRaWanPio\src\main.cpp.

## ◆ compliance_test_tx()

static bool compliance_test_tx | ( | void |  | ) |
| static

## ◆ OnComplianceTestTxNextPacketTimerEvent()

static void OnComplianceTestTxNextPacketTimerEvent | ( | void |  | ) |
| static

Function executed on TxNextPacket Timeout event.

## ◆ McpsConfirm()

static void McpsConfirm | ( | McpsConfirm_t * | mcpsConfirm | ) |
| static

MCPS-Confirm event function.

Parameters

  mcpsConfirm | Pointer to the confirm structure, containing confirm attributes.

## ◆ McpsIndication()

static void McpsIndication | ( | McpsIndication_t * | mcpsIndication | ) |
| static

MCPS-Indication event function.

Parameters

  mcpsIndication | Pointer to the indication structure, containing indication attributes.

## ◆ MlmeConfirm()

static void MlmeConfirm | ( | MlmeConfirm_t * | mlmeConfirm | ) |
| static

MLME-Confirm event function.

Parameters

  mlmeConfirm | Pointer to the confirm structure, containing confirm attributes.

## ◆ lmh_init()

lmh_error_status lmh_init | ( | lmh_callback_t * | callbacks,
|  | lmh_param_t | lora_param,
|  | bool | otaa,
|  | eDeviceClass | nodeClass = `CLASS_A`,
|  | LoRaMacRegion_t | region = `LORAMAC_REGION_EU868`
| ) |  |

Lora Initialisation.

Parameters

  callbacks | Pointer to structure containing the callback functions
  lora_param | Pointer to structure containing the parameters
  otaa | Choose OTAA (true) or ABP (false) activation
  nodeClass | Choose node class CLASS_A, CLASS_B or CLASS_C, default to CLASS_A
  region | Choose LoRaWAN region to set correct region parameters, default to EU868

Return values

  error | status

Examples
  LoRaWanPio\src\main.cpp.

## ◆ lmh_datarate_set()

void lmh_datarate_set | ( | uint8_t | data_rate,
|  | uint8_t | enable_adr
| ) |  |

Configure data rate.

Parameters

  data_rate | data rate
  enable_adr | enable adaptative data rate

## ◆ lmh_tx_power_set()

void lmh_tx_power_set | ( | uint8_t | tx_power | ) |

Configure tx power.

Parameters

  tx_power | tx power

## ◆ lmh_join()

void lmh_join | ( | void |  | ) |

Join a Lora Network in class A.

Examples
  LoRaWanPio\src\main.cpp.

## ◆ lmh_join_status_get()

lmh_join_status lmh_join_status_get | ( | void |  | ) |

Check whether the Device is joined to the network.

Return values

  returns | LORAMACHELPER_SET if joined

Examples
  LoRaWanPio\src\main.cpp.

## ◆ lmh_send()

lmh_error_status lmh_send | ( | lmh_app_data_t * | app_data,
|  | lmh_confirm | is_txconfirmed
| ) |  |

Send data.

Parameters

  app_data | Pointer to data structure to be sent
  is_txconfirmed | do we need confirmation?

Return values

  error | status

Examples
  LoRaWanPio\src\main.cpp.

## ◆ lmh_send_blocking()

lmh_error_status lmh_send_blocking | ( | lmh_app_data_t * | app_data,
|  | lmh_confirm | is_tx_confirmed,
|  | uint32_t | time_out
| ) |  |

Send data and wait for RX2 window closed or timeout occurs.

Parameters

  app_data | Pointer to data structure to be sent
  is_txconfirmed | do we need confirmation?
  time_out | time to wait in milliseconds

Return values

  error | status

## ◆ lmh_class_request()

lmh_error_status lmh_class_request | ( | DeviceClass_t | newClass | ) |

change Lora Class

Note
  callback LORA_ConfirmClass informs upper layer that the change has occured
  Only switch from class A to class B/C OR from class B/C to class A is allowed

Attention
  can be called only in LORA_ClassSwitchSlot or LORA_RxData callbacks

Parameters

  newClass | DeviceClass_t NewClass

Return values

  LoraErrorStatus |

Examples
  LoRaWanPio\src\main.cpp.

## ◆ lmh_class_get()

void lmh_class_get | ( | DeviceClass_t * | currentClass | ) |

get the current Lora Class

Parameters

  currentClass | DeviceClass_t NewClass

## ◆ lmh_getDevAddr()

uint32_t lmh_getDevAddr | ( | void |  | ) |

Returns the Device address set by the LoRaWan server after OTAA join success.

Return values

  returns | Device Address

## ◆ lmh_setAS923Version()

bool lmh_setAS923Version | ( | uint8_t | version | ) |

Adjust frequency band to AS923-1, AS923-2, AS923-3.

Parameters

  version | 1 => use default frequencies (AS923-1) 2 => adjust frequencies by substracting 1.8MHz (AS923-2) 3 => adjust frequencies by substracting 6.6MHz (AS923-3) 4 => adjust frequencies by substracting 5.9MHz (AS923-4), only lower 8 channels supported

Return values

  true | if success

## Variable Documentation

## ◆ ChannelsMask

uint16_t ChannelsMask[6]

## ◆ ChannelsDefaultMask

uint16_t ChannelsDefaultMask[6]

## ◆ ChannelsMaskRemaining

uint16_t ChannelsMaskRemaining[6]

## ◆ ch_mask_size

size_t ch_mask_size = sizeof(ChannelsMask)

## ◆ region

LoRaMacRegion_t region

## ◆ _otaa

bool _otaa = false

## ◆ _dutyCycleEnabled

bool _dutyCycleEnabled = false

## ◆ lmh_mac_is_busy

bool lmh_mac_is_busy = false

## ◆ DevEui

uint8_t DevEui[] = LORAWAN_DEVICE_EUI
| static

End-device identifier

## ◆ AppEui

uint8_t AppEui[] = LORAWAN_APPLICATION_EUI
| static

Application identifier

## ◆ AppKey

uint8_t AppKey[] = LORAWAN_APPLICATION_KEY
| static

Application key

## ◆ JoinParameters

MlmeReqJoin_t JoinParameters
| static

## ◆ NwkSKey

uint8_t NwkSKey[] = LORAWAN_NWKSKEY
| static

Network session key

## ◆ AppSKey

uint8_t AppSKey[] = LORAWAN_APPSKEY
| static

Application session key

## ◆ DevAddr

uint32_t DevAddr = LORAWAN_DEVICE_ADDRESS
| static

End-device address

## ◆ singleChannelGateway

bool singleChannelGateway = false

Flag if connection is to a single channel gateway

## ◆ singleChannelSelected

uint8_t singleChannelSelected = 0

Channel to be used to communicate with a single channel gateway

## ◆ singleChannelDatarate

int8_t singleChannelDatarate = DR_3

Datarate to be used to communicate with a single channel gateway

## ◆ LoRaMacPrimitives

LoRaMacPrimitives_t LoRaMacPrimitives
| static

LoRaMAC events variable

## ◆ LoRaMacCallbacks

LoRaMacCallback_t LoRaMacCallbacks
| static

LoRaMAC callback variable

## ◆ mibReq

MibRequestConfirm_t mibReq
| static

LoRaMAC MIB-RequestConfirm variable

## ◆ m_param

lmh_param_t m_param
| static

## ◆ m_callbacks

lmh_callback_t* m_callbacks
| static

## ◆ m_compliance_test

lmh_compliance_test_t m_compliance_test
| static

LoRaWAN compliance tests data

## ◆ m_adr_enable_init

bool m_adr_enable_init
| static

## ◆ ComplianceTestTxNextPacketTimer

TimerEvent_t ComplianceTestTxNextPacketTimer
| static