Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of LoRaWAN-lib by
Diff: LoRaMac.h
- Revision:
- 7:c16969e0f70f
- Parent:
- 4:37c12dbc8dc7
- Child:
- 8:26002607de9c
--- a/LoRaMac.h Wed May 18 11:19:24 2016 +0000 +++ b/LoRaMac.h Tue Jul 05 13:24:54 2016 +0000 @@ -47,7 +47,7 @@ #define __LORAMAC_H__ // Includes board dependent definitions such as channels frequencies -#include "LoRaMac-board.h" +#include "LoRaMac-definitions.h" /*! * Beacon interval in us @@ -149,11 +149,6 @@ */ #define LORA_MAC_PUBLIC_SYNCWORD 0x34 - /*! - * LoRaMac internal state - */ -//uint32_t LoRaMacState; - /*! * LoRaWAN devices classes definition */ @@ -162,19 +157,19 @@ /*! * LoRaWAN device class A * - * LoRaWAN Specification V1.0, chapter 3ff + * LoRaWAN Specification V1.0.1, chapter 3ff */ CLASS_A, /*! * LoRaWAN device class B * - * LoRaWAN Specification V1.0, chapter 8ff + * LoRaWAN Specification V1.0.1, chapter 8ff */ CLASS_B, /*! * LoRaWAN device class C * - * LoRaWAN Specification V1.0, chapter 17ff + * LoRaWAN Specification V1.0.1, chapter 17ff */ CLASS_C, }DeviceClass_t; @@ -274,6 +269,57 @@ }Rx2ChannelParams_t; /*! + * Global MAC layer parameters + */ +typedef struct sLoRaMacParams +{ + /*! + * Channels TX power + */ + int8_t ChannelsTxPower; + /*! + * Channels data rate + */ + int8_t ChannelsDatarate; + /*! + * LoRaMac maximum time a reception window stays open + */ + uint32_t MaxRxWindow; + /*! + * Receive delay 1 + */ + uint32_t ReceiveDelay1; + /*! + * Receive delay 2 + */ + uint32_t ReceiveDelay2; + /*! + * Join accept delay 1 + */ + uint32_t JoinAcceptDelay1; + /*! + * Join accept delay 1 + */ + uint32_t JoinAcceptDelay2; + /*! + * Number of uplink messages repetitions [1:15] (unconfirmed messages only) + */ + uint8_t ChannelsNbRep; + /*! + * Datarate offset between uplink and downlink on first window + */ + uint8_t Rx1DrOffset; + /*! + * LoRaMAC 2nd reception window settings + */ + Rx2ChannelParams_t Rx2Channel; + /*! + * Mask indicating which channels are enabled + */ + uint16_t ChannelsMask[6]; +}LoRaMacParams_t; + +/*! * LoRaMAC multicast channel parameter */ typedef struct sMulticastParams @@ -303,7 +349,7 @@ /*! * LoRaMAC frame types * - * LoRaWAN Specification V1.0, chapter 4.2.1, table 1 + * LoRaWAN Specification V1.0.1, chapter 4.2.1, table 1 */ typedef enum eLoRaMacFrameType { @@ -344,7 +390,7 @@ /*! * LoRaMAC mote MAC commands * - * LoRaWAN Specification V1.0, chapter 5, table 4 + * LoRaWAN Specification V1.0.1, chapter 5, table 4 */ typedef enum eLoRaMacMoteCmd { @@ -381,7 +427,7 @@ /*! * LoRaMAC server MAC commands * - * LoRaWAN Specification V1.0, chapter 5, table 4 + * LoRaWAN Specification V1.0.1 chapter 5, table 4 */ typedef enum eLoRaMacSrvCmd { @@ -441,7 +487,7 @@ /*! * LoRaMAC header field definition (MHDR field) * - * LoRaWAN Specification V1.0, chapter 4.2 + * LoRaWAN Specification V1.0.1, chapter 4.2 */ typedef union uLoRaMacHeader { @@ -472,7 +518,7 @@ /*! * LoRaMAC frame control field definition (FCtrl) * - * LoRaWAN Specification V1.0, chapter 4.3.1 + * LoRaWAN Specification V1.0.1, chapter 4.3.1 */ typedef union uLoRaMacFrameCtrl { @@ -642,7 +688,7 @@ * Frame port field. Must be set if the payload is not empty. Use the * application specific frame port values: [1...223] * - * LoRaWAN Specification V1.0, chapter 4.3.2 + * LoRaWAN Specification V1.0.1, chapter 4.3.2 */ uint8_t fPort; /*! @@ -668,7 +714,7 @@ * Frame port field. Must be set if the payload is not empty. Use the * application specific frame port values: [1...223] * - * LoRaWAN Specification V1.0, chapter 4.3.2 + * LoRaWAN Specification V1.0.1, chapter 4.3.2 */ uint8_t fPort; /*! @@ -686,7 +732,7 @@ /*! * Number of trials to transmit the frame, if the LoRaMAC layer did not * receive an acknowledgment. The MAC performs a datarate adaptation, - * according to the LoRaWAN Specification V1.0, chapter 18.4, according + * according to the LoRaWAN Specification V1.0.1, chapter 19.4, according * to the following table: * * Transmission nb | Data Rate @@ -883,13 +929,13 @@ /*! * Initiates the Over-the-Air activation * - * LoRaWAN Specification V1.0, chapter 6.2 + * LoRaWAN Specification V1.0.1, chapter 6.2 */ MLME_JOIN, /*! * LinkCheckReq - Connectivity validation * - * LoRaWAN Specification V1.0, chapter 5, table 4 + * LoRaWAN Specification V1.0.1, chapter 5, table 4 */ MLME_LINK_CHECK, }Mlme_t; @@ -902,19 +948,19 @@ /*! * Globally unique end-device identifier * - * LoRaWAN Specification V1.0, chapter 6.2.1 + * LoRaWAN Specification V1.0.1, chapter 6.2.1 */ uint8_t *DevEui; /*! * Application identifier * - * LoRaWAN Specification V1.0, chapter 6.1.2 + * LoRaWAN Specification V1.0.1, chapter 6.1.2 */ uint8_t *AppEui; /*! * AES-128 application key * - * LoRaWAN Specification V1.0, chapter 6.2.2 + * LoRaWAN Specification V1.0.1, chapter 6.2.2 */ uint8_t *AppKey; }MlmeReqJoin_t; @@ -1014,19 +1060,19 @@ /*! * LoRaWAN device class * - * LoRaWAN Specification V1.0 + * LoRaWAN Specification V1.0.1 */ MIB_DEVICE_CLASS, /*! * LoRaWAN Network joined attribute * - * LoRaWAN Specification V1.0 + * LoRaWAN Specification V1.0.1 */ MIB_NETWORK_JOINED, /*! * Adaptive data rate * - * LoRaWAN Specification V1.0, chapter 4.3.1.1 + * LoRaWAN Specification V1.0.1, chapter 4.3.1.1 * * [true: ADR enabled, false: ADR disabled] */ @@ -1034,31 +1080,31 @@ /*! * Network identifier * - * LoRaWAN Specification V1.0, chapter 6.2.5 + * LoRaWAN Specification V1.0.1, chapter 6.1.1 */ MIB_NET_ID, /*! * End-device address * - * LoRaWAN Specification V1.0, chapter 6.1.2 + * LoRaWAN Specification V1.0.1, chapter 6.1.1 */ MIB_DEV_ADDR, /*! * Network session key * - * LoRaWAN Specification V1.0, chapter 6.1.3 + * LoRaWAN Specification V1.0.1, chapter 6.1.3 */ MIB_NWK_SKEY, /*! * Application session key * - * LoRaWAN Specification V1.0, chapter 6.1.4 + * LoRaWAN Specification V1.0.1, chapter 6.1.4 */ MIB_APP_SKEY, /*! * Set the network type to public or private * - * LoRaWAN Specification V1.0, chapter 7 + * LoRaWAN Specification V1.0.1, chapter 7 * * [true: public network, false: private network] */ @@ -1066,7 +1112,7 @@ /*! * Support the operation with repeaters * - * LoRaWAN Specification V1.0, chapter 7 + * LoRaWAN Specification V1.0.1, chapter 7 * * [true: repeater support enabled, false: repeater support disabled] */ @@ -1076,61 +1122,61 @@ * pointer which references the first entry of the channel list. The * list is of size LORA_MAX_NB_CHANNELS * - * LoRaWAN Specification V1.0, chapter 7 + * LoRaWAN Specification V1.0.1, chapter 7 */ MIB_CHANNELS, /*! * Set receive window 2 channel * - * LoRaWAN Specification V1.0, chapter 3.3.2 + * LoRaWAN Specification V1.0.1, chapter 3.3.2 */ MIB_RX2_CHANNEL, /*! * LoRaWAN channels mask * - * LoRaWAN Specification V1.0, chapter 5.2 + * LoRaWAN Specification V1.0.1, chapter 7 */ MIB_CHANNELS_MASK, /*! * Set the number of repetitions on a channel * - * LoRaWAN Specification V1.0, chapter 5.2 + * LoRaWAN Specification V1.0.1, chapter 5.2 */ MIB_CHANNELS_NB_REP, /*! * Maximum receive window duration in [us] * - * LoRaWAN Specification V1.0, chapter 3.3.3 + * LoRaWAN Specification V1.0.1, chapter 3.3.3 */ MIB_MAX_RX_WINDOW_DURATION, /*! * Receive delay 1 in [us] * - * LoRaWAN Specification V1.0, chapter 6 + * LoRaWAN Specification V1.0.1, chapter 7 */ MIB_RECEIVE_DELAY_1, /*! * Receive delay 2 in [us] * - * LoRaWAN Specification V1.0, chapter 6 + * LoRaWAN Specification V1.0.1, chapter 7 */ MIB_RECEIVE_DELAY_2, /*! * Join accept delay 1 in [us] * - * LoRaWAN Specification V1.0, chapter 6 + * LoRaWAN Specification V1.0.1, chapter 7 */ MIB_JOIN_ACCEPT_DELAY_1, /*! * Join accept delay 2 in [us] * - * LoRaWAN Specification V1.0, chapter 6 + * LoRaWAN Specification V1.0.1, chapter 7 */ MIB_JOIN_ACCEPT_DELAY_2, /*! * Default Data rate of a channel * - * LoRaWAN Specification V1.0, chapter 7 + * LoRaWAN Specification V1.0.1, chapter 7 * * EU868 - [DR_0, DR_1, DR_2, DR_3, DR_4, DR_5, DR_6, DR_7] * @@ -1140,7 +1186,7 @@ /*! * Data rate of a channel * - * LoRaWAN Specification V1.0, chapter 7 + * LoRaWAN Specification V1.0.1, chapter 7 * * EU868 - [DR_0, DR_1, DR_2, DR_3, DR_4, DR_5, DR_6, DR_7] * @@ -1150,7 +1196,7 @@ /*! * Transmission power of a channel * - * LoRaWAN Specification V1.0, chapter 7 + * LoRaWAN Specification V1.0.1, chapter 7 * * EU868 - [TX_POWER_20_DBM, TX_POWER_14_DBM, TX_POWER_11_DBM, * TX_POWER_08_DBM, TX_POWER_05_DBM, TX_POWER_02_DBM] @@ -1164,13 +1210,13 @@ /*! * LoRaWAN Up-link counter * - * LoRaWAN Specification V1.0, chapter 4.3.1.5 + * LoRaWAN Specification V1.0.1, chapter 4.3.1.5 */ MIB_UPLINK_COUNTER, /*! * LoRaWAN Down-link counter * - * LoRaWAN Specification V1.0, chapter 4.3.1.5 + * LoRaWAN Specification V1.0.1, chapter 4.3.1.5 */ MIB_DOWNLINK_COUNTER, /*!