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.
lora_phy_ds.h
00001 /** 00002 * @file lora_phy_ds.h 00003 * 00004 * @brief Data structures relating to PHY layer 00005 * 00006 * \code 00007 * ______ _ 00008 * / _____) _ | | 00009 * ( (____ _____ ____ _| |_ _____ ____| |__ 00010 * \____ \| ___ | (_ _) ___ |/ ___) _ \ 00011 * _____) ) ____| | | || |_| ____( (___| | | | 00012 * (______/|_____)_|_|_| \__)_____)\____)_| |_| 00013 * (C)2013 Semtech 00014 * ___ _____ _ ___ _ _____ ___ ___ ___ ___ 00015 * / __|_ _/_\ / __| |/ / __/ _ \| _ \/ __| __| 00016 * \__ \ | |/ _ \ (__| ' <| _| (_) | / (__| _| 00017 * |___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___| 00018 * embedded.connectivity.solutions=============== 00019 * 00020 * \endcode 00021 * 00022 * License: Revised BSD License, see LICENSE.TXT file include in the project 00023 * 00024 * Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jaeckle ( STACKFORCE ) 00025 * 00026 * Copyright (c) 2017, Arm Limited and affiliates. 00027 * SPDX-License-Identifier: BSD-3-Clause 00028 * 00029 */ 00030 00031 #ifndef MBED_OS_LORA_PHY_DATASTRUCTURES_ 00032 #define MBED_OS_LORA_PHY_DATASTRUCTURES_ 00033 00034 #include "lorawan/system/lorawan_data_structures.h" 00035 00036 /*! 00037 * \brief Returns the minimum value between a and b. 00038 * 00039 * \param [in] a The first value. 00040 * \param [in] b The second value. 00041 * \retval minValue The minimum value. 00042 */ 00043 #ifndef MIN 00044 #define MIN( a, b ) ( ( ( a ) < ( b ) ) ? ( a ) : ( b ) ) 00045 #endif 00046 00047 /*! 00048 * \brief Returns the maximum value between a and b 00049 * 00050 * \param [in] a The first value. 00051 * \param [in] b The second value. 00052 * \retval maxValue The maximum value. 00053 */ 00054 #ifndef MAX 00055 #define MAX( a, b ) ( ( ( a ) > ( b ) ) ? ( a ) : ( b ) ) 00056 #endif 00057 00058 /** 00059 * LoRaMac maximum number of channels. 00060 */ 00061 #define LORA_MAX_NB_CHANNELS 16 00062 00063 /*! 00064 * Macro to compute bit of a channel index. 00065 */ 00066 #define LC( channelIndex ) ( uint16_t )( 1 << ( channelIndex - 1 ) ) 00067 00068 /*! 00069 * Region | SF 00070 * ------------ | :-----: 00071 * AS923 | SF12 - BW125 00072 * AU915 | SF10 - BW125 00073 * CN470 | SF12 - BW125 00074 * CN779 | SF12 - BW125 00075 * EU433 | SF12 - BW125 00076 * EU868 | SF12 - BW125 00077 * IN865 | SF12 - BW125 00078 * KR920 | SF12 - BW125 00079 * US915 | SF10 - BW125 00080 * US915_HYBRID | SF10 - BW125 00081 */ 00082 #define DR_0 0 00083 00084 /*! 00085 * Region | SF 00086 * ------------ | :-----: 00087 * AS923 | SF11 - BW125 00088 * AU915 | SF9 - BW125 00089 * CN470 | SF11 - BW125 00090 * CN779 | SF11 - BW125 00091 * EU433 | SF11 - BW125 00092 * EU868 | SF11 - BW125 00093 * IN865 | SF11 - BW125 00094 * KR920 | SF11 - BW125 00095 * US915 | SF9 - BW125 00096 * US915_HYBRID | SF9 - BW125 00097 */ 00098 #define DR_1 1 00099 00100 /*! 00101 * Region | SF 00102 * ------------ | :-----: 00103 * AS923 | SF10 - BW125 00104 * AU915 | SF8 - BW125 00105 * CN470 | SF10 - BW125 00106 * CN779 | SF10 - BW125 00107 * EU433 | SF10 - BW125 00108 * EU868 | SF10 - BW125 00109 * IN865 | SF10 - BW125 00110 * KR920 | SF10 - BW125 00111 * US915 | SF8 - BW125 00112 * US915_HYBRID | SF8 - BW125 00113 */ 00114 #define DR_2 2 00115 00116 /*! 00117 * Region | SF 00118 * ------------ | :-----: 00119 * AS923 | SF9 - BW125 00120 * AU915 | SF7 - BW125 00121 * CN470 | SF9 - BW125 00122 * CN779 | SF9 - BW125 00123 * EU433 | SF9 - BW125 00124 * EU868 | SF9 - BW125 00125 * IN865 | SF9 - BW125 00126 * KR920 | SF9 - BW125 00127 * US915 | SF7 - BW125 00128 * US915_HYBRID | SF7 - BW125 00129 */ 00130 #define DR_3 3 00131 00132 /*! 00133 * Region | SF 00134 * ------------ | :-----: 00135 * AS923 | SF8 - BW125 00136 * AU915 | SF8 - BW500 00137 * CN470 | SF8 - BW125 00138 * CN779 | SF8 - BW125 00139 * EU433 | SF8 - BW125 00140 * EU868 | SF8 - BW125 00141 * IN865 | SF8 - BW125 00142 * KR920 | SF8 - BW125 00143 * US915 | SF8 - BW500 00144 * US915_HYBRID | SF8 - BW500 00145 */ 00146 #define DR_4 4 00147 00148 /*! 00149 * Region | SF 00150 * ------------ | :-----: 00151 * AS923 | SF7 - BW125 00152 * AU915 | RFU 00153 * CN470 | SF7 - BW125 00154 * CN779 | SF7 - BW125 00155 * EU433 | SF7 - BW125 00156 * EU868 | SF7 - BW125 00157 * IN865 | SF7 - BW125 00158 * KR920 | SF7 - BW125 00159 * US915 | RFU 00160 * US915_HYBRID | RFU 00161 */ 00162 #define DR_5 5 00163 00164 /*! 00165 * Region | SF 00166 * ------------ | :-----: 00167 * AS923 | SF7 - BW250 00168 * AU915 | RFU 00169 * CN470 | SF12 - BW125 00170 * CN779 | SF7 - BW250 00171 * EU433 | SF7 - BW250 00172 * EU868 | SF7 - BW250 00173 * IN865 | SF7 - BW250 00174 * KR920 | RFU 00175 * US915 | RFU 00176 * US915_HYBRID | RFU 00177 */ 00178 #define DR_6 6 00179 00180 /*! 00181 * Region | SF 00182 * ------------ | :-----: 00183 * AS923 | FSK 00184 * AU915 | RFU 00185 * CN470 | SF12 - BW125 00186 * CN779 | FSK 00187 * EU433 | FSK 00188 * EU868 | FSK 00189 * IN865 | FSK 00190 * KR920 | RFU 00191 * US915 | RFU 00192 * US915_HYBRID | RFU 00193 */ 00194 #define DR_7 7 00195 00196 /*! 00197 * Region | SF 00198 * ------------ | :-----: 00199 * AS923 | RFU 00200 * AU915 | SF12 - BW500 00201 * CN470 | RFU 00202 * CN779 | RFU 00203 * EU433 | RFU 00204 * EU868 | RFU 00205 * IN865 | RFU 00206 * KR920 | RFU 00207 * US915 | SF12 - BW500 00208 * US915_HYBRID | SF12 - BW500 00209 */ 00210 #define DR_8 8 00211 00212 /*! 00213 * Region | SF 00214 * ------------ | :-----: 00215 * AS923 | RFU 00216 * AU915 | SF11 - BW500 00217 * CN470 | RFU 00218 * CN779 | RFU 00219 * EU433 | RFU 00220 * EU868 | RFU 00221 * IN865 | RFU 00222 * KR920 | RFU 00223 * US915 | SF11 - BW500 00224 * US915_HYBRID | SF11 - BW500 00225 */ 00226 #define DR_9 9 00227 00228 /*! 00229 * Region | SF 00230 * ------------ | :-----: 00231 * AS923 | RFU 00232 * AU915 | SF10 - BW500 00233 * CN470 | RFU 00234 * CN779 | RFU 00235 * EU433 | RFU 00236 * EU868 | RFU 00237 * IN865 | RFU 00238 * KR920 | RFU 00239 * US915 | SF10 - BW500 00240 * US915_HYBRID | SF10 - BW500 00241 */ 00242 #define DR_10 10 00243 00244 /*! 00245 * Region | SF 00246 * ------------ | :-----: 00247 * AS923 | RFU 00248 * AU915 | SF9 - BW500 00249 * CN470 | RFU 00250 * CN779 | RFU 00251 * EU433 | RFU 00252 * EU868 | RFU 00253 * IN865 | RFU 00254 * KR920 | RFU 00255 * US915 | SF9 - BW500 00256 * US915_HYBRID | SF9 - BW500 00257 */ 00258 #define DR_11 11 00259 00260 /*! 00261 * Region | SF 00262 * ------------ | :-----: 00263 * AS923 | RFU 00264 * AU915 | SF8 - BW500 00265 * CN470 | RFU 00266 * CN779 | RFU 00267 * EU433 | RFU 00268 * EU868 | RFU 00269 * IN865 | RFU 00270 * KR920 | RFU 00271 * US915 | SF8 - BW500 00272 * US915_HYBRID | SF8 - BW500 00273 */ 00274 #define DR_12 12 00275 00276 /*! 00277 * Region | SF 00278 * ------------ | :-----: 00279 * AS923 | RFU 00280 * AU915 | SF7 - BW500 00281 * CN470 | RFU 00282 * CN779 | RFU 00283 * EU433 | RFU 00284 * EU868 | RFU 00285 * IN865 | RFU 00286 * KR920 | RFU 00287 * US915 | SF7 - BW500 00288 * US915_HYBRID | SF7 - BW500 00289 */ 00290 #define DR_13 13 00291 00292 /*! 00293 * Region | SF 00294 * ------------ | :-----: 00295 * AS923 | RFU 00296 * AU915 | RFU 00297 * CN470 | RFU 00298 * CN779 | RFU 00299 * EU433 | RFU 00300 * EU868 | RFU 00301 * IN865 | RFU 00302 * KR920 | RFU 00303 * US915 | RFU 00304 * US915_HYBRID | RFU 00305 */ 00306 #define DR_14 14 00307 00308 /*! 00309 * Region | SF 00310 * ------------ | :-----: 00311 * AS923 | RFU 00312 * AU915 | RFU 00313 * CN470 | RFU 00314 * CN779 | RFU 00315 * EU433 | RFU 00316 * EU868 | RFU 00317 * IN865 | RFU 00318 * KR920 | RFU 00319 * US915 | RFU 00320 * US915_HYBRID | RFU 00321 */ 00322 #define DR_15 15 00323 00324 00325 00326 /*! 00327 * Region | dBM 00328 * ------------ | :-----: 00329 * AS923 | Max EIRP 00330 * AU915 | Max EIRP 00331 * CN470 | Max EIRP 00332 * CN779 | Max EIRP 00333 * EU433 | Max EIRP 00334 * EU868 | Max EIRP 00335 * IN865 | Max EIRP 00336 * KR920 | Max EIRP 00337 * US915 | Max ERP 00338 * US915_HYBRID | Max ERP 00339 */ 00340 #define TX_POWER_0 0 00341 00342 /*! 00343 * Region | dBM 00344 * ------------ | :-----: 00345 * AS923 | Max EIRP - 2 00346 * AU915 | Max EIRP - 2 00347 * CN470 | Max EIRP - 2 00348 * CN779 | Max EIRP - 2 00349 * EU433 | Max EIRP - 2 00350 * EU868 | Max EIRP - 2 00351 * IN865 | Max EIRP - 2 00352 * KR920 | Max EIRP - 2 00353 * US915 | Max ERP - 2 00354 * US915_HYBRID | Max ERP - 2 00355 */ 00356 #define TX_POWER_1 1 00357 00358 /*! 00359 * Region | dBM 00360 * ------------ | :-----: 00361 * AS923 | Max EIRP - 4 00362 * AU915 | Max EIRP - 4 00363 * CN470 | Max EIRP - 4 00364 * CN779 | Max EIRP - 4 00365 * EU433 | Max EIRP - 4 00366 * EU868 | Max EIRP - 4 00367 * IN865 | Max EIRP - 4 00368 * KR920 | Max EIRP - 4 00369 * US915 | Max ERP - 4 00370 * US915_HYBRID | Max ERP - 4 00371 */ 00372 #define TX_POWER_2 2 00373 00374 /*! 00375 * Region | dBM 00376 * ------------ | :-----: 00377 * AS923 | Max EIRP - 6 00378 * AU915 | Max EIRP - 6 00379 * CN470 | Max EIRP - 6 00380 * CN779 | Max EIRP - 6 00381 * EU433 | Max EIRP - 6 00382 * EU868 | Max EIRP - 6 00383 * IN865 | Max EIRP - 6 00384 * KR920 | Max EIRP - 6 00385 * US915 | Max ERP - 6 00386 * US915_HYBRID | Max ERP - 6 00387 */ 00388 #define TX_POWER_3 3 00389 00390 /*! 00391 * Region | dBM 00392 * ------------ | :-----: 00393 * AS923 | Max EIRP - 8 00394 * AU915 | Max EIRP - 8 00395 * CN470 | Max EIRP - 8 00396 * CN779 | Max EIRP - 8 00397 * EU433 | Max EIRP - 8 00398 * EU868 | Max EIRP - 8 00399 * IN865 | Max EIRP - 8 00400 * KR920 | Max EIRP - 8 00401 * US915 | Max ERP - 8 00402 * US915_HYBRID | Max ERP - 8 00403 */ 00404 #define TX_POWER_4 4 00405 00406 /*! 00407 * Region | dBM 00408 * ------------ | :-----: 00409 * AS923 | Max EIRP - 10 00410 * AU915 | Max EIRP - 10 00411 * CN470 | Max EIRP - 10 00412 * CN779 | Max EIRP - 10 00413 * EU433 | Max EIRP - 10 00414 * EU868 | Max EIRP - 10 00415 * IN865 | Max EIRP - 10 00416 * KR920 | Max EIRP - 10 00417 * US915 | Max ERP - 10 00418 * US915_HYBRID | Max ERP - 10 00419 */ 00420 #define TX_POWER_5 5 00421 00422 /*! 00423 * Region | dBM 00424 * ------------ | :-----: 00425 * AS923 | Max EIRP - 12 00426 * AU915 | Max EIRP - 12 00427 * CN470 | Max EIRP - 12 00428 * CN779 | - 00429 * EU433 | - 00430 * EU868 | Max EIRP - 12 00431 * IN865 | Max EIRP - 12 00432 * KR920 | Max EIRP - 12 00433 * US915 | Max ERP - 12 00434 * US915_HYBRID | Max ERP - 12 00435 */ 00436 #define TX_POWER_6 6 00437 00438 /*! 00439 * Region | dBM 00440 * ------------ | :-----: 00441 * AS923 | Max EIRP - 14 00442 * AU915 | Max EIRP - 14 00443 * CN470 | Max EIRP - 14 00444 * CN779 | - 00445 * EU433 | - 00446 * EU868 | Max EIRP - 14 00447 * IN865 | Max EIRP - 14 00448 * KR920 | Max EIRP - 14 00449 * US915 | Max ERP - 14 00450 * US915_HYBRID | Max ERP - 14 00451 */ 00452 #define TX_POWER_7 7 00453 00454 /*! 00455 * Region | dBM 00456 * ------------ | :-----: 00457 * AS923 | - 00458 * AU915 | Max EIRP - 16 00459 * CN470 | - 00460 * CN779 | - 00461 * EU433 | - 00462 * EU868 | - 00463 * IN865 | Max EIRP - 16 00464 * KR920 | - 00465 * US915 | Max ERP - 16 00466 * US915_HYBRID | Max ERP -16 00467 */ 00468 #define TX_POWER_8 8 00469 00470 /*! 00471 * Region | dBM 00472 * ------------ | :-----: 00473 * AS923 | - 00474 * AU915 | Max EIRP - 18 00475 * CN470 | - 00476 * CN779 | - 00477 * EU433 | - 00478 * EU868 | - 00479 * IN865 | Max EIRP - 18 00480 * KR920 | - 00481 * US915 | Max ERP - 16 00482 * US915_HYBRID | Max ERP - 16 00483 */ 00484 #define TX_POWER_9 9 00485 00486 /*! 00487 * Region | dBM 00488 * ------------ | :-----: 00489 * AS923 | - 00490 * AU915 | Max EIRP - 20 00491 * CN470 | - 00492 * CN779 | - 00493 * EU433 | - 00494 * EU868 | - 00495 * IN865 | Max EIRP - 20 00496 * KR920 | - 00497 * US915 | Max ERP - 10 00498 * US915_HYBRID | Max ERP - 10 00499 */ 00500 #define TX_POWER_10 10 00501 00502 /*! 00503 * RFU 00504 */ 00505 #define TX_POWER_11 11 00506 00507 /*! 00508 * RFU 00509 */ 00510 #define TX_POWER_12 12 00511 00512 /*! 00513 * RFU 00514 */ 00515 #define TX_POWER_13 13 00516 00517 /*! 00518 * RFU 00519 */ 00520 #define TX_POWER_14 14 00521 00522 /*! 00523 * RFU 00524 */ 00525 #define TX_POWER_15 15 00526 00527 /** 00528 * The parameter structure for the function RegionSetBandTxDone. 00529 */ 00530 typedef struct 00531 { 00532 /** 00533 * The channel to update. 00534 */ 00535 uint8_t channel; 00536 /** 00537 * Joined set to true, if the node has joined the network. 00538 */ 00539 bool joined; 00540 /** 00541 * The last TX done time. 00542 */ 00543 lorawan_time_t last_tx_done_time; 00544 } set_band_txdone_params_t; 00545 00546 /** 00547 * The parameter structure for the function RegionApplyCFList. 00548 */ 00549 typedef struct 00550 { 00551 /** 00552 * The payload containing the CF list. 00553 */ 00554 uint8_t* payload; 00555 /** 00556 * The size of the payload. 00557 */ 00558 uint8_t size; 00559 } cflist_params_t; 00560 00561 /** 00562 * TX configuration parameters. 00563 */ 00564 typedef struct 00565 { 00566 /** 00567 * The TX channel. 00568 */ 00569 uint8_t channel; 00570 /** 00571 * The TX datarate. 00572 */ 00573 int8_t datarate; 00574 /** 00575 * The TX power. 00576 */ 00577 int8_t tx_power; 00578 /** 00579 * The Max EIRP, if applicable. 00580 */ 00581 float max_eirp; 00582 /** 00583 * The antenna gain, if applicable. 00584 */ 00585 float antenna_gain; 00586 /** 00587 * The frame length to set up. 00588 */ 00589 uint16_t pkt_len; 00590 } tx_config_params_t; 00591 00592 /** 00593 * This structure contains parameters for ADR request coming from 00594 * network server. 00595 */ 00596 typedef struct 00597 { 00598 /*! 00599 * A pointer to the payload containing the MAC commands. 00600 */ 00601 uint8_t* payload ; 00602 /*! 00603 * The size of the payload. 00604 */ 00605 uint8_t payload_size ; 00606 /*! 00607 * The uplink dwell time. 00608 */ 00609 uint8_t ul_dwell_time ; 00610 /*! 00611 * Set to true, if ADR is enabled. 00612 */ 00613 bool adr_enabled ; 00614 /*! 00615 * The current datarate. 00616 */ 00617 int8_t current_datarate ; 00618 /*! 00619 * The current TX power. 00620 */ 00621 int8_t current_tx_power ; 00622 /*! 00623 * The current number of repetitions. 00624 */ 00625 uint8_t current_nb_rep ; 00626 } adr_req_params_t; 00627 00628 /** 00629 * Structure containing data for local ADR settings 00630 */ 00631 typedef struct link_adr_params_s 00632 { 00633 /** 00634 * The number of repetitions. 00635 */ 00636 uint8_t nb_rep; 00637 /** 00638 * Datarate. 00639 */ 00640 int8_t datarate; 00641 /** 00642 * TX power. 00643 */ 00644 int8_t tx_power; 00645 /** 00646 * Channels mask control field. 00647 */ 00648 uint8_t ch_mask_ctrl; 00649 /** 00650 * Channels mask field. 00651 */ 00652 uint16_t channel_mask; 00653 } link_adr_params_t; 00654 00655 /** 00656 * Structure used to store ADR values received from network 00657 * for verification (legality) purposes. 00658 */ 00659 typedef struct verify_adr_params_s 00660 { 00661 /*! 00662 * The current status of the AdrLinkRequest. 00663 */ 00664 uint8_t status ; 00665 /*! 00666 * Set to true, if ADR is enabled. 00667 */ 00668 bool adr_enabled ; 00669 /*! 00670 * The datarate the AdrLinkRequest wants to set. 00671 */ 00672 int8_t datarate ; 00673 /*! 00674 * The TX power the AdrLinkRequest wants to set. 00675 */ 00676 int8_t tx_power ; 00677 /*! 00678 * The number of repetitions the AdrLinkRequest wants to set. 00679 */ 00680 uint8_t nb_rep ; 00681 /*! 00682 * The current datarate the node is using. 00683 */ 00684 int8_t current_datarate ; 00685 /*! 00686 * The current TX power the node is using. 00687 */ 00688 int8_t current_tx_power ; 00689 /*! 00690 * The current number of repetitions the node is using. 00691 */ 00692 int8_t current_nb_rep ; 00693 00694 /*! 00695 * A pointer to the first element of the channels mask. 00696 */ 00697 uint16_t* channel_mask ; 00698 } verify_adr_params_t; 00699 00700 /** 00701 * Contains rx parameter setup request coming from 00702 * network server. 00703 */ 00704 typedef struct rx_param_setup_req_s 00705 { 00706 /** 00707 * The datarate to set up. 00708 */ 00709 int8_t datarate; 00710 /** 00711 * The datarate offset. 00712 */ 00713 int8_t dr_offset; 00714 /** 00715 * The frequency to set up. 00716 */ 00717 uint32_t frequency; 00718 } rx_param_setup_req_t; 00719 00720 /** 00721 * Contains tx parameter setup request coming from 00722 * network server. 00723 */ 00724 typedef struct tx_param_setup_req_s 00725 { 00726 /** 00727 * The uplink dwell time. 00728 */ 00729 uint8_t ul_dwell_time; 00730 /** 00731 * The downlink dwell time. 00732 */ 00733 uint8_t dl_dwell_time; 00734 /** 00735 * The max EIRP. 00736 */ 00737 uint8_t max_eirp; 00738 } tx_param_setup_req_t; 00739 00740 /** 00741 * A structure that holds new channel parameters coming 00742 * from the network server. 00743 */ 00744 typedef struct new_channel_req_params_s 00745 { 00746 /** 00747 * A pointer to the new channel's parameters. 00748 */ 00749 channel_params_t * new_channel; 00750 /** 00751 * The channel ID. 00752 */ 00753 int8_t channel_id; 00754 00755 } new_channel_req_params_t; 00756 00757 /** 00758 * The parameter structure for the function RegionDlChannelReq. 00759 */ 00760 typedef struct dl_channel_req_params_s 00761 { 00762 /** 00763 * The channel ID to add the frequency. 00764 */ 00765 uint8_t channel_id; 00766 /** 00767 * The alternative frequency for the Rx1 window. 00768 */ 00769 uint32_t rx1_frequency; 00770 } dl_channel_req_params_t; 00771 00772 /*! 00773 * The parameter structure for the function RegionCalcBackOff. 00774 */ 00775 typedef struct backoff_params_s 00776 { 00777 /** 00778 * Set to true, if the node has already joined a network, otherwise false. 00779 */ 00780 bool joined; 00781 /** 00782 * set to true, if the last uplink was a join request. 00783 */ 00784 bool last_tx_was_join_req; 00785 /** 00786 * Set to true, if the duty cycle is enabled, otherwise false. 00787 */ 00788 bool dc_enabled; 00789 /** 00790 * The current channel index. 00791 */ 00792 uint8_t channel; 00793 /** 00794 * Elapsed time since the start of the node. 00795 */ 00796 lorawan_time_t elapsed_time; 00797 /** 00798 * Time-on-air of the last transmission. 00799 */ 00800 lorawan_time_t tx_toa; 00801 00802 } backoff_params_t ; 00803 00804 /** 00805 * The parameter structure for the function RegionNextChannel. 00806 */ 00807 typedef struct channel_selection_params_s 00808 { 00809 /** 00810 * The aggregated time-off time. 00811 */ 00812 lorawan_time_t aggregate_timeoff; 00813 /** 00814 * The time of the last aggregated TX. 00815 */ 00816 lorawan_time_t last_aggregate_tx_time; 00817 /** 00818 * The current datarate. 00819 */ 00820 int8_t current_datarate; 00821 /** 00822 * Set to true, if the node has already joined a network, otherwise false. 00823 */ 00824 bool joined; 00825 /** 00826 * Set to true, if the duty cycle is enabled, otherwise false. 00827 */ 00828 bool dc_enabled; 00829 } channel_selection_params_t; 00830 00831 /*! 00832 * The parameter structure for the function RegionContinuousWave. 00833 */ 00834 typedef struct continuous_wave_mode_params_s 00835 { 00836 /*! 00837 * The current channel index. 00838 */ 00839 uint8_t channel ; 00840 /*! 00841 * The datarate. Used to limit the TX power. 00842 */ 00843 int8_t datarate ; 00844 /*! 00845 * The TX power to set up. 00846 */ 00847 int8_t tx_power ; 00848 /*! 00849 * The max EIRP, if applicable. 00850 */ 00851 float max_eirp ; 00852 /*! 00853 * The antenna gain, if applicable. 00854 */ 00855 float antenna_gain ; 00856 /*! 00857 * Specifies the time the radio will stay in CW mode. 00858 */ 00859 uint16_t timeout ; 00860 } cw_mode_params_t ; 00861 00862 typedef struct { 00863 void *table; 00864 uint8_t size; 00865 } loraphy_table_t; 00866 00867 typedef struct { 00868 channel_params_t *channel_list; 00869 uint8_t channel_list_size; 00870 00871 uint16_t *mask; 00872 uint16_t *default_mask; 00873 uint8_t mask_size; 00874 00875 } loraphy_channels_t; 00876 00877 typedef struct { 00878 bool duty_cycle_enabled; 00879 bool accept_tx_param_setup_req; 00880 bool fsk_supported; 00881 bool cflist_supported; 00882 bool custom_channelplans_supported; 00883 bool dl_channel_req_supported; 00884 00885 uint8_t default_channel_cnt; 00886 uint8_t cflist_channel_cnt; 00887 uint8_t max_channel_cnt; 00888 uint8_t min_tx_power; 00889 uint8_t max_tx_power; 00890 uint8_t default_tx_power; 00891 uint8_t adr_ack_limit; 00892 uint8_t adr_ack_delay; 00893 00894 uint8_t min_tx_datarate; 00895 uint8_t max_tx_datarate; 00896 uint8_t min_rx_datarate; 00897 uint8_t max_rx_datarate; 00898 uint8_t default_datarate; 00899 uint8_t default_max_datarate; 00900 uint8_t min_rx1_dr_offset; 00901 uint8_t max_rx1_dr_offset; 00902 uint8_t default_rx1_dr_offset; 00903 uint8_t dwell_limit_datarate; 00904 00905 uint16_t max_rx_window; 00906 uint16_t recv_delay1; 00907 uint16_t recv_delay2; 00908 uint16_t join_accept_delay1; 00909 uint16_t join_accept_delay2; 00910 uint16_t join_channel_mask; 00911 uint16_t max_fcnt_gap; 00912 uint16_t ack_timeout; 00913 uint16_t ack_timeout_rnd; 00914 00915 float default_max_eirp; 00916 float default_antenna_gain; 00917 00918 uint8_t rx_window2_datarate; 00919 uint32_t rx_window2_frequency; 00920 00921 loraphy_table_t bands; 00922 loraphy_table_t bandwidths; 00923 loraphy_table_t datarates; 00924 loraphy_table_t payloads; 00925 loraphy_table_t payloads_with_repeater; 00926 00927 loraphy_channels_t channels; 00928 00929 00930 unsigned ul_dwell_time_setting : 1; 00931 unsigned dl_dwell_time_setting : 1; 00932 00933 } loraphy_params_t; 00934 00935 00936 #endif /* MBED_OS_LORA_PHY_DATASTRUCTURES_ */
Generated on Tue Jul 12 2022 12:21:58 by
