LoRaMAC  4.4.1
Documentation of the API
Introduction

Architecture

The concept of the API follows the concept of primitives of the IEEE Standard for local and metropolitan area networks — part 15.4: Low-Rate Wireless Personal Area Networks (IEEE802.15.4-2011).

The upcoming figure shows the concept of primitives of the LoRaMAC layer. The concept follows the Request-Confirm and Indication-Response architecture. The LoRaMAC layer offers MCPS (MAC Common Part Sublayer) services, MLME (MAC layer management entity) services and a MIB (MAC information base).

In general, the LoRaMAC layer utilizes MCPS services for data transmissions and data receptions, and MLME services to manage the LoRaWAN network. The MIB is responsible to store important runtime information and holds the configuration of the LoRaMAC layer.

An upper layer (e.g. the main application) is able to perform Requests which the LoRaMAC layer confirms with a Confirm primitive. The LoRaMAC layer notifies an upper layer with the Indication primitive in case of events. The upper layer may respond to an Indication with the Response primitive.

LoRaMacPrimitives.png

Features

Overview

The LoRaMAC layer is implemented according to LoRaWAN Specification v1.0.2 and the LoRaWAN Regional Parameters Specification v1.0.2 revision B.

The LoRaMAC sources are available on GitHub: https://github.com/Lora-net/LoRaMac-node. Please note that a Wiki is also available: https://github.com/Lora-net/LoRaMac-node/wiki. It is strongly recommended to take a look into this Wiki, since it contains important information around the LoRaWAN Stack implementation.

LoRaWAN Classes

  • Class A
  • Class B (experimental) - available only on feature/class_b branch
  • Class C

The project comes with sample applications for every class including the application for the compliance test mode.

LoRaWAN Regions

  • EU868 (EU 863-870MHz ISM Band)
  • US915 (US 902-928MHz ISM Band)
  • CN779 (China 779-787MHz ISM Band)
  • EU433 (EU 433MHz ISM Band)
  • AU915 (Australia 915-928MHz ISM Band)
  • CN470 (CN 470-510MHz Band)
  • AS923 (AS923MHz ISM Band)
  • KR923 (South Korea 920-923MHz ISM Band)
  • IN865 (India 865-867 MHz ISM Band)

Supported Radios

  • SX1272 Radio
  • SX1276 Radio
  • SX126x Radio

Further Information

Please refer also to the following information pages:

Quick-Start Guide

Porting Guide


License

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

— Revised BSD License —
Copyright (c) 2013, SEMTECH S.A.
All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of the Semtech corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SEMTECH S.A. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


Acknowledgements

The mbed (https://mbed.org/) project was used at the beginning as source of inspiration.

This program uses the AES algorithm implementation (http://www.gladman.me.uk/) by Brian Gladman.

This program uses the CMAC algorithm implementation (http://www.cse.chalmers.se/research/group/dcs/masters/contikisec/) by Lander Casado, Philippas Tsigas.