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
LoRaMac-board.h
00001 /* 00002 / _____) _ | | 00003 ( (____ _____ ____ _| |_ _____ ____| |__ 00004 \____ \| ___ | (_ _) ___ |/ ___) _ \ 00005 _____) ) ____| | | || |_| ____( (___| | | | 00006 (______/|_____)_|_|_| \__)_____)\____)_| |_| 00007 (C)2013 Semtech 00008 00009 Description: LoRa MAC layer board dependent definitions 00010 00011 License: Revised BSD License, see LICENSE.TXT file include in the project 00012 00013 Maintainer: Miguel Luis and Gregory Cristian 00014 */ 00015 #ifndef __LORAMAC_BOARD_H__ 00016 #define __LORAMAC_BOARD_H__ 00017 00018 /* 00019 * Maximum join retransmission duty cycle timer wait period in seconds 00020 */ 00021 #define JOIN_RETRANSMISSION_DC_WAIT_MAX 3600 00022 00023 /*! 00024 * Returns individual channel mask 00025 * 00026 * \param[IN] channelIndex Channel index 1 based 00027 * \retval channelMask 00028 */ 00029 #define LC(channelIndex) (uint16_t)(1 << (channelIndex - 1)) 00030 00031 #if defined(USE_BAND_433) 00032 00033 /*! 00034 * LoRaMac maximum number of channels 00035 */ 00036 #define LORA_MAX_NB_CHANNELS 16 00037 00038 /*! 00039 * Minimal datarate that can be used by the node 00040 */ 00041 #define LORAMAC_TX_MIN_DATARATE DR_0 00042 00043 /*! 00044 * Minimal datarate that can be used by the node 00045 */ 00046 #define LORAMAC_TX_MAX_DATARATE DR_7 00047 00048 /*! 00049 * Minimal datarate that can be used by the node 00050 */ 00051 #define LORAMAC_RX_MIN_DATARATE DR_0 00052 00053 /*! 00054 * Minimal datarate that can be used by the node 00055 */ 00056 #define LORAMAC_RX_MAX_DATARATE DR_7 00057 00058 /*! 00059 * Default datarate used by the node 00060 */ 00061 #define LORAMAC_DEFAULT_DATARATE DR_0 00062 00063 /*! 00064 * Minimal Rx1 receive datarate offset 00065 */ 00066 #define LORAMAC_MIN_RX1_DR_OFFSET 0 00067 00068 /*! 00069 * Maximal Rx1 receive datarate offset 00070 */ 00071 #define LORAMAC_MAX_RX1_DR_OFFSET 5 00072 00073 /*! 00074 * Minimal Tx output power that can be used by the node 00075 */ 00076 #define LORAMAC_MIN_TX_POWER TX_POWER_M5_DBM 00077 00078 /*! 00079 * Minimal Tx output power that can be used by the node 00080 */ 00081 #define LORAMAC_MAX_TX_POWER TX_POWER_10_DBM 00082 00083 /*! 00084 * Default Tx output power used by the node 00085 */ 00086 #define LORAMAC_DEFAULT_TX_POWER TX_POWER_10_DBM 00087 00088 /*! 00089 * LoRaMac TxPower definition 00090 */ 00091 #define TX_POWER_10_DBM 0 00092 #define TX_POWER_07_DBM 1 00093 #define TX_POWER_04_DBM 2 00094 #define TX_POWER_01_DBM 3 00095 #define TX_POWER_M2_DBM 4 00096 #define TX_POWER_M5_DBM 5 00097 00098 /*! 00099 * LoRaMac datarates definition 00100 */ 00101 #define DR_0 0 // SF12 - BW125 00102 #define DR_1 1 // SF11 - BW125 00103 #define DR_2 2 // SF10 - BW125 00104 #define DR_3 3 // SF9 - BW125 00105 #define DR_4 4 // SF8 - BW125 00106 #define DR_5 5 // SF7 - BW125 00107 #define DR_6 6 // SF7 - BW250 00108 #define DR_7 7 // FSK 00109 00110 /*! 00111 * Second reception window channel definition. 00112 */ 00113 // Channel = { Frequency [Hz], Datarate } 00114 #define RX_WND_2_CHANNEL \ 00115 { 434665000, DR_0 } 00116 00117 /*! 00118 * LoRaMac maximum number of bands 00119 */ 00120 #define LORA_MAX_NB_BANDS 1 00121 00122 // Band = { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } 00123 #define BAND0 \ 00124 { 100, TX_POWER_10_DBM, 0, 0 } // 1.0 % 00125 00126 /*! 00127 * LoRaMac default channels 00128 */ 00129 // Channel = { Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band } 00130 #define LC1 \ 00131 { 433175000, {((DR_5 << 4) | DR_0)}, 0 } 00132 #define LC2 \ 00133 { 433375000, {((DR_5 << 4) | DR_0)}, 0 } 00134 #define LC3 \ 00135 { 433575000, {((DR_5 << 4) | DR_0)}, 0 } 00136 00137 /*! 00138 * LoRaMac duty cycle for the join procedure 00139 */ 00140 #define JOIN_DC 1000 00141 00142 /*! 00143 * LoRaMac channels which are allowed for the join procedure 00144 */ 00145 #define JOIN_CHANNELS (uint16_t)(LC(1) | LC(2) | LC(3)) 00146 00147 #elif defined(USE_BAND_780) 00148 00149 /*! 00150 * LoRaMac maximum number of channels 00151 */ 00152 #define LORA_MAX_NB_CHANNELS 16 00153 00154 /*! 00155 * Minimal datarate that can be used by the node 00156 */ 00157 #define LORAMAC_TX_MIN_DATARATE DR_0 00158 00159 /*! 00160 * Minimal datarate that can be used by the node 00161 */ 00162 #define LORAMAC_TX_MAX_DATARATE DR_7 00163 00164 /*! 00165 * Minimal datarate that can be used by the node 00166 */ 00167 #define LORAMAC_RX_MIN_DATARATE DR_0 00168 00169 /*! 00170 * Minimal datarate that can be used by the node 00171 */ 00172 #define LORAMAC_RX_MAX_DATARATE DR_7 00173 00174 /*! 00175 * Default datarate used by the node 00176 */ 00177 #define LORAMAC_DEFAULT_DATARATE DR_0 00178 00179 /*! 00180 * Minimal Rx1 receive datarate offset 00181 */ 00182 #define LORAMAC_MIN_RX1_DR_OFFSET 0 00183 00184 /*! 00185 * Maximal Rx1 receive datarate offset 00186 */ 00187 #define LORAMAC_MAX_RX1_DR_OFFSET 5 00188 00189 /*! 00190 * Minimal Tx output power that can be used by the node 00191 */ 00192 #define LORAMAC_MIN_TX_POWER TX_POWER_M5_DBM 00193 00194 /*! 00195 * Minimal Tx output power that can be used by the node 00196 */ 00197 #define LORAMAC_MAX_TX_POWER TX_POWER_10_DBM 00198 00199 /*! 00200 * Default Tx output power used by the node 00201 */ 00202 #define LORAMAC_DEFAULT_TX_POWER TX_POWER_10_DBM 00203 00204 /*! 00205 * LoRaMac TxPower definition 00206 */ 00207 #define TX_POWER_10_DBM 0 00208 #define TX_POWER_07_DBM 1 00209 #define TX_POWER_04_DBM 2 00210 #define TX_POWER_01_DBM 3 00211 #define TX_POWER_M2_DBM 4 00212 #define TX_POWER_M5_DBM 5 00213 00214 /*! 00215 * LoRaMac datarates definition 00216 */ 00217 #define DR_0 0 // SF12 - BW125 00218 #define DR_1 1 // SF11 - BW125 00219 #define DR_2 2 // SF10 - BW125 00220 #define DR_3 3 // SF9 - BW125 00221 #define DR_4 4 // SF8 - BW125 00222 #define DR_5 5 // SF7 - BW125 00223 #define DR_6 6 // SF7 - BW250 00224 #define DR_7 7 // FSK 00225 00226 /*! 00227 * Second reception window channel definition. 00228 */ 00229 // Channel = { Frequency [Hz], Datarate } 00230 #define RX_WND_2_CHANNEL \ 00231 { 786000000, DR_0 } 00232 00233 /*! 00234 * LoRaMac maximum number of bands 00235 */ 00236 #define LORA_MAX_NB_BANDS 1 00237 00238 // Band = { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } 00239 #define BAND0 \ 00240 { 100, TX_POWER_10_DBM, 0, 0 } // 1.0 % 00241 00242 /*! 00243 * LoRaMac default channels 00244 */ 00245 // Channel = { Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band } 00246 #define LC1 \ 00247 { 779500000, {((DR_5 << 4) | DR_0)}, 0 } 00248 #define LC2 \ 00249 { 779700000, {((DR_5 << 4) | DR_0)}, 0 } 00250 #define LC3 \ 00251 { 779900000, {((DR_5 << 4) | DR_0)}, 0 } 00252 00253 /*! 00254 * LoRaMac duty cycle for the join procedure 00255 */ 00256 #define JOIN_DC 1000 00257 00258 /*! 00259 * LoRaMac channels which are allowed for the join procedure 00260 */ 00261 #define JOIN_CHANNELS (uint16_t)(LC(1) | LC(2) | LC(3)) 00262 00263 #elif defined(USE_BAND_868) 00264 00265 /*! 00266 * LoRaMac maximum number of channels 00267 */ 00268 #define LORA_MAX_NB_CHANNELS 16 00269 00270 /*! 00271 * Minimal datarate that can be used by the node 00272 */ 00273 #define LORAMAC_TX_MIN_DATARATE DR_0 00274 00275 /*! 00276 * Minimal datarate that can be used by the node 00277 */ 00278 #define LORAMAC_TX_MAX_DATARATE DR_7 00279 00280 /*! 00281 * Minimal datarate that can be used by the node 00282 */ 00283 #define LORAMAC_RX_MIN_DATARATE DR_0 00284 00285 /*! 00286 * Minimal datarate that can be used by the node 00287 */ 00288 #define LORAMAC_RX_MAX_DATARATE DR_7 00289 00290 /*! 00291 * Default datarate used by the node 00292 */ 00293 #define LORAMAC_DEFAULT_DATARATE DR_0 00294 00295 /*! 00296 * Minimal Rx1 receive datarate offset 00297 */ 00298 #define LORAMAC_MIN_RX1_DR_OFFSET 0 00299 00300 /*! 00301 * Maximal Rx1 receive datarate offset 00302 */ 00303 #define LORAMAC_MAX_RX1_DR_OFFSET 5 00304 00305 /*! 00306 * Minimal Tx output power that can be used by the node 00307 */ 00308 #define LORAMAC_MIN_TX_POWER TX_POWER_02_DBM 00309 00310 /*! 00311 * Minimal Tx output power that can be used by the node 00312 */ 00313 #define LORAMAC_MAX_TX_POWER TX_POWER_20_DBM 00314 00315 /*! 00316 * Default Tx output power used by the node 00317 */ 00318 #define LORAMAC_DEFAULT_TX_POWER TX_POWER_14_DBM 00319 00320 /*! 00321 * LoRaMac TxPower definition 00322 */ 00323 #define TX_POWER_20_DBM 0 00324 #define TX_POWER_14_DBM 1 00325 #define TX_POWER_11_DBM 2 00326 #define TX_POWER_08_DBM 3 00327 #define TX_POWER_05_DBM 4 00328 #define TX_POWER_02_DBM 5 00329 00330 /*! 00331 * LoRaMac datarates definition 00332 */ 00333 #define DR_0 0 // SF12 - BW125 00334 #define DR_1 1 // SF11 - BW125 00335 #define DR_2 2 // SF10 - BW125 00336 #define DR_3 3 // SF9 - BW125 00337 #define DR_4 4 // SF8 - BW125 00338 #define DR_5 5 // SF7 - BW125 00339 #define DR_6 6 // SF7 - BW250 00340 #define DR_7 7 // FSK 00341 00342 /*! 00343 * Second reception window channel definition. 00344 */ 00345 // Channel = { Frequency [Hz], Datarate } 00346 #define RX_WND_2_CHANNEL \ 00347 { 869525000, DR_0 } 00348 00349 /*! 00350 * LoRaMac maximum number of bands 00351 */ 00352 #define LORA_MAX_NB_BANDS 5 00353 00354 /*! 00355 * LoRaMac EU868 default bands 00356 */ 00357 typedef enum { 00358 BAND_G1_0, 00359 BAND_G1_1, 00360 BAND_G1_2, 00361 BAND_G1_3, 00362 BAND_G1_4, 00363 } BandId_t; 00364 00365 // Band = { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } 00366 #define BAND0 \ 00367 { 100, TX_POWER_14_DBM, 0, 0 } // 1.0 % 00368 #define BAND1 \ 00369 { 100, TX_POWER_14_DBM, 0, 0 } // 1.0 % 00370 #define BAND2 \ 00371 { 1000, TX_POWER_14_DBM, 0, 0 } // 0.1 % 00372 #define BAND3 \ 00373 { 10, TX_POWER_14_DBM, 0, 0 } // 10.0 % 00374 #define BAND4 \ 00375 { 100, TX_POWER_14_DBM, 0, 0 } // 1.0 % 00376 00377 /*! 00378 * LoRaMac default channels 00379 */ 00380 // Channel = { Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band } 00381 #define LC1 \ 00382 { 868100000, {((DR_5 << 4) | DR_0)}, 1 } 00383 #define LC2 \ 00384 { 868300000, {((DR_5 << 4) | DR_0)}, 1 } 00385 #define LC3 \ 00386 { 868500000, {((DR_5 << 4) | DR_0)}, 1 } 00387 00388 /*! 00389 * LoRaMac duty cycle for the join procedure 00390 */ 00391 #define JOIN_DC 1000 00392 00393 /*! 00394 * LoRaMac channels which are allowed for the join procedure 00395 */ 00396 #define JOIN_CHANNELS (uint16_t)(LC(1) | LC(2) | LC(3)) 00397 00398 #elif defined(USE_BAND_915) || defined(USE_BAND_915_HYBRID) 00399 00400 /*! 00401 * LoRaMac maximum number of channels 00402 */ 00403 #define LORA_MAX_NB_CHANNELS 72 00404 00405 /*! 00406 * Minimal datarate that can be used by the node 00407 */ 00408 #define LORAMAC_TX_MIN_DATARATE DR_0 00409 00410 /*! 00411 * Minimal datarate that can be used by the node 00412 */ 00413 #define LORAMAC_TX_MAX_DATARATE DR_4 00414 00415 /*! 00416 * Minimal datarate that can be used by the node 00417 */ 00418 #define LORAMAC_RX_MIN_DATARATE DR_8 00419 00420 /*! 00421 * Minimal datarate that can be used by the node 00422 */ 00423 #define LORAMAC_RX_MAX_DATARATE DR_13 00424 00425 /*! 00426 * Default datarate used by the node 00427 */ 00428 #define LORAMAC_DEFAULT_DATARATE DR_0 00429 00430 /*! 00431 * Minimal Rx1 receive datarate offset 00432 */ 00433 #define LORAMAC_MIN_RX1_DR_OFFSET 0 00434 00435 /*! 00436 * Maximal Rx1 receive datarate offset 00437 */ 00438 #define LORAMAC_MAX_RX1_DR_OFFSET 3 00439 00440 /*! 00441 * Minimal Tx output power that can be used by the node 00442 */ 00443 #define LORAMAC_MIN_TX_POWER TX_POWER_2_DBM 00444 00445 /*! 00446 * Minimal Tx output power that can be used by the node 00447 */ 00448 #define LORAMAC_MAX_TX_POWER TX_POWER_30_DBM 00449 00450 /*! 00451 * Default Tx output power used by the node 00452 */ 00453 #define LORAMAC_DEFAULT_TX_POWER TX_POWER_30_DBM 00454 00455 /*! 00456 * LoRaMac TxPower definition 00457 */ 00458 #define TX_POWER_30_DBM 0 00459 #define TX_POWER_28_DBM 1 00460 #define TX_POWER_26_DBM 2 00461 #define TX_POWER_24_DBM 3 00462 #define TX_POWER_22_DBM 4 00463 #define TX_POWER_20_DBM 5 00464 #define TX_POWER_18_DBM 6 00465 #define TX_POWER_16_DBM 7 00466 #define TX_POWER_14_DBM 8 00467 #define TX_POWER_12_DBM 9 00468 #define TX_POWER_10_DBM 10 00469 #define TX_POWER_8_DBM 11 00470 #define TX_POWER_6_DBM 12 00471 #define TX_POWER_4_DBM 13 00472 #define TX_POWER_2_DBM 14 00473 00474 /*! 00475 * LoRaMac datarates definition 00476 */ 00477 #define DR_0 0 // SF10 - BW125 | 00478 #define DR_1 1 // SF9 - BW125 | 00479 #define DR_2 2 // SF8 - BW125 +-> Up link 00480 #define DR_3 3 // SF7 - BW125 | 00481 #define DR_4 4 // SF8 - BW500 | 00482 #define DR_5 5 // RFU 00483 #define DR_6 6 // RFU 00484 #define DR_7 7 // RFU 00485 #define DR_8 8 // SF12 - BW500 | 00486 #define DR_9 9 // SF11 - BW500 | 00487 #define DR_10 10 // SF10 - BW500 | 00488 #define DR_11 11 // SF9 - BW500 | 00489 #define DR_12 12 // SF8 - BW500 +-> Down link 00490 #define DR_13 13 // SF7 - BW500 | 00491 #define DR_14 14 // RFU | 00492 #define DR_15 15 // RFU | 00493 00494 /*! 00495 * Second reception window channel definition. 00496 */ 00497 // Channel = { Frequency [Hz], Datarate } 00498 #define RX_WND_2_CHANNEL \ 00499 { 923300000, DR_8 } 00500 00501 /*! 00502 * LoRaMac maximum number of bands 00503 */ 00504 #define LORA_MAX_NB_BANDS 1 00505 00506 // Band = { DutyCycle, TxMaxPower, LastTxDoneTime, TimeOff } 00507 #define BAND0 \ 00508 { 1, TX_POWER_20_DBM, 0, 0 } // 100.0 % 00509 00510 /*! 00511 * LoRaMac default channels 00512 */ 00513 // Channel = { Frequency [Hz], { ( ( DrMax << 4 ) | DrMin ) }, Band } 00514 /* 00515 * US band channels are initialized using a loop in LoRaMacInit function 00516 * \code 00517 * // 125 kHz channels 00518 * for( uint8_t i = 0; i < LORA_MAX_NB_CHANNELS - 8; i++ ) 00519 * { 00520 * Channels[i].Frequency = 902.3e6 + i * 200e3; 00521 * Channels[i].DrRange.Value = ( DR_3 << 4 ) | DR_0; 00522 * Channels[i].Band = 0; 00523 * } 00524 * // 500 kHz channels 00525 * for( uint8_t i = LORA_MAX_NB_CHANNELS - 8; i < LORA_MAX_NB_CHANNELS; i++ ) 00526 * { 00527 * Channels[i].Frequency = 903.0e6 + ( i - ( LORA_MAX_NB_CHANNELS - 8 ) ) * 1.6e6; 00528 * Channels[i].DrRange.Value = ( DR_4 << 4 ) | DR_4; 00529 * Channels[i].Band = 0; 00530 * } 00531 * \endcode 00532 */ 00533 #else 00534 #error "Please define a frequency band in the compiler options." 00535 #endif 00536 00537 #endif // __LORAMAC_BOARD_H__
Generated on Tue Jul 12 2022 16:32:55 by
1.7.2
