Senet / LoRaWAN-lib

Fork of LoRaWAN-lib by canuck lehead

Committer:
Shaun Nelson
Date:
Wed Aug 09 16:20:21 2017 -0400
Branch:
class_b
Revision:
38:182ba91524e4
Child:
41:b0d67ca11bdf
Synchronized with  https://github.com/Senetco/LoRaMac-node/commit/6cb21de99eaa65caad9d911318df8875867a6e60

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Shaun Nelson 38:182ba91524e4 1 /*!
Shaun Nelson 38:182ba91524e4 2 * \file RegionUS915.h
Shaun Nelson 38:182ba91524e4 3 *
Shaun Nelson 38:182ba91524e4 4 * \brief Region definition for US915
Shaun Nelson 38:182ba91524e4 5 *
Shaun Nelson 38:182ba91524e4 6 * \copyright Revised BSD License, see section \ref LICENSE.
Shaun Nelson 38:182ba91524e4 7 *
Shaun Nelson 38:182ba91524e4 8 * \code
Shaun Nelson 38:182ba91524e4 9 * ______ _
Shaun Nelson 38:182ba91524e4 10 * / _____) _ | |
Shaun Nelson 38:182ba91524e4 11 * ( (____ _____ ____ _| |_ _____ ____| |__
Shaun Nelson 38:182ba91524e4 12 * \____ \| ___ | (_ _) ___ |/ ___) _ \
Shaun Nelson 38:182ba91524e4 13 * _____) ) ____| | | || |_| ____( (___| | | |
Shaun Nelson 38:182ba91524e4 14 * (______/|_____)_|_|_| \__)_____)\____)_| |_|
Shaun Nelson 38:182ba91524e4 15 * (C)2013 Semtech
Shaun Nelson 38:182ba91524e4 16 *
Shaun Nelson 38:182ba91524e4 17 * ___ _____ _ ___ _ _____ ___ ___ ___ ___
Shaun Nelson 38:182ba91524e4 18 * / __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __|
Shaun Nelson 38:182ba91524e4 19 * \__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _|
Shaun Nelson 38:182ba91524e4 20 * |___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___|
Shaun Nelson 38:182ba91524e4 21 * embedded.connectivity.solutions===============
Shaun Nelson 38:182ba91524e4 22 *
Shaun Nelson 38:182ba91524e4 23 * \endcode
Shaun Nelson 38:182ba91524e4 24 *
Shaun Nelson 38:182ba91524e4 25 * \author Miguel Luis ( Semtech )
Shaun Nelson 38:182ba91524e4 26 *
Shaun Nelson 38:182ba91524e4 27 * \author Gregory Cristian ( Semtech )
Shaun Nelson 38:182ba91524e4 28 *
Shaun Nelson 38:182ba91524e4 29 * \author Daniel Jaeckle ( STACKFORCE )
Shaun Nelson 38:182ba91524e4 30 *
Shaun Nelson 38:182ba91524e4 31 * \defgroup REGIONUS915 Region US915
Shaun Nelson 38:182ba91524e4 32 * Implementation according to LoRaWAN Specification v1.0.2.
Shaun Nelson 38:182ba91524e4 33 * \{
Shaun Nelson 38:182ba91524e4 34 */
Shaun Nelson 38:182ba91524e4 35 #ifndef __REGION_US915_H__
Shaun Nelson 38:182ba91524e4 36 #define __REGION_US915_H__
Shaun Nelson 38:182ba91524e4 37
Shaun Nelson 38:182ba91524e4 38 /*!
Shaun Nelson 38:182ba91524e4 39 * LoRaMac maximum number of channels
Shaun Nelson 38:182ba91524e4 40 */
Shaun Nelson 38:182ba91524e4 41 #define US915_MAX_NB_CHANNELS 72
Shaun Nelson 38:182ba91524e4 42
Shaun Nelson 38:182ba91524e4 43 /*!
Shaun Nelson 38:182ba91524e4 44 * Minimal datarate that can be used by the node
Shaun Nelson 38:182ba91524e4 45 */
Shaun Nelson 38:182ba91524e4 46 #define US915_TX_MIN_DATARATE DR_0
Shaun Nelson 38:182ba91524e4 47
Shaun Nelson 38:182ba91524e4 48 /*!
Shaun Nelson 38:182ba91524e4 49 * Maximal datarate that can be used by the node
Shaun Nelson 38:182ba91524e4 50 */
Shaun Nelson 38:182ba91524e4 51 #define US915_TX_MAX_DATARATE DR_4
Shaun Nelson 38:182ba91524e4 52
Shaun Nelson 38:182ba91524e4 53 /*!
Shaun Nelson 38:182ba91524e4 54 * Minimal datarate that can be used by the node
Shaun Nelson 38:182ba91524e4 55 */
Shaun Nelson 38:182ba91524e4 56 #define US915_RX_MIN_DATARATE DR_8
Shaun Nelson 38:182ba91524e4 57
Shaun Nelson 38:182ba91524e4 58 /*!
Shaun Nelson 38:182ba91524e4 59 * Maximal datarate that can be used by the node
Shaun Nelson 38:182ba91524e4 60 */
Shaun Nelson 38:182ba91524e4 61 #define US915_RX_MAX_DATARATE DR_13
Shaun Nelson 38:182ba91524e4 62
Shaun Nelson 38:182ba91524e4 63 /*!
Shaun Nelson 38:182ba91524e4 64 * Default datarate used by the node
Shaun Nelson 38:182ba91524e4 65 */
Shaun Nelson 38:182ba91524e4 66 #define US915_DEFAULT_DATARATE DR_0
Shaun Nelson 38:182ba91524e4 67
Shaun Nelson 38:182ba91524e4 68 /*!
Shaun Nelson 38:182ba91524e4 69 * Minimal Rx1 receive datarate offset
Shaun Nelson 38:182ba91524e4 70 */
Shaun Nelson 38:182ba91524e4 71 #define US915_MIN_RX1_DR_OFFSET 0
Shaun Nelson 38:182ba91524e4 72
Shaun Nelson 38:182ba91524e4 73 /*!
Shaun Nelson 38:182ba91524e4 74 * Maximal Rx1 receive datarate offset
Shaun Nelson 38:182ba91524e4 75 */
Shaun Nelson 38:182ba91524e4 76 #define US915_MAX_RX1_DR_OFFSET 3
Shaun Nelson 38:182ba91524e4 77
Shaun Nelson 38:182ba91524e4 78 /*!
Shaun Nelson 38:182ba91524e4 79 * Default Rx1 receive datarate offset
Shaun Nelson 38:182ba91524e4 80 */
Shaun Nelson 38:182ba91524e4 81 #define US915_DEFAULT_RX1_DR_OFFSET 0
Shaun Nelson 38:182ba91524e4 82
Shaun Nelson 38:182ba91524e4 83 /*!
Shaun Nelson 38:182ba91524e4 84 * Minimal Tx output power that can be used by the node
Shaun Nelson 38:182ba91524e4 85 */
Shaun Nelson 38:182ba91524e4 86 #define US915_MIN_TX_POWER TX_POWER_10
Shaun Nelson 38:182ba91524e4 87
Shaun Nelson 38:182ba91524e4 88 /*!
Shaun Nelson 38:182ba91524e4 89 * Maximal Tx output power that can be used by the node
Shaun Nelson 38:182ba91524e4 90 */
Shaun Nelson 38:182ba91524e4 91 #define US915_MAX_TX_POWER TX_POWER_0
Shaun Nelson 38:182ba91524e4 92
Shaun Nelson 38:182ba91524e4 93 /*!
Shaun Nelson 38:182ba91524e4 94 * Default Tx output power used by the node
Shaun Nelson 38:182ba91524e4 95 */
Shaun Nelson 38:182ba91524e4 96 #define US915_DEFAULT_TX_POWER TX_POWER_0
Shaun Nelson 38:182ba91524e4 97
Shaun Nelson 38:182ba91524e4 98 /*!
Shaun Nelson 38:182ba91524e4 99 * Default Max ERP
Shaun Nelson 38:182ba91524e4 100 */
Shaun Nelson 38:182ba91524e4 101 #define US915_DEFAULT_MAX_ERP 30.0f
Shaun Nelson 38:182ba91524e4 102
Shaun Nelson 38:182ba91524e4 103 /*!
Shaun Nelson 38:182ba91524e4 104 * ADR Ack limit
Shaun Nelson 38:182ba91524e4 105 */
Shaun Nelson 38:182ba91524e4 106 #define US915_ADR_ACK_LIMIT 64
Shaun Nelson 38:182ba91524e4 107
Shaun Nelson 38:182ba91524e4 108 /*!
Shaun Nelson 38:182ba91524e4 109 * ADR Ack delay
Shaun Nelson 38:182ba91524e4 110 */
Shaun Nelson 38:182ba91524e4 111 #define US915_ADR_ACK_DELAY 32
Shaun Nelson 38:182ba91524e4 112
Shaun Nelson 38:182ba91524e4 113 /*!
Shaun Nelson 38:182ba91524e4 114 * Enabled or disabled the duty cycle
Shaun Nelson 38:182ba91524e4 115 */
Shaun Nelson 38:182ba91524e4 116 #define US915_DUTY_CYCLE_ENABLED 0
Shaun Nelson 38:182ba91524e4 117
Shaun Nelson 38:182ba91524e4 118 /*!
Shaun Nelson 38:182ba91524e4 119 * Maximum RX window duration
Shaun Nelson 38:182ba91524e4 120 */
Shaun Nelson 38:182ba91524e4 121 #define US915_MAX_RX_WINDOW 3000
Shaun Nelson 38:182ba91524e4 122
Shaun Nelson 38:182ba91524e4 123 /*!
Shaun Nelson 38:182ba91524e4 124 * Receive delay 1
Shaun Nelson 38:182ba91524e4 125 */
Shaun Nelson 38:182ba91524e4 126 #define US915_RECEIVE_DELAY1 1000
Shaun Nelson 38:182ba91524e4 127
Shaun Nelson 38:182ba91524e4 128 /*!
Shaun Nelson 38:182ba91524e4 129 * Receive delay 2
Shaun Nelson 38:182ba91524e4 130 */
Shaun Nelson 38:182ba91524e4 131 #define US915_RECEIVE_DELAY2 2000
Shaun Nelson 38:182ba91524e4 132
Shaun Nelson 38:182ba91524e4 133 /*!
Shaun Nelson 38:182ba91524e4 134 * Join accept delay 1
Shaun Nelson 38:182ba91524e4 135 */
Shaun Nelson 38:182ba91524e4 136 #define US915_JOIN_ACCEPT_DELAY1 5000
Shaun Nelson 38:182ba91524e4 137
Shaun Nelson 38:182ba91524e4 138 /*!
Shaun Nelson 38:182ba91524e4 139 * Join accept delay 2
Shaun Nelson 38:182ba91524e4 140 */
Shaun Nelson 38:182ba91524e4 141 #define US915_JOIN_ACCEPT_DELAY2 6000
Shaun Nelson 38:182ba91524e4 142
Shaun Nelson 38:182ba91524e4 143 /*!
Shaun Nelson 38:182ba91524e4 144 * Maximum frame counter gap
Shaun Nelson 38:182ba91524e4 145 */
Shaun Nelson 38:182ba91524e4 146 #define US915_MAX_FCNT_GAP 16384
Shaun Nelson 38:182ba91524e4 147
Shaun Nelson 38:182ba91524e4 148 /*!
Shaun Nelson 38:182ba91524e4 149 * Ack timeout
Shaun Nelson 38:182ba91524e4 150 */
Shaun Nelson 38:182ba91524e4 151 #define US915_ACKTIMEOUT 2000
Shaun Nelson 38:182ba91524e4 152
Shaun Nelson 38:182ba91524e4 153 /*!
Shaun Nelson 38:182ba91524e4 154 * Random ack timeout limits
Shaun Nelson 38:182ba91524e4 155 */
Shaun Nelson 38:182ba91524e4 156 #define US915_ACK_TIMEOUT_RND 1000
Shaun Nelson 38:182ba91524e4 157
Shaun Nelson 38:182ba91524e4 158 /*!
Shaun Nelson 38:182ba91524e4 159 * Second reception window channel frequency definition.
Shaun Nelson 38:182ba91524e4 160 */
Shaun Nelson 38:182ba91524e4 161 #define US915_RX_WND_2_FREQ 923300000
Shaun Nelson 38:182ba91524e4 162
Shaun Nelson 38:182ba91524e4 163 /*!
Shaun Nelson 38:182ba91524e4 164 * Second reception window channel datarate definition.
Shaun Nelson 38:182ba91524e4 165 */
Shaun Nelson 38:182ba91524e4 166 #define US915_RX_WND_2_DR DR_8
Shaun Nelson 38:182ba91524e4 167
Shaun Nelson 38:182ba91524e4 168 /*
Shaun Nelson 38:182ba91524e4 169 * CLASS B
Shaun Nelson 38:182ba91524e4 170 */
Shaun Nelson 38:182ba91524e4 171 /*!
Shaun Nelson 38:182ba91524e4 172 * Beacon interval in ms
Shaun Nelson 38:182ba91524e4 173 */
Shaun Nelson 38:182ba91524e4 174 #define US915_BEACON_INTERVAL 128000
Shaun Nelson 38:182ba91524e4 175
Shaun Nelson 38:182ba91524e4 176 /*!
Shaun Nelson 38:182ba91524e4 177 * Beacon reserved time in ms
Shaun Nelson 38:182ba91524e4 178 */
Shaun Nelson 38:182ba91524e4 179 #define US915_BEACON_RESERVED 2120
Shaun Nelson 38:182ba91524e4 180
Shaun Nelson 38:182ba91524e4 181 /*!
Shaun Nelson 38:182ba91524e4 182 * Beacon guard time in ms
Shaun Nelson 38:182ba91524e4 183 */
Shaun Nelson 38:182ba91524e4 184 #define US915_BEACON_GUARD 3000
Shaun Nelson 38:182ba91524e4 185
Shaun Nelson 38:182ba91524e4 186 /*!
Shaun Nelson 38:182ba91524e4 187 * Beacon window time in ms
Shaun Nelson 38:182ba91524e4 188 */
Shaun Nelson 38:182ba91524e4 189 #define US915_BEACON_WINDOW 122880
Shaun Nelson 38:182ba91524e4 190
Shaun Nelson 38:182ba91524e4 191 /*!
Shaun Nelson 38:182ba91524e4 192 * Beacon window time in numer of slots
Shaun Nelson 38:182ba91524e4 193 */
Shaun Nelson 38:182ba91524e4 194 #define US915_BEACON_WINDOW_SLOTS 4096
Shaun Nelson 38:182ba91524e4 195
Shaun Nelson 38:182ba91524e4 196 /*!
Shaun Nelson 38:182ba91524e4 197 * Ping slot length time in ms
Shaun Nelson 38:182ba91524e4 198 */
Shaun Nelson 38:182ba91524e4 199 #define US915_PING_SLOT_WINDOW 30
Shaun Nelson 38:182ba91524e4 200
Shaun Nelson 38:182ba91524e4 201 /*!
Shaun Nelson 38:182ba91524e4 202 * Beacon frequency
Shaun Nelson 38:182ba91524e4 203 */
Shaun Nelson 38:182ba91524e4 204 #define US915_BEACON_CHANNEL_FREQ 923300000
Shaun Nelson 38:182ba91524e4 205
Shaun Nelson 38:182ba91524e4 206 /*!
Shaun Nelson 38:182ba91524e4 207 * Default symbol timeout for beacons and ping slot windows
Shaun Nelson 38:182ba91524e4 208 */
Shaun Nelson 38:182ba91524e4 209 #define US915_BEACON_SYMBOL_TO_DEFAULT 8
Shaun Nelson 38:182ba91524e4 210
Shaun Nelson 38:182ba91524e4 211 /*!
Shaun Nelson 38:182ba91524e4 212 * Maximum symbol timeout for beacons
Shaun Nelson 38:182ba91524e4 213 */
Shaun Nelson 38:182ba91524e4 214 #define US915_BEACON_SYMBOL_TO_EXPANSION_MAX 400
Shaun Nelson 38:182ba91524e4 215
Shaun Nelson 38:182ba91524e4 216 /*!
Shaun Nelson 38:182ba91524e4 217 * Maximum symbol timeout for ping slots
Shaun Nelson 38:182ba91524e4 218 */
Shaun Nelson 38:182ba91524e4 219 #define US915_PING_SLOT_SYMBOL_TO_EXPANSION_MAX 40
Shaun Nelson 38:182ba91524e4 220
Shaun Nelson 38:182ba91524e4 221 /*!
Shaun Nelson 38:182ba91524e4 222 * Symbol expansion value for beacon windows in case of beacon
Shaun Nelson 38:182ba91524e4 223 * loss in symbols
Shaun Nelson 38:182ba91524e4 224 */
Shaun Nelson 38:182ba91524e4 225 #define US915_BEACON_SYMBOL_TO_EXPANSION_FACTOR 2
Shaun Nelson 38:182ba91524e4 226
Shaun Nelson 38:182ba91524e4 227 /*!
Shaun Nelson 38:182ba91524e4 228 * Symbol expansion value for ping slot windows in case of beacon
Shaun Nelson 38:182ba91524e4 229 * loss in symbols
Shaun Nelson 38:182ba91524e4 230 */
Shaun Nelson 38:182ba91524e4 231 #define US915_PING_SLOT_SYMBOL_TO_EXPANSION_FACTOR 2
Shaun Nelson 38:182ba91524e4 232
Shaun Nelson 38:182ba91524e4 233 /*!
Shaun Nelson 38:182ba91524e4 234 * Maximum allowed beacon less time in ms
Shaun Nelson 38:182ba91524e4 235 */
Shaun Nelson 38:182ba91524e4 236 #define US915_MAX_BEACON_LESS_PERIOD 7200000
Shaun Nelson 38:182ba91524e4 237
Shaun Nelson 38:182ba91524e4 238 /*!
Shaun Nelson 38:182ba91524e4 239 * Delay time for the BeaconTimingAns in ms
Shaun Nelson 38:182ba91524e4 240 */
Shaun Nelson 38:182ba91524e4 241 #define US915_BEACON_DELAY_BEACON_TIMING_ANS 30
Shaun Nelson 38:182ba91524e4 242
Shaun Nelson 38:182ba91524e4 243 /*!
Shaun Nelson 38:182ba91524e4 244 * Payload size of a beacon frame
Shaun Nelson 38:182ba91524e4 245 */
Shaun Nelson 38:182ba91524e4 246 #define US915_BEACON_SIZE 19
Shaun Nelson 38:182ba91524e4 247
Shaun Nelson 38:182ba91524e4 248 /*!
Shaun Nelson 38:182ba91524e4 249 * Datarate of the beacon channel
Shaun Nelson 38:182ba91524e4 250 */
Shaun Nelson 38:182ba91524e4 251 #define US915_BEACON_CHANNEL_DR DR_8
Shaun Nelson 38:182ba91524e4 252
Shaun Nelson 38:182ba91524e4 253 /*!
Shaun Nelson 38:182ba91524e4 254 * Bandwith of the beacon channel
Shaun Nelson 38:182ba91524e4 255 */
Shaun Nelson 38:182ba91524e4 256 #define US915_BEACON_CHANNEL_BW 2
Shaun Nelson 38:182ba91524e4 257
Shaun Nelson 38:182ba91524e4 258 /*!
Shaun Nelson 38:182ba91524e4 259 * LoRaMac maximum number of bands
Shaun Nelson 38:182ba91524e4 260 */
Shaun Nelson 38:182ba91524e4 261 #define US915_MAX_NB_BANDS 1
Shaun Nelson 38:182ba91524e4 262
Shaun Nelson 38:182ba91524e4 263 /*!
Shaun Nelson 38:182ba91524e4 264 * Band 0 definition
Shaun Nelson 38:182ba91524e4 265 * { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff }
Shaun Nelson 38:182ba91524e4 266 */
Shaun Nelson 38:182ba91524e4 267 #define US915_BAND0 { 1, US915_MAX_TX_POWER, 0, 0 } // 100.0 %
Shaun Nelson 38:182ba91524e4 268
Shaun Nelson 38:182ba91524e4 269 /*!
Shaun Nelson 38:182ba91524e4 270 * Defines the first channel for RX window 1 for US band
Shaun Nelson 38:182ba91524e4 271 */
Shaun Nelson 38:182ba91524e4 272 #define US915_FIRST_RX1_CHANNEL ( (uint32_t) 923300000 )
Shaun Nelson 38:182ba91524e4 273
Shaun Nelson 38:182ba91524e4 274 /*!
Shaun Nelson 38:182ba91524e4 275 * Defines the last channel for RX window 1 for US band
Shaun Nelson 38:182ba91524e4 276 */
Shaun Nelson 38:182ba91524e4 277 #define US915_LAST_RX1_CHANNEL ( (uint32_t) 927500000 )
Shaun Nelson 38:182ba91524e4 278
Shaun Nelson 38:182ba91524e4 279 /*!
Shaun Nelson 38:182ba91524e4 280 * Defines the step width of the channels for RX window 1
Shaun Nelson 38:182ba91524e4 281 */
Shaun Nelson 38:182ba91524e4 282 #define US915_STEPWIDTH_RX1_CHANNEL ( (uint32_t) 600000 )
Shaun Nelson 38:182ba91524e4 283
Shaun Nelson 38:182ba91524e4 284 /*!
Shaun Nelson 38:182ba91524e4 285 * Data rates table definition
Shaun Nelson 38:182ba91524e4 286 */
Shaun Nelson 38:182ba91524e4 287 static const uint8_t DataratesUS915[] = { 10, 9, 8, 7, 8, 0, 0, 0, 12, 11, 10, 9, 8, 7, 0, 0 };
Shaun Nelson 38:182ba91524e4 288
Shaun Nelson 38:182ba91524e4 289 /*!
Shaun Nelson 38:182ba91524e4 290 * Bandwidths table definition in Hz
Shaun Nelson 38:182ba91524e4 291 */
Shaun Nelson 38:182ba91524e4 292 static const uint32_t BandwidthsUS915[] = { 125000, 125000, 125000, 125000, 500000, 0, 0, 0, 500000, 500000, 500000, 500000, 500000, 500000, 0, 0 };
Shaun Nelson 38:182ba91524e4 293
Shaun Nelson 38:182ba91524e4 294 /*!
Shaun Nelson 38:182ba91524e4 295 * Up/Down link data rates offset definition
Shaun Nelson 38:182ba91524e4 296 */
Shaun Nelson 38:182ba91524e4 297 static const int8_t DatarateOffsetsUS915[5][4] =
Shaun Nelson 38:182ba91524e4 298 {
Shaun Nelson 38:182ba91524e4 299 { DR_10, DR_9 , DR_8 , DR_8 }, // DR_0
Shaun Nelson 38:182ba91524e4 300 { DR_11, DR_10, DR_9 , DR_8 }, // DR_1
Shaun Nelson 38:182ba91524e4 301 { DR_12, DR_11, DR_10, DR_9 }, // DR_2
Shaun Nelson 38:182ba91524e4 302 { DR_13, DR_12, DR_11, DR_10 }, // DR_3
Shaun Nelson 38:182ba91524e4 303 { DR_13, DR_13, DR_12, DR_11 }, // DR_4
Shaun Nelson 38:182ba91524e4 304 };
Shaun Nelson 38:182ba91524e4 305
Shaun Nelson 38:182ba91524e4 306 /*!
Shaun Nelson 38:182ba91524e4 307 * Maximum payload with respect to the datarate index. Cannot operate with repeater.
Shaun Nelson 38:182ba91524e4 308 */
Shaun Nelson 38:182ba91524e4 309 static const uint8_t MaxPayloadOfDatarateUS915[] = { 11, 53, 125, 242, 242, 0, 0, 0, 53, 129, 242, 242, 242, 242, 0, 0 };
Shaun Nelson 38:182ba91524e4 310
Shaun Nelson 38:182ba91524e4 311 /*!
Shaun Nelson 38:182ba91524e4 312 * Maximum payload with respect to the datarate index. Can operate with repeater.
Shaun Nelson 38:182ba91524e4 313 */
Shaun Nelson 38:182ba91524e4 314 static const uint8_t MaxPayloadOfDatarateRepeaterUS915[] = { 11, 53, 125, 242, 242, 0, 0, 0, 33, 109, 222, 222, 222, 222, 0, 0 };
Shaun Nelson 38:182ba91524e4 315
Shaun Nelson 38:182ba91524e4 316 /*!
Shaun Nelson 38:182ba91524e4 317 * \brief The function gets a value of a specific phy attribute.
Shaun Nelson 38:182ba91524e4 318 *
Shaun Nelson 38:182ba91524e4 319 * \param [IN] getPhy Pointer to the function parameters.
Shaun Nelson 38:182ba91524e4 320 *
Shaun Nelson 38:182ba91524e4 321 * \retval Returns a structure containing the PHY parameter.
Shaun Nelson 38:182ba91524e4 322 */
Shaun Nelson 38:182ba91524e4 323 PhyParam_t RegionUS915GetPhyParam( GetPhyParams_t* getPhy );
Shaun Nelson 38:182ba91524e4 324
Shaun Nelson 38:182ba91524e4 325 /*!
Shaun Nelson 38:182ba91524e4 326 * \brief Updates the last TX done parameters of the current channel.
Shaun Nelson 38:182ba91524e4 327 *
Shaun Nelson 38:182ba91524e4 328 * \param [IN] txDone Pointer to the function parameters.
Shaun Nelson 38:182ba91524e4 329 */
Shaun Nelson 38:182ba91524e4 330 void RegionUS915SetBandTxDone( SetBandTxDoneParams_t* txDone );
Shaun Nelson 38:182ba91524e4 331
Shaun Nelson 38:182ba91524e4 332 /*!
Shaun Nelson 38:182ba91524e4 333 * \brief Initializes the channels masks and the channels.
Shaun Nelson 38:182ba91524e4 334 *
Shaun Nelson 38:182ba91524e4 335 * \param [IN] type Sets the initialization type.
Shaun Nelson 38:182ba91524e4 336 */
Shaun Nelson 38:182ba91524e4 337 void RegionUS915InitDefaults( InitType_t type );
Shaun Nelson 38:182ba91524e4 338
Shaun Nelson 38:182ba91524e4 339 /*!
Shaun Nelson 38:182ba91524e4 340 * \brief Verifies a parameter.
Shaun Nelson 38:182ba91524e4 341 *
Shaun Nelson 38:182ba91524e4 342 * \param [IN] verify Pointer to the function parameters.
Shaun Nelson 38:182ba91524e4 343 *
Shaun Nelson 38:182ba91524e4 344 * \param [IN] type Sets the initialization type.
Shaun Nelson 38:182ba91524e4 345 *
Shaun Nelson 38:182ba91524e4 346 * \retval Returns true, if the parameter is valid.
Shaun Nelson 38:182ba91524e4 347 */
Shaun Nelson 38:182ba91524e4 348 bool RegionUS915Verify( VerifyParams_t* verify, PhyAttribute_t phyAttribute );
Shaun Nelson 38:182ba91524e4 349
Shaun Nelson 38:182ba91524e4 350 /*!
Shaun Nelson 38:182ba91524e4 351 * \brief The function parses the input buffer and sets up the channels of the
Shaun Nelson 38:182ba91524e4 352 * CF list.
Shaun Nelson 38:182ba91524e4 353 *
Shaun Nelson 38:182ba91524e4 354 * \param [IN] applyCFList Pointer to the function parameters.
Shaun Nelson 38:182ba91524e4 355 */
Shaun Nelson 38:182ba91524e4 356 void RegionUS915ApplyCFList( ApplyCFListParams_t* applyCFList );
Shaun Nelson 38:182ba91524e4 357
Shaun Nelson 38:182ba91524e4 358 /*!
Shaun Nelson 38:182ba91524e4 359 * \brief Sets a channels mask.
Shaun Nelson 38:182ba91524e4 360 *
Shaun Nelson 38:182ba91524e4 361 * \param [IN] chanMaskSet Pointer to the function parameters.
Shaun Nelson 38:182ba91524e4 362 *
Shaun Nelson 38:182ba91524e4 363 * \retval Returns true, if the channels mask could be set.
Shaun Nelson 38:182ba91524e4 364 */
Shaun Nelson 38:182ba91524e4 365 bool RegionUS915ChanMaskSet( ChanMaskSetParams_t* chanMaskSet );
Shaun Nelson 38:182ba91524e4 366
Shaun Nelson 38:182ba91524e4 367 /*!
Shaun Nelson 38:182ba91524e4 368 * \brief Calculates the next datarate to set, when ADR is on or off.
Shaun Nelson 38:182ba91524e4 369 *
Shaun Nelson 38:182ba91524e4 370 * \param [IN] adrNext Pointer to the function parameters.
Shaun Nelson 38:182ba91524e4 371 *
Shaun Nelson 38:182ba91524e4 372 * \param [OUT] drOut The calculated datarate for the next TX.
Shaun Nelson 38:182ba91524e4 373 *
Shaun Nelson 38:182ba91524e4 374 * \param [OUT] txPowOut The TX power for the next TX.
Shaun Nelson 38:182ba91524e4 375 *
Shaun Nelson 38:182ba91524e4 376 * \param [OUT] adrAckCounter The calculated ADR acknowledgement counter.
Shaun Nelson 38:182ba91524e4 377 *
Shaun Nelson 38:182ba91524e4 378 * \retval Returns true, if an ADR request should be performed.
Shaun Nelson 38:182ba91524e4 379 */
Shaun Nelson 38:182ba91524e4 380 bool RegionUS915AdrNext( AdrNextParams_t* adrNext, int8_t* drOut, int8_t* txPowOut, uint32_t* adrAckCounter );
Shaun Nelson 38:182ba91524e4 381
Shaun Nelson 38:182ba91524e4 382 /*!
Shaun Nelson 38:182ba91524e4 383 * Computes the Rx window timeout and offset.
Shaun Nelson 38:182ba91524e4 384 *
Shaun Nelson 38:182ba91524e4 385 * \param [IN] datarate Rx window datarate index to be used
Shaun Nelson 38:182ba91524e4 386 *
Shaun Nelson 38:182ba91524e4 387 * \param [IN] minRxSymbols Minimum required number of symbols to detect an Rx frame.
Shaun Nelson 38:182ba91524e4 388 *
Shaun Nelson 38:182ba91524e4 389 * \param [IN] rxError System maximum timing error of the receiver. In milliseconds
Shaun Nelson 38:182ba91524e4 390 * The receiver will turn on in a [-rxError : +rxError] ms
Shaun Nelson 38:182ba91524e4 391 * interval around RxOffset
Shaun Nelson 38:182ba91524e4 392 *
Shaun Nelson 38:182ba91524e4 393 * \param [OUT]rxConfigParams Returns updated WindowTimeout and WindowOffset fields.
Shaun Nelson 38:182ba91524e4 394 */
Shaun Nelson 38:182ba91524e4 395 void RegionUS915ComputeRxWindowParameters( int8_t datarate, uint8_t minRxSymbols, uint32_t rxError, RxConfigParams_t *rxConfigParams );
Shaun Nelson 38:182ba91524e4 396
Shaun Nelson 38:182ba91524e4 397 /*!
Shaun Nelson 38:182ba91524e4 398 * \brief Configuration of the RX windows.
Shaun Nelson 38:182ba91524e4 399 *
Shaun Nelson 38:182ba91524e4 400 * \param [IN] rxConfig Pointer to the function parameters.
Shaun Nelson 38:182ba91524e4 401 *
Shaun Nelson 38:182ba91524e4 402 * \param [OUT] datarate The datarate index which was set.
Shaun Nelson 38:182ba91524e4 403 *
Shaun Nelson 38:182ba91524e4 404 * \retval Returns true, if the configuration was applied successfully.
Shaun Nelson 38:182ba91524e4 405 */
Shaun Nelson 38:182ba91524e4 406 bool RegionUS915RxConfig( RxConfigParams_t* rxConfig, int8_t* datarate );
Shaun Nelson 38:182ba91524e4 407
Shaun Nelson 38:182ba91524e4 408 /*!
Shaun Nelson 38:182ba91524e4 409 * \brief TX configuration.
Shaun Nelson 38:182ba91524e4 410 *
Shaun Nelson 38:182ba91524e4 411 * \param [IN] txConfig Pointer to the function parameters.
Shaun Nelson 38:182ba91524e4 412 *
Shaun Nelson 38:182ba91524e4 413 * \param [OUT] txPower The tx power index which was set.
Shaun Nelson 38:182ba91524e4 414 *
Shaun Nelson 38:182ba91524e4 415 * \param [OUT] txTimeOnAir The time-on-air of the frame.
Shaun Nelson 38:182ba91524e4 416 *
Shaun Nelson 38:182ba91524e4 417 * \retval Returns true, if the configuration was applied successfully.
Shaun Nelson 38:182ba91524e4 418 */
Shaun Nelson 38:182ba91524e4 419 bool RegionUS915TxConfig( TxConfigParams_t* txConfig, int8_t* txPower, TimerTime_t* txTimeOnAir );
Shaun Nelson 38:182ba91524e4 420
Shaun Nelson 38:182ba91524e4 421 /*!
Shaun Nelson 38:182ba91524e4 422 * \brief The function processes a Link ADR Request.
Shaun Nelson 38:182ba91524e4 423 *
Shaun Nelson 38:182ba91524e4 424 * \param [IN] linkAdrReq Pointer to the function parameters.
Shaun Nelson 38:182ba91524e4 425 *
Shaun Nelson 38:182ba91524e4 426 * \retval Returns the status of the operation, according to the LoRaMAC specification.
Shaun Nelson 38:182ba91524e4 427 */
Shaun Nelson 38:182ba91524e4 428 uint8_t RegionUS915LinkAdrReq( LinkAdrReqParams_t* linkAdrReq, int8_t* drOut, int8_t* txPowOut, uint8_t* nbRepOut, uint8_t* nbBytesParsed );
Shaun Nelson 38:182ba91524e4 429
Shaun Nelson 38:182ba91524e4 430 /*!
Shaun Nelson 38:182ba91524e4 431 * \brief The function processes a RX Parameter Setup Request.
Shaun Nelson 38:182ba91524e4 432 *
Shaun Nelson 38:182ba91524e4 433 * \param [IN] rxParamSetupReq Pointer to the function parameters.
Shaun Nelson 38:182ba91524e4 434 *
Shaun Nelson 38:182ba91524e4 435 * \retval Returns the status of the operation, according to the LoRaMAC specification.
Shaun Nelson 38:182ba91524e4 436 */
Shaun Nelson 38:182ba91524e4 437 uint8_t RegionUS915RxParamSetupReq( RxParamSetupReqParams_t* rxParamSetupReq );
Shaun Nelson 38:182ba91524e4 438
Shaun Nelson 38:182ba91524e4 439 /*!
Shaun Nelson 38:182ba91524e4 440 * \brief The function processes a Channel Request.
Shaun Nelson 38:182ba91524e4 441 *
Shaun Nelson 38:182ba91524e4 442 * \param [IN] newChannelReq Pointer to the function parameters.
Shaun Nelson 38:182ba91524e4 443 *
Shaun Nelson 38:182ba91524e4 444 * \retval Returns the status of the operation, according to the LoRaMAC specification.
Shaun Nelson 38:182ba91524e4 445 */
Shaun Nelson 38:182ba91524e4 446 uint8_t RegionUS915NewChannelReq( NewChannelReqParams_t* newChannelReq );
Shaun Nelson 38:182ba91524e4 447
Shaun Nelson 38:182ba91524e4 448 /*!
Shaun Nelson 38:182ba91524e4 449 * \brief The function processes a TX ParamSetup Request.
Shaun Nelson 38:182ba91524e4 450 *
Shaun Nelson 38:182ba91524e4 451 * \param [IN] txParamSetupReq Pointer to the function parameters.
Shaun Nelson 38:182ba91524e4 452 *
Shaun Nelson 38:182ba91524e4 453 * \retval Returns the status of the operation, according to the LoRaMAC specification.
Shaun Nelson 38:182ba91524e4 454 * Returns -1, if the functionality is not implemented. In this case, the end node
Shaun Nelson 38:182ba91524e4 455 * shall not process the command.
Shaun Nelson 38:182ba91524e4 456 */
Shaun Nelson 38:182ba91524e4 457 int8_t RegionUS915TxParamSetupReq( TxParamSetupReqParams_t* txParamSetupReq );
Shaun Nelson 38:182ba91524e4 458
Shaun Nelson 38:182ba91524e4 459 /*!
Shaun Nelson 38:182ba91524e4 460 * \brief The function processes a DlChannel Request.
Shaun Nelson 38:182ba91524e4 461 *
Shaun Nelson 38:182ba91524e4 462 * \param [IN] dlChannelReq Pointer to the function parameters.
Shaun Nelson 38:182ba91524e4 463 *
Shaun Nelson 38:182ba91524e4 464 * \retval Returns the status of the operation, according to the LoRaMAC specification.
Shaun Nelson 38:182ba91524e4 465 */
Shaun Nelson 38:182ba91524e4 466 uint8_t RegionUS915DlChannelReq( DlChannelReqParams_t* dlChannelReq );
Shaun Nelson 38:182ba91524e4 467
Shaun Nelson 38:182ba91524e4 468 /*!
Shaun Nelson 38:182ba91524e4 469 * \brief Alternates the datarate of the channel for the join request.
Shaun Nelson 38:182ba91524e4 470 *
Shaun Nelson 38:182ba91524e4 471 * \param [IN] alternateDr Pointer to the function parameters.
Shaun Nelson 38:182ba91524e4 472 *
Shaun Nelson 38:182ba91524e4 473 * \retval Datarate to apply.
Shaun Nelson 38:182ba91524e4 474 */
Shaun Nelson 38:182ba91524e4 475 int8_t RegionUS915AlternateDr( AlternateDrParams_t* alternateDr );
Shaun Nelson 38:182ba91524e4 476
Shaun Nelson 38:182ba91524e4 477 /*!
Shaun Nelson 38:182ba91524e4 478 * \brief Calculates the back-off time.
Shaun Nelson 38:182ba91524e4 479 *
Shaun Nelson 38:182ba91524e4 480 * \param [IN] calcBackOff Pointer to the function parameters.
Shaun Nelson 38:182ba91524e4 481 */
Shaun Nelson 38:182ba91524e4 482 void RegionUS915CalcBackOff( CalcBackOffParams_t* calcBackOff );
Shaun Nelson 38:182ba91524e4 483
Shaun Nelson 38:182ba91524e4 484 /*!
Shaun Nelson 38:182ba91524e4 485 * \brief Searches and set the next random available channel
Shaun Nelson 38:182ba91524e4 486 *
Shaun Nelson 38:182ba91524e4 487 * \param [OUT] channel Next channel to use for TX.
Shaun Nelson 38:182ba91524e4 488 *
Shaun Nelson 38:182ba91524e4 489 * \param [OUT] time Time to wait for the next transmission according to the duty
Shaun Nelson 38:182ba91524e4 490 * cycle.
Shaun Nelson 38:182ba91524e4 491 *
Shaun Nelson 38:182ba91524e4 492 * \param [OUT] aggregatedTimeOff Updates the aggregated time off.
Shaun Nelson 38:182ba91524e4 493 *
Shaun Nelson 38:182ba91524e4 494 * \retval Function status [1: OK, 0: Unable to find a channel on the current datarate]
Shaun Nelson 38:182ba91524e4 495 */
Shaun Nelson 38:182ba91524e4 496 bool RegionUS915NextChannel( NextChanParams_t* nextChanParams, uint8_t* channel, TimerTime_t* time, TimerTime_t* aggregatedTimeOff );
Shaun Nelson 38:182ba91524e4 497
Shaun Nelson 38:182ba91524e4 498 /*!
Shaun Nelson 38:182ba91524e4 499 * \brief Adds a channel.
Shaun Nelson 38:182ba91524e4 500 *
Shaun Nelson 38:182ba91524e4 501 * \param [IN] channelAdd Pointer to the function parameters.
Shaun Nelson 38:182ba91524e4 502 *
Shaun Nelson 38:182ba91524e4 503 * \retval Status of the operation.
Shaun Nelson 38:182ba91524e4 504 */
Shaun Nelson 38:182ba91524e4 505 LoRaMacStatus_t RegionUS915ChannelAdd( ChannelAddParams_t* channelAdd );
Shaun Nelson 38:182ba91524e4 506
Shaun Nelson 38:182ba91524e4 507 /*!
Shaun Nelson 38:182ba91524e4 508 * \brief Removes a channel.
Shaun Nelson 38:182ba91524e4 509 *
Shaun Nelson 38:182ba91524e4 510 * \param [IN] channelRemove Pointer to the function parameters.
Shaun Nelson 38:182ba91524e4 511 *
Shaun Nelson 38:182ba91524e4 512 * \retval Returns true, if the channel was removed successfully.
Shaun Nelson 38:182ba91524e4 513 */
Shaun Nelson 38:182ba91524e4 514 bool RegionUS915ChannelsRemove( ChannelRemoveParams_t* channelRemove );
Shaun Nelson 38:182ba91524e4 515
Shaun Nelson 38:182ba91524e4 516 /*!
Shaun Nelson 38:182ba91524e4 517 * \brief Sets the radio into continuous wave mode.
Shaun Nelson 38:182ba91524e4 518 *
Shaun Nelson 38:182ba91524e4 519 * \param [IN] continuousWave Pointer to the function parameters.
Shaun Nelson 38:182ba91524e4 520 */
Shaun Nelson 38:182ba91524e4 521 void RegionUS915SetContinuousWave( ContinuousWaveParams_t* continuousWave );
Shaun Nelson 38:182ba91524e4 522
Shaun Nelson 38:182ba91524e4 523 /*!
Shaun Nelson 38:182ba91524e4 524 * \brief Computes new datarate according to the given offset
Shaun Nelson 38:182ba91524e4 525 *
Shaun Nelson 38:182ba91524e4 526 * \param [IN] downlinkDwellTime Downlink dwell time configuration. 0: No limit, 1: 400ms
Shaun Nelson 38:182ba91524e4 527 *
Shaun Nelson 38:182ba91524e4 528 * \param [IN] dr Current datarate
Shaun Nelson 38:182ba91524e4 529 *
Shaun Nelson 38:182ba91524e4 530 * \param [IN] drOffset Offset to be applied
Shaun Nelson 38:182ba91524e4 531 *
Shaun Nelson 38:182ba91524e4 532 * \retval newDr Computed datarate.
Shaun Nelson 38:182ba91524e4 533 */
Shaun Nelson 38:182ba91524e4 534 uint8_t RegionUS915ApplyDrOffset( uint8_t downlinkDwellTime, int8_t dr, int8_t drOffset );
Shaun Nelson 38:182ba91524e4 535
Shaun Nelson 38:182ba91524e4 536 /*! \} defgroup REGIONUS915 */
Shaun Nelson 38:182ba91524e4 537
Shaun Nelson 38:182ba91524e4 538 #endif // __REGION_US915_H__