Semtech / LoRaWAN-lib-dev

LoRAWAN-lib is a port of the GitHub LoRaMac-node develop branch LoRaWAN MAC layer implementation.

This library depends on the SX1276Lib or SX1272Lib radio drivers depending on the used mbed component shield.

This library depends also on some cryptographic helper functions as well as helper functions for the timers management. These can be found on the example projects under the system directory.

The example projects are:

  1. LoRaWAN-demo-72
  2. LoRaWAN-demo-76
  3. LoRaWAN-demo-NAMote72

The LoRaWAN specification specifies different ISM bands operating parameters. These are all implemented under the LoRaMac-board.h file.

In order to select which band to use, please change line 24 of board.h file provided on the examples projects as follows:


EU868

board.h

#define USE_BAND_868


US915

board.h

#define USE_BAND_915


US915 - Hybrid

board.h

#define USE_BAND_915_HYBRID


CN780

board.h

#define USE_BAND_780


EU433

board.h

#define USE_BAND_433
Committer:
mluis
Date:
Tue Jul 05 15:12:50 2016 +0000
Revision:
1:4820e04b066c
Parent:
LoRaMac-board.h@0:66f12acb8acb
Child:
2:76f59096e3a7
Synchronized with https://github.com/Lora-net/LoRaMac-node develop branch git revision c09c3101e64d7c7f1ca5061faf470d709122c8d0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mluis 0:66f12acb8acb 1 /*
mluis 0:66f12acb8acb 2 / _____) _ | |
mluis 0:66f12acb8acb 3 ( (____ _____ ____ _| |_ _____ ____| |__
mluis 0:66f12acb8acb 4 \____ \| ___ | (_ _) ___ |/ ___) _ \
mluis 0:66f12acb8acb 5 _____) ) ____| | | || |_| ____( (___| | | |
mluis 0:66f12acb8acb 6 (______/|_____)_|_|_| \__)_____)\____)_| |_|
mluis 0:66f12acb8acb 7 (C)2013 Semtech
mluis 0:66f12acb8acb 8
mluis 1:4820e04b066c 9 Description: LoRa MAC layer global definitions
mluis 0:66f12acb8acb 10
mluis 0:66f12acb8acb 11 License: Revised BSD License, see LICENSE.TXT file include in the project
mluis 0:66f12acb8acb 12
mluis 0:66f12acb8acb 13 Maintainer: Miguel Luis and Gregory Cristian
mluis 0:66f12acb8acb 14 */
mluis 0:66f12acb8acb 15 #ifndef __LORAMAC_BOARD_H__
mluis 0:66f12acb8acb 16 #define __LORAMAC_BOARD_H__
mluis 0:66f12acb8acb 17
mluis 0:66f12acb8acb 18 /*!
mluis 0:66f12acb8acb 19 * Returns individual channel mask
mluis 0:66f12acb8acb 20 *
mluis 0:66f12acb8acb 21 * \param[IN] channelIndex Channel index 1 based
mluis 0:66f12acb8acb 22 * \retval channelMask
mluis 0:66f12acb8acb 23 */
mluis 0:66f12acb8acb 24 #define LC( channelIndex ) ( uint16_t )( 1 << ( channelIndex - 1 ) )
mluis 0:66f12acb8acb 25
mluis 0:66f12acb8acb 26 #if defined( USE_BAND_433 )
mluis 0:66f12acb8acb 27
mluis 0:66f12acb8acb 28 /*!
mluis 0:66f12acb8acb 29 * LoRaMac maximum number of channels
mluis 0:66f12acb8acb 30 */
mluis 0:66f12acb8acb 31 #define LORA_MAX_NB_CHANNELS 16
mluis 0:66f12acb8acb 32
mluis 0:66f12acb8acb 33 /*!
mluis 0:66f12acb8acb 34 * Minimal datarate that can be used by the node
mluis 0:66f12acb8acb 35 */
mluis 0:66f12acb8acb 36 #define LORAMAC_TX_MIN_DATARATE DR_0
mluis 0:66f12acb8acb 37
mluis 0:66f12acb8acb 38 /*!
mluis 0:66f12acb8acb 39 * Maximal datarate that can be used by the node
mluis 0:66f12acb8acb 40 */
mluis 0:66f12acb8acb 41 #define LORAMAC_TX_MAX_DATARATE DR_7
mluis 0:66f12acb8acb 42
mluis 0:66f12acb8acb 43 /*!
mluis 0:66f12acb8acb 44 * Minimal datarate that can be used by the node
mluis 0:66f12acb8acb 45 */
mluis 0:66f12acb8acb 46 #define LORAMAC_RX_MIN_DATARATE DR_0
mluis 0:66f12acb8acb 47
mluis 0:66f12acb8acb 48 /*!
mluis 0:66f12acb8acb 49 * Maximal datarate that can be used by the node
mluis 0:66f12acb8acb 50 */
mluis 0:66f12acb8acb 51 #define LORAMAC_RX_MAX_DATARATE DR_7
mluis 0:66f12acb8acb 52
mluis 0:66f12acb8acb 53 /*!
mluis 0:66f12acb8acb 54 * Default datarate used by the node
mluis 0:66f12acb8acb 55 */
mluis 0:66f12acb8acb 56 #define LORAMAC_DEFAULT_DATARATE DR_0
mluis 0:66f12acb8acb 57
mluis 0:66f12acb8acb 58 /*!
mluis 0:66f12acb8acb 59 * Minimal Rx1 receive datarate offset
mluis 0:66f12acb8acb 60 */
mluis 0:66f12acb8acb 61 #define LORAMAC_MIN_RX1_DR_OFFSET 0
mluis 0:66f12acb8acb 62
mluis 0:66f12acb8acb 63 /*!
mluis 0:66f12acb8acb 64 * Maximal Rx1 receive datarate offset
mluis 0:66f12acb8acb 65 */
mluis 0:66f12acb8acb 66 #define LORAMAC_MAX_RX1_DR_OFFSET 5
mluis 0:66f12acb8acb 67
mluis 0:66f12acb8acb 68 /*!
mluis 0:66f12acb8acb 69 * Minimal Tx output power that can be used by the node
mluis 0:66f12acb8acb 70 */
mluis 0:66f12acb8acb 71 #define LORAMAC_MIN_TX_POWER TX_POWER_M5_DBM
mluis 0:66f12acb8acb 72
mluis 0:66f12acb8acb 73 /*!
mluis 0:66f12acb8acb 74 * Maximal Tx output power that can be used by the node
mluis 0:66f12acb8acb 75 */
mluis 0:66f12acb8acb 76 #define LORAMAC_MAX_TX_POWER TX_POWER_10_DBM
mluis 0:66f12acb8acb 77
mluis 0:66f12acb8acb 78 /*!
mluis 0:66f12acb8acb 79 * Default Tx output power used by the node
mluis 0:66f12acb8acb 80 */
mluis 0:66f12acb8acb 81 #define LORAMAC_DEFAULT_TX_POWER TX_POWER_10_DBM
mluis 0:66f12acb8acb 82
mluis 0:66f12acb8acb 83 /*!
mluis 0:66f12acb8acb 84 * LoRaMac TxPower definition
mluis 0:66f12acb8acb 85 */
mluis 0:66f12acb8acb 86 #define TX_POWER_10_DBM 0
mluis 0:66f12acb8acb 87 #define TX_POWER_07_DBM 1
mluis 0:66f12acb8acb 88 #define TX_POWER_04_DBM 2
mluis 0:66f12acb8acb 89 #define TX_POWER_01_DBM 3
mluis 0:66f12acb8acb 90 #define TX_POWER_M2_DBM 4
mluis 0:66f12acb8acb 91 #define TX_POWER_M5_DBM 5
mluis 0:66f12acb8acb 92
mluis 0:66f12acb8acb 93 /*!
mluis 0:66f12acb8acb 94 * LoRaMac datarates definition
mluis 0:66f12acb8acb 95 */
mluis 0:66f12acb8acb 96 #define DR_0 0 // SF12 - BW125
mluis 0:66f12acb8acb 97 #define DR_1 1 // SF11 - BW125
mluis 0:66f12acb8acb 98 #define DR_2 2 // SF10 - BW125
mluis 0:66f12acb8acb 99 #define DR_3 3 // SF9 - BW125
mluis 0:66f12acb8acb 100 #define DR_4 4 // SF8 - BW125
mluis 0:66f12acb8acb 101 #define DR_5 5 // SF7 - BW125
mluis 0:66f12acb8acb 102 #define DR_6 6 // SF7 - BW250
mluis 0:66f12acb8acb 103 #define DR_7 7 // FSK
mluis 0:66f12acb8acb 104
mluis 0:66f12acb8acb 105 /*!
mluis 0:66f12acb8acb 106 * Second reception window channel definition.
mluis 0:66f12acb8acb 107 */
mluis 0:66f12acb8acb 108 // Channel = { Frequency [Hz], Datarate }
mluis 0:66f12acb8acb 109 #define RX_WND_2_CHANNEL { 434665000, DR_0 }
mluis 0:66f12acb8acb 110
mluis 0:66f12acb8acb 111 /*!
mluis 0:66f12acb8acb 112 * LoRaMac maximum number of bands
mluis 0:66f12acb8acb 113 */
mluis 0:66f12acb8acb 114 #define LORA_MAX_NB_BANDS 1
mluis 0:66f12acb8acb 115
mluis 0:66f12acb8acb 116 // Band = { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff }
mluis 0:66f12acb8acb 117 #define BAND0 { 100, TX_POWER_10_DBM, 0, 0 } // 1.0 %
mluis 0:66f12acb8acb 118
mluis 0:66f12acb8acb 119 /*!
mluis 0:66f12acb8acb 120 * LoRaMac default channels
mluis 0:66f12acb8acb 121 */
mluis 0:66f12acb8acb 122 // Channel = { Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band }
mluis 0:66f12acb8acb 123 #define LC1 { 433175000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 }
mluis 0:66f12acb8acb 124 #define LC2 { 433375000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 }
mluis 0:66f12acb8acb 125 #define LC3 { 433575000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 }
mluis 0:66f12acb8acb 126
mluis 0:66f12acb8acb 127 /*!
mluis 0:66f12acb8acb 128 * LoRaMac duty cycle for the back-off procedure
mluis 0:66f12acb8acb 129 */
mluis 0:66f12acb8acb 130 #define BACKOFF_DC_1_HOUR 100
mluis 0:66f12acb8acb 131 #define BACKOFF_DC_10_HOURS 1000
mluis 0:66f12acb8acb 132 #define BACKOFF_DC_24_HOURS 10000
mluis 0:66f12acb8acb 133
mluis 0:66f12acb8acb 134 #define BACKOFF_RND_OFFSET 600000
mluis 0:66f12acb8acb 135
mluis 0:66f12acb8acb 136 /*!
mluis 0:66f12acb8acb 137 * LoRaMac channels which are allowed for the join procedure
mluis 0:66f12acb8acb 138 */
mluis 0:66f12acb8acb 139 #define JOIN_CHANNELS ( uint16_t )( LC( 1 ) | LC( 2 ) | LC( 3 ) )
mluis 0:66f12acb8acb 140
mluis 0:66f12acb8acb 141 #elif defined( USE_BAND_780 )
mluis 0:66f12acb8acb 142
mluis 0:66f12acb8acb 143 /*!
mluis 0:66f12acb8acb 144 * LoRaMac maximum number of channels
mluis 0:66f12acb8acb 145 */
mluis 0:66f12acb8acb 146 #define LORA_MAX_NB_CHANNELS 16
mluis 0:66f12acb8acb 147
mluis 0:66f12acb8acb 148 /*!
mluis 0:66f12acb8acb 149 * Minimal datarate that can be used by the node
mluis 0:66f12acb8acb 150 */
mluis 0:66f12acb8acb 151 #define LORAMAC_TX_MIN_DATARATE DR_0
mluis 0:66f12acb8acb 152
mluis 0:66f12acb8acb 153 /*!
mluis 0:66f12acb8acb 154 * Maximal datarate that can be used by the node
mluis 0:66f12acb8acb 155 */
mluis 0:66f12acb8acb 156 #define LORAMAC_TX_MAX_DATARATE DR_7
mluis 0:66f12acb8acb 157
mluis 0:66f12acb8acb 158 /*!
mluis 0:66f12acb8acb 159 * Minimal datarate that can be used by the node
mluis 0:66f12acb8acb 160 */
mluis 0:66f12acb8acb 161 #define LORAMAC_RX_MIN_DATARATE DR_0
mluis 0:66f12acb8acb 162
mluis 0:66f12acb8acb 163 /*!
mluis 0:66f12acb8acb 164 * Maximal datarate that can be used by the node
mluis 0:66f12acb8acb 165 */
mluis 0:66f12acb8acb 166 #define LORAMAC_RX_MAX_DATARATE DR_7
mluis 0:66f12acb8acb 167
mluis 0:66f12acb8acb 168 /*!
mluis 0:66f12acb8acb 169 * Default datarate used by the node
mluis 0:66f12acb8acb 170 */
mluis 0:66f12acb8acb 171 #define LORAMAC_DEFAULT_DATARATE DR_0
mluis 0:66f12acb8acb 172
mluis 0:66f12acb8acb 173 /*!
mluis 0:66f12acb8acb 174 * Minimal Rx1 receive datarate offset
mluis 0:66f12acb8acb 175 */
mluis 0:66f12acb8acb 176 #define LORAMAC_MIN_RX1_DR_OFFSET 0
mluis 0:66f12acb8acb 177
mluis 0:66f12acb8acb 178 /*!
mluis 0:66f12acb8acb 179 * Maximal Rx1 receive datarate offset
mluis 0:66f12acb8acb 180 */
mluis 0:66f12acb8acb 181 #define LORAMAC_MAX_RX1_DR_OFFSET 5
mluis 0:66f12acb8acb 182
mluis 0:66f12acb8acb 183 /*!
mluis 0:66f12acb8acb 184 * Minimal Tx output power that can be used by the node
mluis 0:66f12acb8acb 185 */
mluis 0:66f12acb8acb 186 #define LORAMAC_MIN_TX_POWER TX_POWER_M5_DBM
mluis 0:66f12acb8acb 187
mluis 0:66f12acb8acb 188 /*!
mluis 0:66f12acb8acb 189 * Maximal Tx output power that can be used by the node
mluis 0:66f12acb8acb 190 */
mluis 0:66f12acb8acb 191 #define LORAMAC_MAX_TX_POWER TX_POWER_10_DBM
mluis 0:66f12acb8acb 192
mluis 0:66f12acb8acb 193 /*!
mluis 0:66f12acb8acb 194 * Default Tx output power used by the node
mluis 0:66f12acb8acb 195 */
mluis 0:66f12acb8acb 196 #define LORAMAC_DEFAULT_TX_POWER TX_POWER_10_DBM
mluis 0:66f12acb8acb 197
mluis 0:66f12acb8acb 198 /*!
mluis 0:66f12acb8acb 199 * LoRaMac TxPower definition
mluis 0:66f12acb8acb 200 */
mluis 0:66f12acb8acb 201 #define TX_POWER_10_DBM 0
mluis 0:66f12acb8acb 202 #define TX_POWER_07_DBM 1
mluis 0:66f12acb8acb 203 #define TX_POWER_04_DBM 2
mluis 0:66f12acb8acb 204 #define TX_POWER_01_DBM 3
mluis 0:66f12acb8acb 205 #define TX_POWER_M2_DBM 4
mluis 0:66f12acb8acb 206 #define TX_POWER_M5_DBM 5
mluis 0:66f12acb8acb 207
mluis 0:66f12acb8acb 208 /*!
mluis 0:66f12acb8acb 209 * LoRaMac datarates definition
mluis 0:66f12acb8acb 210 */
mluis 0:66f12acb8acb 211 #define DR_0 0 // SF12 - BW125
mluis 0:66f12acb8acb 212 #define DR_1 1 // SF11 - BW125
mluis 0:66f12acb8acb 213 #define DR_2 2 // SF10 - BW125
mluis 0:66f12acb8acb 214 #define DR_3 3 // SF9 - BW125
mluis 0:66f12acb8acb 215 #define DR_4 4 // SF8 - BW125
mluis 0:66f12acb8acb 216 #define DR_5 5 // SF7 - BW125
mluis 0:66f12acb8acb 217 #define DR_6 6 // SF7 - BW250
mluis 0:66f12acb8acb 218 #define DR_7 7 // FSK
mluis 0:66f12acb8acb 219
mluis 0:66f12acb8acb 220 /*!
mluis 0:66f12acb8acb 221 * Second reception window channel definition.
mluis 0:66f12acb8acb 222 */
mluis 0:66f12acb8acb 223 // Channel = { Frequency [Hz], Datarate }
mluis 0:66f12acb8acb 224 #define RX_WND_2_CHANNEL { 786000000, DR_0 }
mluis 0:66f12acb8acb 225
mluis 0:66f12acb8acb 226 /*!
mluis 0:66f12acb8acb 227 * LoRaMac maximum number of bands
mluis 0:66f12acb8acb 228 */
mluis 0:66f12acb8acb 229 #define LORA_MAX_NB_BANDS 1
mluis 0:66f12acb8acb 230
mluis 0:66f12acb8acb 231 // Band = { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff }
mluis 0:66f12acb8acb 232 #define BAND0 { 100, TX_POWER_10_DBM, 0, 0 } // 1.0 %
mluis 0:66f12acb8acb 233
mluis 0:66f12acb8acb 234 /*!
mluis 0:66f12acb8acb 235 * LoRaMac default channels
mluis 0:66f12acb8acb 236 */
mluis 0:66f12acb8acb 237 // Channel = { Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band }
mluis 0:66f12acb8acb 238 #define LC1 { 779500000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 }
mluis 0:66f12acb8acb 239 #define LC2 { 779700000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 }
mluis 0:66f12acb8acb 240 #define LC3 { 779900000, { ( ( DR_5 << 4 ) | DR_0 ) }, 0 }
mluis 0:66f12acb8acb 241
mluis 0:66f12acb8acb 242 /*!
mluis 0:66f12acb8acb 243 * LoRaMac duty cycle for the back-off procedure
mluis 0:66f12acb8acb 244 */
mluis 0:66f12acb8acb 245 #define BACKOFF_DC_1_HOUR 100
mluis 0:66f12acb8acb 246 #define BACKOFF_DC_10_HOURS 1000
mluis 0:66f12acb8acb 247 #define BACKOFF_DC_24_HOURS 10000
mluis 0:66f12acb8acb 248
mluis 0:66f12acb8acb 249 #define BACKOFF_RND_OFFSET 600000
mluis 0:66f12acb8acb 250
mluis 0:66f12acb8acb 251 /*!
mluis 0:66f12acb8acb 252 * LoRaMac channels which are allowed for the join procedure
mluis 0:66f12acb8acb 253 */
mluis 0:66f12acb8acb 254 #define JOIN_CHANNELS ( uint16_t )( LC( 1 ) | LC( 2 ) | LC( 3 ) )
mluis 0:66f12acb8acb 255
mluis 0:66f12acb8acb 256 #elif defined( USE_BAND_868 )
mluis 0:66f12acb8acb 257
mluis 0:66f12acb8acb 258 /*!
mluis 0:66f12acb8acb 259 * LoRaMac maximum number of channels
mluis 0:66f12acb8acb 260 */
mluis 0:66f12acb8acb 261 #define LORA_MAX_NB_CHANNELS 16
mluis 0:66f12acb8acb 262
mluis 0:66f12acb8acb 263 /*!
mluis 0:66f12acb8acb 264 * Minimal datarate that can be used by the node
mluis 0:66f12acb8acb 265 */
mluis 0:66f12acb8acb 266 #define LORAMAC_TX_MIN_DATARATE DR_0
mluis 0:66f12acb8acb 267
mluis 0:66f12acb8acb 268 /*!
mluis 0:66f12acb8acb 269 * Maximal datarate that can be used by the node
mluis 0:66f12acb8acb 270 */
mluis 0:66f12acb8acb 271 #define LORAMAC_TX_MAX_DATARATE DR_7
mluis 0:66f12acb8acb 272
mluis 0:66f12acb8acb 273 /*!
mluis 0:66f12acb8acb 274 * Minimal datarate that can be used by the node
mluis 0:66f12acb8acb 275 */
mluis 0:66f12acb8acb 276 #define LORAMAC_RX_MIN_DATARATE DR_0
mluis 0:66f12acb8acb 277
mluis 0:66f12acb8acb 278 /*!
mluis 0:66f12acb8acb 279 * Maximal datarate that can be used by the node
mluis 0:66f12acb8acb 280 */
mluis 0:66f12acb8acb 281 #define LORAMAC_RX_MAX_DATARATE DR_7
mluis 0:66f12acb8acb 282
mluis 0:66f12acb8acb 283 /*!
mluis 0:66f12acb8acb 284 * Default datarate used by the node
mluis 0:66f12acb8acb 285 */
mluis 0:66f12acb8acb 286 #define LORAMAC_DEFAULT_DATARATE DR_0
mluis 0:66f12acb8acb 287
mluis 0:66f12acb8acb 288 /*!
mluis 0:66f12acb8acb 289 * Minimal Rx1 receive datarate offset
mluis 0:66f12acb8acb 290 */
mluis 0:66f12acb8acb 291 #define LORAMAC_MIN_RX1_DR_OFFSET 0
mluis 0:66f12acb8acb 292
mluis 0:66f12acb8acb 293 /*!
mluis 0:66f12acb8acb 294 * Maximal Rx1 receive datarate offset
mluis 0:66f12acb8acb 295 */
mluis 0:66f12acb8acb 296 #define LORAMAC_MAX_RX1_DR_OFFSET 5
mluis 0:66f12acb8acb 297
mluis 0:66f12acb8acb 298 /*!
mluis 0:66f12acb8acb 299 * Minimal Tx output power that can be used by the node
mluis 0:66f12acb8acb 300 */
mluis 0:66f12acb8acb 301 #define LORAMAC_MIN_TX_POWER TX_POWER_02_DBM
mluis 0:66f12acb8acb 302
mluis 0:66f12acb8acb 303 /*!
mluis 0:66f12acb8acb 304 * Maximal Tx output power that can be used by the node
mluis 0:66f12acb8acb 305 */
mluis 0:66f12acb8acb 306 #define LORAMAC_MAX_TX_POWER TX_POWER_20_DBM
mluis 0:66f12acb8acb 307
mluis 0:66f12acb8acb 308 /*!
mluis 0:66f12acb8acb 309 * Default Tx output power used by the node
mluis 0:66f12acb8acb 310 */
mluis 0:66f12acb8acb 311 #define LORAMAC_DEFAULT_TX_POWER TX_POWER_14_DBM
mluis 0:66f12acb8acb 312
mluis 0:66f12acb8acb 313 /*!
mluis 0:66f12acb8acb 314 * LoRaMac TxPower definition
mluis 0:66f12acb8acb 315 */
mluis 0:66f12acb8acb 316 #define TX_POWER_20_DBM 0
mluis 0:66f12acb8acb 317 #define TX_POWER_14_DBM 1
mluis 0:66f12acb8acb 318 #define TX_POWER_11_DBM 2
mluis 0:66f12acb8acb 319 #define TX_POWER_08_DBM 3
mluis 0:66f12acb8acb 320 #define TX_POWER_05_DBM 4
mluis 0:66f12acb8acb 321 #define TX_POWER_02_DBM 5
mluis 0:66f12acb8acb 322
mluis 0:66f12acb8acb 323 /*!
mluis 0:66f12acb8acb 324 * LoRaMac datarates definition
mluis 0:66f12acb8acb 325 */
mluis 0:66f12acb8acb 326 #define DR_0 0 // SF12 - BW125
mluis 0:66f12acb8acb 327 #define DR_1 1 // SF11 - BW125
mluis 0:66f12acb8acb 328 #define DR_2 2 // SF10 - BW125
mluis 0:66f12acb8acb 329 #define DR_3 3 // SF9 - BW125
mluis 0:66f12acb8acb 330 #define DR_4 4 // SF8 - BW125
mluis 0:66f12acb8acb 331 #define DR_5 5 // SF7 - BW125
mluis 0:66f12acb8acb 332 #define DR_6 6 // SF7 - BW250
mluis 0:66f12acb8acb 333 #define DR_7 7 // FSK
mluis 0:66f12acb8acb 334
mluis 0:66f12acb8acb 335 /*!
mluis 0:66f12acb8acb 336 * Second reception window channel definition.
mluis 0:66f12acb8acb 337 */
mluis 0:66f12acb8acb 338 // Channel = { Frequency [Hz], Datarate }
mluis 0:66f12acb8acb 339 #define RX_WND_2_CHANNEL { 869525000, DR_0 }
mluis 0:66f12acb8acb 340
mluis 0:66f12acb8acb 341 /*!
mluis 0:66f12acb8acb 342 * LoRaMac maximum number of bands
mluis 0:66f12acb8acb 343 */
mluis 0:66f12acb8acb 344 #define LORA_MAX_NB_BANDS 5
mluis 0:66f12acb8acb 345
mluis 0:66f12acb8acb 346 /*!
mluis 0:66f12acb8acb 347 * LoRaMac EU868 default bands
mluis 0:66f12acb8acb 348 */
mluis 0:66f12acb8acb 349 typedef enum
mluis 0:66f12acb8acb 350 {
mluis 0:66f12acb8acb 351 BAND_G1_0,
mluis 0:66f12acb8acb 352 BAND_G1_1,
mluis 0:66f12acb8acb 353 BAND_G1_2,
mluis 0:66f12acb8acb 354 BAND_G1_3,
mluis 0:66f12acb8acb 355 BAND_G1_4,
mluis 0:66f12acb8acb 356 }BandId_t;
mluis 0:66f12acb8acb 357
mluis 0:66f12acb8acb 358 // Band = { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff }
mluis 0:66f12acb8acb 359 #define BAND0 { 100 , TX_POWER_14_DBM, 0, 0 } // 1.0 %
mluis 0:66f12acb8acb 360 #define BAND1 { 100 , TX_POWER_14_DBM, 0, 0 } // 1.0 %
mluis 0:66f12acb8acb 361 #define BAND2 { 1000, TX_POWER_14_DBM, 0, 0 } // 0.1 %
mluis 0:66f12acb8acb 362 #define BAND3 { 10 , TX_POWER_14_DBM, 0, 0 } // 10.0 %
mluis 0:66f12acb8acb 363 #define BAND4 { 100 , TX_POWER_14_DBM, 0, 0 } // 1.0 %
mluis 0:66f12acb8acb 364
mluis 0:66f12acb8acb 365 /*!
mluis 0:66f12acb8acb 366 * LoRaMac default channels
mluis 0:66f12acb8acb 367 */
mluis 0:66f12acb8acb 368 // Channel = { Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band }
mluis 0:66f12acb8acb 369 #define LC1 { 868100000, { ( ( DR_5 << 4 ) | DR_0 ) }, 1 }
mluis 0:66f12acb8acb 370 #define LC2 { 868300000, { ( ( DR_5 << 4 ) | DR_0 ) }, 1 }
mluis 0:66f12acb8acb 371 #define LC3 { 868500000, { ( ( DR_5 << 4 ) | DR_0 ) }, 1 }
mluis 0:66f12acb8acb 372
mluis 0:66f12acb8acb 373 /*!
mluis 0:66f12acb8acb 374 * LoRaMac duty cycle for the back-off procedure
mluis 0:66f12acb8acb 375 */
mluis 0:66f12acb8acb 376 #define BACKOFF_DC_1_HOUR 100
mluis 0:66f12acb8acb 377 #define BACKOFF_DC_10_HOURS 1000
mluis 0:66f12acb8acb 378 #define BACKOFF_DC_24_HOURS 10000
mluis 0:66f12acb8acb 379
mluis 0:66f12acb8acb 380 #define BACKOFF_RND_OFFSET 600000
mluis 0:66f12acb8acb 381
mluis 0:66f12acb8acb 382 /*!
mluis 0:66f12acb8acb 383 * LoRaMac channels which are allowed for the join procedure
mluis 0:66f12acb8acb 384 */
mluis 0:66f12acb8acb 385 #define JOIN_CHANNELS ( uint16_t )( LC( 1 ) | LC( 2 ) | LC( 3 ) )
mluis 0:66f12acb8acb 386
mluis 0:66f12acb8acb 387 #elif defined( USE_BAND_915 ) || defined( USE_BAND_915_HYBRID )
mluis 0:66f12acb8acb 388
mluis 0:66f12acb8acb 389 /*!
mluis 0:66f12acb8acb 390 * LoRaMac maximum number of channels
mluis 0:66f12acb8acb 391 */
mluis 0:66f12acb8acb 392 #define LORA_MAX_NB_CHANNELS 72
mluis 0:66f12acb8acb 393
mluis 0:66f12acb8acb 394 /*!
mluis 0:66f12acb8acb 395 * Minimal datarate that can be used by the node
mluis 0:66f12acb8acb 396 */
mluis 0:66f12acb8acb 397 #define LORAMAC_TX_MIN_DATARATE DR_0
mluis 0:66f12acb8acb 398
mluis 0:66f12acb8acb 399 /*!
mluis 0:66f12acb8acb 400 * Maximal datarate that can be used by the node
mluis 0:66f12acb8acb 401 */
mluis 0:66f12acb8acb 402 #define LORAMAC_TX_MAX_DATARATE DR_4
mluis 0:66f12acb8acb 403
mluis 0:66f12acb8acb 404 /*!
mluis 0:66f12acb8acb 405 * Minimal datarate that can be used by the node
mluis 0:66f12acb8acb 406 */
mluis 0:66f12acb8acb 407 #define LORAMAC_RX_MIN_DATARATE DR_8
mluis 0:66f12acb8acb 408
mluis 0:66f12acb8acb 409 /*!
mluis 0:66f12acb8acb 410 * Maximal datarate that can be used by the node
mluis 0:66f12acb8acb 411 */
mluis 0:66f12acb8acb 412 #define LORAMAC_RX_MAX_DATARATE DR_13
mluis 0:66f12acb8acb 413
mluis 0:66f12acb8acb 414 /*!
mluis 0:66f12acb8acb 415 * Default datarate used by the node
mluis 0:66f12acb8acb 416 */
mluis 0:66f12acb8acb 417 #define LORAMAC_DEFAULT_DATARATE DR_0
mluis 0:66f12acb8acb 418
mluis 0:66f12acb8acb 419 /*!
mluis 0:66f12acb8acb 420 * Minimal Rx1 receive datarate offset
mluis 0:66f12acb8acb 421 */
mluis 0:66f12acb8acb 422 #define LORAMAC_MIN_RX1_DR_OFFSET 0
mluis 0:66f12acb8acb 423
mluis 0:66f12acb8acb 424 /*!
mluis 0:66f12acb8acb 425 * Maximal Rx1 receive datarate offset
mluis 0:66f12acb8acb 426 */
mluis 0:66f12acb8acb 427 #define LORAMAC_MAX_RX1_DR_OFFSET 3
mluis 0:66f12acb8acb 428
mluis 0:66f12acb8acb 429 /*!
mluis 0:66f12acb8acb 430 * Minimal Tx output power that can be used by the node
mluis 0:66f12acb8acb 431 */
mluis 0:66f12acb8acb 432 #define LORAMAC_MIN_TX_POWER TX_POWER_10_DBM
mluis 0:66f12acb8acb 433
mluis 0:66f12acb8acb 434 /*!
mluis 0:66f12acb8acb 435 * Maximal Tx output power that can be used by the node
mluis 0:66f12acb8acb 436 */
mluis 0:66f12acb8acb 437 #define LORAMAC_MAX_TX_POWER TX_POWER_30_DBM
mluis 0:66f12acb8acb 438
mluis 0:66f12acb8acb 439 /*!
mluis 0:66f12acb8acb 440 * Default Tx output power used by the node
mluis 0:66f12acb8acb 441 */
mluis 0:66f12acb8acb 442 #define LORAMAC_DEFAULT_TX_POWER TX_POWER_20_DBM
mluis 0:66f12acb8acb 443
mluis 0:66f12acb8acb 444 /*!
mluis 0:66f12acb8acb 445 * LoRaMac TxPower definition
mluis 0:66f12acb8acb 446 */
mluis 0:66f12acb8acb 447 #define TX_POWER_30_DBM 0
mluis 0:66f12acb8acb 448 #define TX_POWER_28_DBM 1
mluis 0:66f12acb8acb 449 #define TX_POWER_26_DBM 2
mluis 0:66f12acb8acb 450 #define TX_POWER_24_DBM 3
mluis 0:66f12acb8acb 451 #define TX_POWER_22_DBM 4
mluis 0:66f12acb8acb 452 #define TX_POWER_20_DBM 5
mluis 0:66f12acb8acb 453 #define TX_POWER_18_DBM 6
mluis 0:66f12acb8acb 454 #define TX_POWER_16_DBM 7
mluis 0:66f12acb8acb 455 #define TX_POWER_14_DBM 8
mluis 0:66f12acb8acb 456 #define TX_POWER_12_DBM 9
mluis 0:66f12acb8acb 457 #define TX_POWER_10_DBM 10
mluis 0:66f12acb8acb 458
mluis 0:66f12acb8acb 459 /*!
mluis 0:66f12acb8acb 460 * LoRaMac datarates definition
mluis 0:66f12acb8acb 461 */
mluis 0:66f12acb8acb 462 #define DR_0 0 // SF10 - BW125 |
mluis 0:66f12acb8acb 463 #define DR_1 1 // SF9 - BW125 |
mluis 0:66f12acb8acb 464 #define DR_2 2 // SF8 - BW125 +-> Up link
mluis 0:66f12acb8acb 465 #define DR_3 3 // SF7 - BW125 |
mluis 0:66f12acb8acb 466 #define DR_4 4 // SF8 - BW500 |
mluis 0:66f12acb8acb 467 #define DR_5 5 // RFU
mluis 0:66f12acb8acb 468 #define DR_6 6 // RFU
mluis 0:66f12acb8acb 469 #define DR_7 7 // RFU
mluis 0:66f12acb8acb 470 #define DR_8 8 // SF12 - BW500 |
mluis 0:66f12acb8acb 471 #define DR_9 9 // SF11 - BW500 |
mluis 0:66f12acb8acb 472 #define DR_10 10 // SF10 - BW500 |
mluis 0:66f12acb8acb 473 #define DR_11 11 // SF9 - BW500 |
mluis 0:66f12acb8acb 474 #define DR_12 12 // SF8 - BW500 +-> Down link
mluis 0:66f12acb8acb 475 #define DR_13 13 // SF7 - BW500 |
mluis 0:66f12acb8acb 476 #define DR_14 14 // RFU |
mluis 0:66f12acb8acb 477 #define DR_15 15 // RFU |
mluis 0:66f12acb8acb 478
mluis 0:66f12acb8acb 479 /*!
mluis 0:66f12acb8acb 480 * Second reception window channel definition.
mluis 0:66f12acb8acb 481 */
mluis 0:66f12acb8acb 482 // Channel = { Frequency [Hz], Datarate }
mluis 0:66f12acb8acb 483 #define RX_WND_2_CHANNEL { 923300000, DR_8 }
mluis 0:66f12acb8acb 484
mluis 0:66f12acb8acb 485 /*!
mluis 0:66f12acb8acb 486 * LoRaMac maximum number of bands
mluis 0:66f12acb8acb 487 */
mluis 0:66f12acb8acb 488 #define LORA_MAX_NB_BANDS 1
mluis 0:66f12acb8acb 489
mluis 0:66f12acb8acb 490 // Band = { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff }
mluis 0:66f12acb8acb 491 #define BAND0 { 1, TX_POWER_20_DBM, 0, 0 } // 100.0 %
mluis 0:66f12acb8acb 492
mluis 0:66f12acb8acb 493 #define BACKOFF_RND_OFFSET 600000
mluis 0:66f12acb8acb 494
mluis 0:66f12acb8acb 495 /*!
mluis 0:66f12acb8acb 496 * LoRaMac default channels
mluis 0:66f12acb8acb 497 */
mluis 0:66f12acb8acb 498 // Channel = { Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band }
mluis 0:66f12acb8acb 499 /*
mluis 0:66f12acb8acb 500 * US band channels are initialized using a loop in LoRaMacInit function
mluis 0:66f12acb8acb 501 * \code
mluis 0:66f12acb8acb 502 * // 125 kHz channels
mluis 0:66f12acb8acb 503 * for( uint8_t i = 0; i < LORA_MAX_NB_CHANNELS - 8; i++ )
mluis 0:66f12acb8acb 504 * {
mluis 0:66f12acb8acb 505 * Channels[i].Frequency = 902.3e6 + i * 200e3;
mluis 0:66f12acb8acb 506 * Channels[i].DrRange.Value = ( DR_3 << 4 ) | DR_0;
mluis 0:66f12acb8acb 507 * Channels[i].Band = 0;
mluis 0:66f12acb8acb 508 * }
mluis 0:66f12acb8acb 509 * // 500 kHz channels
mluis 0:66f12acb8acb 510 * for( uint8_t i = LORA_MAX_NB_CHANNELS - 8; i < LORA_MAX_NB_CHANNELS; i++ )
mluis 0:66f12acb8acb 511 * {
mluis 0:66f12acb8acb 512 * Channels[i].Frequency = 903.0e6 + ( i - ( LORA_MAX_NB_CHANNELS - 8 ) ) * 1.6e6;
mluis 0:66f12acb8acb 513 * Channels[i].DrRange.Value = ( DR_4 << 4 ) | DR_4;
mluis 0:66f12acb8acb 514 * Channels[i].Band = 0;
mluis 0:66f12acb8acb 515 * }
mluis 0:66f12acb8acb 516 * \endcode
mluis 0:66f12acb8acb 517 */
mluis 0:66f12acb8acb 518 #else
mluis 0:66f12acb8acb 519 #error "Please define a frequency band in the compiler options."
mluis 0:66f12acb8acb 520 #endif
mluis 0:66f12acb8acb 521
mluis 0:66f12acb8acb 522 #endif // __LORAMAC_BOARD_H__