From 38f748c1af154c97d323f50554499a02c1e24a66 Mon Sep 17 00:00:00 2001
From: StevenCellist <47155822+StevenCellist@users.noreply.github.com>
Date: Mon, 28 Oct 2024 13:21:58 +0000
Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20=20@=2019b09?=
=?UTF-8?q?a0de13b3e50639d0843146b701584617dd7=20=F0=9F=9A=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
_lo_ra_w_a_n_8h_source.html | 1619 ++++++++++++++-------------
_physical_layer_8h_source.html | 6 +-
functions_b.html | 2 +-
functions_vars.html | 2 +-
navtreeindex7.js | 2 +-
search/all_1.js | 2 +-
search/variables_1.js | 2 +-
struct_lr_fhss_rate__t-members.html | 2 +-
struct_lr_fhss_rate__t.html | 8 +-
struct_lr_fhss_rate__t.js | 2 +-
10 files changed, 824 insertions(+), 823 deletions(-)
diff --git a/_lo_ra_w_a_n_8h_source.html b/_lo_ra_w_a_n_8h_source.html
index afb7d1f3..0a317e6b 100644
--- a/_lo_ra_w_a_n_8h_source.html
+++ b/_lo_ra_w_a_n_8h_source.html
@@ -148,768 +148,769 @@ $(document).ready(function(){initNavTree('_lo_ra_w_a_n_8h_source.html',''); init
60 #define RADIOLIB_LORAWAN_DATA_RATE_SF_9 (0x02 << 3)
61 #define RADIOLIB_LORAWAN_DATA_RATE_SF_8 (0x01 << 3)
62 #define RADIOLIB_LORAWAN_DATA_RATE_SF_7 (0x00 << 3)
- 63 #define RADIOLIB_LORAWAN_DATA_RATE_BW (0x03 << 1)
+ 63 #define RADIOLIB_LORAWAN_DATA_RATE_BW (0x03 << 1)
64 #define RADIOLIB_LORAWAN_DATA_RATE_BW_125_KHZ (0x00 << 1)
65 #define RADIOLIB_LORAWAN_DATA_RATE_BW_250_KHZ (0x01 << 1)
66 #define RADIOLIB_LORAWAN_DATA_RATE_BW_500_KHZ (0x02 << 1)
67 #define RADIOLIB_LORAWAN_DATA_RATE_BW_137_KHZ (0x00 << 1)
68 #define RADIOLIB_LORAWAN_DATA_RATE_BW_336_KHZ (0x01 << 1)
69 #define RADIOLIB_LORAWAN_DATA_RATE_BW_1523_KHZ (0x02 << 1)
- 70 #define RADIOLIB_LORAWAN_DATA_RATE_CR_1_3 (0x00 << 0)
- 71 #define RADIOLIB_LORAWAN_DATA_RATE_CR_2_3 (0x01 << 0)
- 72 #define RADIOLIB_LORAWAN_DATA_RATE_UNUSED (0xFF << 0)
-
-
- 75 #define RADIOLIB_LORAWAN_UPLINK (0x00 << 0)
- 76 #define RADIOLIB_LORAWAN_DOWNLINK (0x01 << 0)
- 77 #define RADIOLIB_LORAWAN_DIR_RX2 (0x02 << 0)
- 78 #define RADIOLIB_LORAWAN_BAND_DYNAMIC (0)
- 79 #define RADIOLIB_LORAWAN_BAND_FIXED (1)
- 80 #define RADIOLIB_LORAWAN_CHANNEL_NUM_DATARATES (15)
- 81 #define RADIOLIB_LORAWAN_CHANNEL_INDEX_NONE (0xFF >> 0)
-
-
- 84 #define RADIOLIB_LORAWAN_RECEIVE_DELAY_1_MS (1000)
- 85 #define RADIOLIB_LORAWAN_RECEIVE_DELAY_2_MS ((RADIOLIB_LORAWAN_RECEIVE_DELAY_1_MS) + 1000)
- 86 #define RADIOLIB_LORAWAN_RX1_DR_OFFSET (0)
- 87 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_DELAY_1_MS (5000)
- 88 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_DELAY_2_MS (6000)
- 89 #define RADIOLIB_LORAWAN_MAX_FCNT_GAP (16384)
- 90 #define RADIOLIB_LORAWAN_ADR_ACK_LIMIT_EXP (0x06)
- 91 #define RADIOLIB_LORAWAN_ADR_ACK_DELAY_EXP (0x05)
- 92 #define RADIOLIB_LORAWAN_RETRANSMIT_TIMEOUT_MIN_MS (1000)
- 93 #define RADIOLIB_LORAWAN_RETRANSMIT_TIMEOUT_MAX_MS (3000)
- 94 #define RADIOLIB_LORAWAN_POWER_STEP_SIZE_DBM (-2)
- 95 #define RADIOLIB_LORAWAN_REJOIN_MAX_COUNT_N (10)
- 96 #define RADIOLIB_LORAWAN_REJOIN_MAX_TIME_N (15)
-
-
- 99 #define RADIOLIB_LORAWAN_JOIN_REQUEST_LEN (23)
- 100 #define RADIOLIB_LORAWAN_JOIN_REQUEST_JOIN_EUI_POS (1)
- 101 #define RADIOLIB_LORAWAN_JOIN_REQUEST_DEV_EUI_POS (9)
- 102 #define RADIOLIB_LORAWAN_JOIN_REQUEST_DEV_NONCE_POS (17)
- 103 #define RADIOLIB_LORAWAN_JOIN_REQUEST_TYPE (0xFF)
- 104 #define RADIOLIB_LORAWAN_JOIN_REQUEST_TYPE_0 (0x00)
- 105 #define RADIOLIB_LORAWAN_JOIN_REQUEST_TYPE_1 (0x01)
- 106 #define RADIOLIB_LORAWAN_JOIN_REQUEST_TYPE_2 (0x02)
-
-
- 109 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_MAX_LEN (33)
- 110 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_JOIN_NONCE_POS (1)
- 111 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_HOME_NET_ID_POS (4)
- 112 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_DEV_ADDR_POS (7)
- 113 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_DL_SETTINGS_POS (11)
- 114 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_RX_DELAY_POS (12)
- 115 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_CFLIST_POS (13)
- 116 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_CFLIST_LEN (16)
- 117 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_CFLIST_TYPE_POS (RADIOLIB_LORAWAN_JOIN_ACCEPT_CFLIST_POS + RADIOLIB_LORAWAN_JOIN_ACCEPT_CFLIST_LEN - 1)
-
-
- 120 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_AES_JOIN_NONCE_POS (1)
- 121 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_AES_JOIN_EUI_POS (4)
- 122 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_AES_DEV_NONCE_POS (12)
- 123 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_AES_DEV_ADDR_POS (1)
-
-
- 126 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_R_1_0 (0x00 << 7)
- 127 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_R_1_1 (0x01 << 7)
- 128 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_F_NWK_S_INT_KEY (0x01)
- 129 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_APP_S_KEY (0x02)
- 130 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_S_NWK_S_INT_KEY (0x03)
- 131 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_NWK_S_ENC_KEY (0x04)
- 132 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_JS_ENC_KEY (0x05)
- 133 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_JS_INT_KEY (0x06)
- 134 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_ROOT_WOR_S_KEY (0x01)
- 135 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_WOR_S_INT_KEY (0x01)
- 136 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_WOR_S_ENC_KEY (0x02)
-
-
- 139 #define RADIOLIB_LORAWAN_FHDR_LEN_START_OFFS (16)
- 140 #define RADIOLIB_LORAWAN_FHDR_DEV_ADDR_POS (RADIOLIB_LORAWAN_FHDR_LEN_START_OFFS + 1)
- 141 #define RADIOLIB_LORAWAN_FHDR_FCTRL_POS (RADIOLIB_LORAWAN_FHDR_LEN_START_OFFS + 5)
- 142 #define RADIOLIB_LORAWAN_FHDR_FCNT_POS (RADIOLIB_LORAWAN_FHDR_LEN_START_OFFS + 6)
- 143 #define RADIOLIB_LORAWAN_FHDR_FOPTS_POS (RADIOLIB_LORAWAN_FHDR_LEN_START_OFFS + 8)
- 144 #define RADIOLIB_LORAWAN_FHDR_FOPTS_LEN_MASK (0x0F)
- 145 #define RADIOLIB_LORAWAN_FHDR_FOPTS_MAX_LEN (15)
- 146 #define RADIOLIB_LORAWAN_FHDR_FPORT_POS(FOPTS) (RADIOLIB_LORAWAN_FHDR_LEN_START_OFFS + 8 + (FOPTS))
- 147 #define RADIOLIB_LORAWAN_FRAME_PAYLOAD_POS(FOPTS) (RADIOLIB_LORAWAN_FHDR_LEN_START_OFFS + 9 + (FOPTS))
- 148 #define RADIOLIB_LORAWAN_FRAME_LEN(PAYLOAD, FOPTS) (16 + 13 + (PAYLOAD) + (FOPTS))
-
-
- 151 #define RADIOLIB_LORAWAN_BLOCK_MAGIC_POS (0)
- 152 #define RADIOLIB_LORAWAN_BLOCK_CONF_FCNT_POS (1)
- 153 #define RADIOLIB_LORAWAN_BLOCK_DIR_POS (5)
- 154 #define RADIOLIB_LORAWAN_BLOCK_DEV_ADDR_POS (6)
- 155 #define RADIOLIB_LORAWAN_BLOCK_FCNT_POS (10)
-
-
- 158 #define RADIOLIB_LORAWAN_ENC_BLOCK_MAGIC (0x01)
- 159 #define RADIOLIB_LORAWAN_ENC_BLOCK_COUNTER_ID_POS (4)
- 160 #define RADIOLIB_LORAWAN_ENC_BLOCK_COUNTER_POS (15)
-
-
- 163 #define RADIOLIB_LORAWAN_MIC_BLOCK_MAGIC (0x49)
- 164 #define RADIOLIB_LORAWAN_MIC_BLOCK_LEN_POS (15)
- 165 #define RADIOLIB_LORAWAN_MIC_DATA_RATE_POS (3)
- 166 #define RADIOLIB_LORAWAN_MIC_CH_INDEX_POS (4)
-
-
- 169 #define RADIOLIB_LORAWAN_DWELL_TIME (400)
-
-
- 172 #define RADIOLIB_LORAWAN_FCNT_NONE (0xFFFFFFFF)
-
-
- 175 #define RADIOLIB_LORAWAN_DIFS_DEFAULT (2)
- 176 #define RADIOLIB_LORAWAN_BACKOFF_MAX_DEFAULT (6)
- 177 #define RADIOLIB_LORAWAN_MAX_CHANGES_DEFAULT (4)
-
-
- 180 #define RADIOLIB_LORAWAN_NUM_MAC_COMMANDS (23)
-
- 182 #define RADIOLIB_LORAWAN_MAC_RESET (0x01)
- 183 #define RADIOLIB_LORAWAN_MAC_LINK_CHECK (0x02)
- 184 #define RADIOLIB_LORAWAN_MAC_LINK_ADR (0x03)
- 185 #define RADIOLIB_LORAWAN_MAC_DUTY_CYCLE (0x04)
- 186 #define RADIOLIB_LORAWAN_MAC_RX_PARAM_SETUP (0x05)
- 187 #define RADIOLIB_LORAWAN_MAC_DEV_STATUS (0x06)
- 188 #define RADIOLIB_LORAWAN_MAC_NEW_CHANNEL (0x07)
- 189 #define RADIOLIB_LORAWAN_MAC_RX_TIMING_SETUP (0x08)
- 190 #define RADIOLIB_LORAWAN_MAC_TX_PARAM_SETUP (0x09)
- 191 #define RADIOLIB_LORAWAN_MAC_DL_CHANNEL (0x0A)
- 192 #define RADIOLIB_LORAWAN_MAC_REKEY (0x0B)
- 193 #define RADIOLIB_LORAWAN_MAC_ADR_PARAM_SETUP (0x0C)
- 194 #define RADIOLIB_LORAWAN_MAC_DEVICE_TIME (0x0D)
- 195 #define RADIOLIB_LORAWAN_MAC_FORCE_REJOIN (0x0E)
- 196 #define RADIOLIB_LORAWAN_MAC_REJOIN_PARAM_SETUP (0x0F)
- 197 #define RADIOLIB_LORAWAN_MAC_PROPRIETARY (0x80)
-
-
- 200 #define RADIOLIB_LORAWAN_MAC_COMMAND_QUEUE_SIZE (9)
-
-
- 203 #define RADIOLIB_LORAWAN_NUM_AVAILABLE_CHANNELS (16)
-
-
- 206 #define RADIOLIB_LORAWAN_MAX_MAC_COMMAND_LEN_DOWN (5)
- 207 #define RADIOLIB_LORAWAN_MAX_MAC_COMMAND_LEN_UP (2)
- 208 #define RADIOLIB_LORAWAN_MAX_NUM_ADR_COMMANDS (8)
-
-
-
-
-
-
-
-
-
-
-
-
-
- 231 #define RADIOLIB_LORAWAN_MAC_COMMAND_NONE { .cid = 0, .lenDn = 0, .lenUp = 0, .persist = false, .user = false }
-
-
- 234 { RADIOLIB_LORAWAN_MAC_RESET, 1, 1,
false,
false },
- 235 { RADIOLIB_LORAWAN_MAC_LINK_CHECK, 2, 0,
false,
true },
- 236 { RADIOLIB_LORAWAN_MAC_LINK_ADR, 4, 1,
false,
false },
- 237 { RADIOLIB_LORAWAN_MAC_DUTY_CYCLE, 1, 0,
false,
false },
- 238 { RADIOLIB_LORAWAN_MAC_RX_PARAM_SETUP, 4, 1,
true,
false },
- 239 { RADIOLIB_LORAWAN_MAC_DEV_STATUS, 0, 2,
false,
false },
- 240 { RADIOLIB_LORAWAN_MAC_NEW_CHANNEL, 5, 1,
false,
false },
- 241 { RADIOLIB_LORAWAN_MAC_RX_TIMING_SETUP, 1, 0,
true,
false },
- 242 { RADIOLIB_LORAWAN_MAC_TX_PARAM_SETUP, 1, 0,
true,
false },
- 243 { RADIOLIB_LORAWAN_MAC_DL_CHANNEL, 4, 1,
true,
false },
- 244 { RADIOLIB_LORAWAN_MAC_REKEY, 1, 1,
false,
false },
- 245 { RADIOLIB_LORAWAN_MAC_ADR_PARAM_SETUP, 1, 0,
false,
false },
- 246 { RADIOLIB_LORAWAN_MAC_DEVICE_TIME, 5, 0,
false,
true },
- 247 { RADIOLIB_LORAWAN_MAC_FORCE_REJOIN, 2, 0,
false,
false },
- 248 { RADIOLIB_LORAWAN_MAC_REJOIN_PARAM_SETUP, 1, 1,
false,
false },
- 249 { RADIOLIB_LORAWAN_MAC_PROPRIETARY, 5, 0,
false,
true },
-
-
- 252 #define RADIOLIB_LORAWAN_NONCES_VERSION_VAL (0x0001)
-
- 254 enum LoRaWANSchemeBase_t {
- 255 RADIOLIB_LORAWAN_NONCES_START = 0x00,
- 256 RADIOLIB_LORAWAN_NONCES_VERSION = RADIOLIB_LORAWAN_NONCES_START,
- 257 RADIOLIB_LORAWAN_NONCES_MODE = RADIOLIB_LORAWAN_NONCES_VERSION +
sizeof(uint16_t),
- 258 RADIOLIB_LORAWAN_NONCES_CLASS = RADIOLIB_LORAWAN_NONCES_MODE +
sizeof(uint16_t),
- 259 RADIOLIB_LORAWAN_NONCES_PLAN = RADIOLIB_LORAWAN_NONCES_CLASS +
sizeof(uint8_t),
- 260 RADIOLIB_LORAWAN_NONCES_CHECKSUM = RADIOLIB_LORAWAN_NONCES_PLAN +
sizeof(uint8_t),
- 261 RADIOLIB_LORAWAN_NONCES_DEV_NONCE = RADIOLIB_LORAWAN_NONCES_CHECKSUM +
sizeof(uint16_t),
- 262 RADIOLIB_LORAWAN_NONCES_JOIN_NONCE = RADIOLIB_LORAWAN_NONCES_DEV_NONCE +
sizeof(uint16_t),
- 263 RADIOLIB_LORAWAN_NONCES_ACTIVE = RADIOLIB_LORAWAN_NONCES_JOIN_NONCE + 3,
- 264 RADIOLIB_LORAWAN_NONCES_SIGNATURE = RADIOLIB_LORAWAN_NONCES_ACTIVE +
sizeof(uint8_t),
- 265 RADIOLIB_LORAWAN_NONCES_BUF_SIZE = RADIOLIB_LORAWAN_NONCES_SIGNATURE +
sizeof(uint16_t)
-
-
- 268 enum LoRaWANSchemeSession_t {
- 269 RADIOLIB_LORAWAN_SESSION_START = 0x00,
- 270 RADIOLIB_LORAWAN_SESSION_NWK_SENC_KEY = RADIOLIB_LORAWAN_SESSION_START,
- 271 RADIOLIB_LORAWAN_SESSION_APP_SKEY = RADIOLIB_LORAWAN_SESSION_NWK_SENC_KEY + RADIOLIB_AES128_KEY_SIZE,
- 272 RADIOLIB_LORAWAN_SESSION_FNWK_SINT_KEY = RADIOLIB_LORAWAN_SESSION_APP_SKEY + RADIOLIB_AES128_KEY_SIZE,
- 273 RADIOLIB_LORAWAN_SESSION_SNWK_SINT_KEY = RADIOLIB_LORAWAN_SESSION_FNWK_SINT_KEY + RADIOLIB_AES128_KEY_SIZE,
- 274 RADIOLIB_LORAWAN_SESSION_DEV_ADDR = RADIOLIB_LORAWAN_SESSION_SNWK_SINT_KEY + RADIOLIB_AES128_KEY_SIZE,
- 275 RADIOLIB_LORAWAN_SESSION_NONCES_SIGNATURE = RADIOLIB_LORAWAN_SESSION_DEV_ADDR +
sizeof(uint32_t),
- 276 RADIOLIB_LORAWAN_SESSION_FCNT_UP = RADIOLIB_LORAWAN_SESSION_NONCES_SIGNATURE + 2,
- 277 RADIOLIB_LORAWAN_SESSION_N_FCNT_DOWN = RADIOLIB_LORAWAN_SESSION_FCNT_UP +
sizeof(uint32_t),
- 278 RADIOLIB_LORAWAN_SESSION_A_FCNT_DOWN = RADIOLIB_LORAWAN_SESSION_N_FCNT_DOWN +
sizeof(uint32_t),
- 279 RADIOLIB_LORAWAN_SESSION_ADR_FCNT = RADIOLIB_LORAWAN_SESSION_A_FCNT_DOWN +
sizeof(uint32_t),
- 280 RADIOLIB_LORAWAN_SESSION_CONF_FCNT_UP = RADIOLIB_LORAWAN_SESSION_ADR_FCNT +
sizeof(uint32_t),
- 281 RADIOLIB_LORAWAN_SESSION_CONF_FCNT_DOWN = RADIOLIB_LORAWAN_SESSION_CONF_FCNT_UP +
sizeof(uint32_t),
- 282 RADIOLIB_LORAWAN_SESSION_RJ_COUNT0 = RADIOLIB_LORAWAN_SESSION_CONF_FCNT_DOWN +
sizeof(uint32_t),
- 283 RADIOLIB_LORAWAN_SESSION_RJ_COUNT1 = RADIOLIB_LORAWAN_SESSION_RJ_COUNT0 +
sizeof(uint16_t),
- 284 RADIOLIB_LORAWAN_SESSION_HOMENET_ID = RADIOLIB_LORAWAN_SESSION_RJ_COUNT1 +
sizeof(uint16_t),
- 285 RADIOLIB_LORAWAN_SESSION_VERSION = RADIOLIB_LORAWAN_SESSION_HOMENET_ID +
sizeof(uint32_t),
- 286 RADIOLIB_LORAWAN_SESSION_LINK_ADR = RADIOLIB_LORAWAN_SESSION_VERSION +
sizeof(uint8_t),
- 287 RADIOLIB_LORAWAN_SESSION_DUTY_CYCLE = RADIOLIB_LORAWAN_SESSION_LINK_ADR + 14,
- 288 RADIOLIB_LORAWAN_SESSION_RX_PARAM_SETUP = RADIOLIB_LORAWAN_SESSION_DUTY_CYCLE + 1,
- 289 RADIOLIB_LORAWAN_SESSION_RX_TIMING_SETUP = RADIOLIB_LORAWAN_SESSION_RX_PARAM_SETUP + 4,
- 290 RADIOLIB_LORAWAN_SESSION_TX_PARAM_SETUP = RADIOLIB_LORAWAN_SESSION_RX_TIMING_SETUP + 1,
- 291 RADIOLIB_LORAWAN_SESSION_ADR_PARAM_SETUP = RADIOLIB_LORAWAN_SESSION_TX_PARAM_SETUP + 1,
- 292 RADIOLIB_LORAWAN_SESSION_REJOIN_PARAM_SETUP = RADIOLIB_LORAWAN_SESSION_ADR_PARAM_SETUP + 1,
- 293 RADIOLIB_LORAWAN_SESSION_BEACON_FREQ = RADIOLIB_LORAWAN_SESSION_REJOIN_PARAM_SETUP + 1,
- 294 RADIOLIB_LORAWAN_SESSION_PING_SLOT_CHANNEL = RADIOLIB_LORAWAN_SESSION_BEACON_FREQ + 3,
- 295 RADIOLIB_LORAWAN_SESSION_PERIODICITY = RADIOLIB_LORAWAN_SESSION_PING_SLOT_CHANNEL + 4,
- 296 RADIOLIB_LORAWAN_SESSION_LAST_TIME = RADIOLIB_LORAWAN_SESSION_PERIODICITY + 1,
- 297 RADIOLIB_LORAWAN_SESSION_UL_CHANNELS = RADIOLIB_LORAWAN_SESSION_LAST_TIME + 4,
- 298 RADIOLIB_LORAWAN_SESSION_DL_CHANNELS = RADIOLIB_LORAWAN_SESSION_UL_CHANNELS + RADIOLIB_LORAWAN_NUM_AVAILABLE_CHANNELS*5,
- 299 RADIOLIB_LORAWAN_SESSION_AVAILABLE_CHANNELS = RADIOLIB_LORAWAN_SESSION_DL_CHANNELS + RADIOLIB_LORAWAN_NUM_AVAILABLE_CHANNELS*4,
- 300 RADIOLIB_LORAWAN_SESSION_MAC_QUEUE = RADIOLIB_LORAWAN_SESSION_AVAILABLE_CHANNELS +
sizeof(uint16_t),
- 301 RADIOLIB_LORAWAN_SESSION_MAC_QUEUE_LEN = RADIOLIB_LORAWAN_SESSION_MAC_QUEUE + RADIOLIB_LORAWAN_FHDR_FOPTS_MAX_LEN,
- 302 RADIOLIB_LORAWAN_SESSION_SIGNATURE = RADIOLIB_LORAWAN_SESSION_MAC_QUEUE_LEN +
sizeof(uint8_t),
- 303 RADIOLIB_LORAWAN_SESSION_BUF_SIZE = RADIOLIB_LORAWAN_SESSION_SIGNATURE +
sizeof(uint16_t)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 335 #define RADIOLIB_LORAWAN_CHANNEL_NONE { .enabled = false, .idx = RADIOLIB_LORAWAN_CHANNEL_INDEX_NONE, .freq = 0, \
- 336 .drMin = 0, .drMax = 0, .dr = RADIOLIB_LORAWAN_DATA_RATE_UNUSED, .available = false }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 364 #define RADIOLIB_LORAWAN_CHANNEL_SPAN_NONE { .numChannels = 0, .freqStart = 0, .freqStep = 0, .drMin = 0, .drMax = 0, .drJoinRequest = RADIOLIB_LORAWAN_DATA_RATE_UNUSED }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 419 uint8_t rx1DrTable[RADIOLIB_LORAWAN_CHANNEL_NUM_DATARATES][8];
-
-
-
-
-
-
-
- 431 uint8_t
dataRates[RADIOLIB_LORAWAN_CHANNEL_NUM_DATARATES];
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 467 #define RADIOLIB_LORAWAN_NUM_SUPPORTED_BANDS (BandLast - BandEU868)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 578 int16_t
beginOTAA(uint64_t joinEUI, uint64_t devEUI, uint8_t* nwkKey, uint8_t* appKey);
-
- 590 int16_t
beginABP(uint32_t addr, uint8_t* fNwkSIntKey, uint8_t* sNwkSIntKey, uint8_t* nwkSEncKey, uint8_t* appSKey);
-
-
-
- 606 virtual int16_t
activateABP(uint8_t initialDr = RADIOLIB_LORAWAN_DATA_RATE_UNUSED);
-
-
-
- 611 #if defined(RADIOLIB_BUILD_ARDUINO)
-
-
-
-
-
-
-
-
-
- 683 virtual int16_t
sendReceive(uint8_t* dataUp,
size_t lenUp, uint8_t fPort, uint8_t* dataDown,
size_t* lenDown,
bool isConfirmed =
false,
LoRaWANEvent_t* eventUp = NULL,
LoRaWANEvent_t* eventDown = NULL);
-
-
-
-
-
- 713 int16_t
getMacDeviceTimeAns(uint32_t* gpsEpoch, uint8_t* fraction,
bool returnUnix =
true);
-
-
-
-
-
-
-
- 741 void setADR(
bool enable =
true);
-
-
-
-
-
- 766 void setCSMA(
bool csmaEnabled, uint8_t maxChanges = 4, uint8_t backoffMax = 0, uint8_t difsSlots = 2);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 859 #if !RADIOLIB_GODMODE
-
-
-
-
-
-
- 866 uint8_t bufferNonces[RADIOLIB_LORAWAN_NONCES_BUF_SIZE] = { 0 };
-
-
- 869 uint8_t bufferSession[RADIOLIB_LORAWAN_SESSION_BUF_SIZE] = { 0 };
-
- 871 uint8_t fOptsUp[RADIOLIB_LORAWAN_FHDR_FOPTS_MAX_LEN] = { 0 };
- 872 uint8_t fOptsDown[RADIOLIB_LORAWAN_FHDR_FOPTS_MAX_LEN] = { 0 };
- 873 uint8_t fOptsUpLen = 0;
- 874 uint8_t fOptsDownLen = 0;
-
- 876 uint16_t lwMode = RADIOLIB_LORAWAN_MODE_NONE;
- 877 uint8_t lwClass = RADIOLIB_LORAWAN_CLASS_A;
- 878 bool isActive =
false;
-
- 880 uint64_t joinEUI = 0;
-
- 882 uint8_t nwkKey[RADIOLIB_AES128_KEY_SIZE] = { 0 };
- 883 uint8_t appKey[RADIOLIB_AES128_KEY_SIZE] = { 0 };
-
-
-
- 887 uint32_t devAddr = 0;
- 888 uint8_t appSKey[RADIOLIB_AES128_KEY_SIZE] = { 0 };
- 889 uint8_t fNwkSIntKey[RADIOLIB_AES128_KEY_SIZE] = { 0 };
- 890 uint8_t sNwkSIntKey[RADIOLIB_AES128_KEY_SIZE] = { 0 };
- 891 uint8_t nwkSEncKey[RADIOLIB_AES128_KEY_SIZE] = { 0 };
- 892 uint8_t jSIntKey[RADIOLIB_AES128_KEY_SIZE] = { 0 };
-
- 894 uint16_t keyCheckSum = 0;
-
-
- 897 uint16_t devNonce = 0;
- 898 uint32_t joinNonce = 0;
-
-
- 901 uint32_t homeNetId = 0;
- 902 uint8_t adrLimitExp = RADIOLIB_LORAWAN_ADR_ACK_LIMIT_EXP;
- 903 uint8_t adrDelayExp = RADIOLIB_LORAWAN_ADR_ACK_DELAY_EXP;
-
- 905 uint8_t txPowerSteps = 0;
- 906 uint8_t txPowerMax = 0;
-
- 908 uint32_t aFCntDown = 0;
- 909 uint32_t nFCntDown = 0;
- 910 uint32_t confFCntUp = RADIOLIB_LORAWAN_FCNT_NONE;
- 911 uint32_t confFCntDown = RADIOLIB_LORAWAN_FCNT_NONE;
- 912 uint32_t adrFCnt = 0;
-
-
- 915 bool adrEnabled =
true;
-
-
- 918 bool dutyCycleEnabled =
false;
- 919 uint32_t dutyCycle = 0;
-
-
- 922 bool dwellTimeEnabledUp =
false;
- 923 uint16_t dwellTimeUp = 0;
- 924 bool dwellTimeEnabledDn =
false;
- 925 uint16_t dwellTimeDn = 0;
-
-
-
-
-
- 931 bool csmaEnabled =
false;
-
-
- 934 uint8_t maxChanges = RADIOLIB_LORAWAN_MAX_CHANGES_DEFAULT;
-
-
-
-
- 939 uint8_t backoffMax = RADIOLIB_LORAWAN_BACKOFF_MAX_DEFAULT;
-
-
- 942 uint8_t difsSlots = RADIOLIB_LORAWAN_DIFS_DEFAULT;
-
-
-
-
-
- 948 LoRaWANChannel_t channels[3] = { RADIOLIB_LORAWAN_CHANNEL_NONE, RADIOLIB_LORAWAN_CHANNEL_NONE,
- 949 RADIOLIB_LORAWAN_CHANNEL_NONE };
-
-
-
- 953 RadioLibTime_t rxDelays[3] = { 0, RADIOLIB_LORAWAN_RECEIVE_DELAY_1_MS, RADIOLIB_LORAWAN_RECEIVE_DELAY_2_MS };
-
-
- 956 uint8_t rx1DrOffset = 0;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 971 uint8_t battLevel = 0xFF;
-
-
- 974 bool isMACPayload =
false;
-
-
-
-
-
-
-
-
-
-
-
- 986 void createSession(uint16_t lwMode, uint8_t initialDr);
-
-
- 989 void composeJoinRequest(uint8_t* joinRequestMsg);
-
-
-
-
-
- 995 void processCFList(uint8_t* cfList);
-
-
- 998 int16_t isValidUplink(uint8_t* len, uint8_t fPort);
-
-
-
-
-
- 1004 void composeUplink(uint8_t* in, uint8_t lenIn, uint8_t* out, uint8_t fPort,
bool isConfirmed);
-
-
- 1007 void micUplink(uint8_t* inOut, uint8_t lenInOut);
-
-
- 1010 int16_t transmitUplink(
LoRaWANChannel_t* chnl, uint8_t* in, uint8_t len,
bool retrans);
-
-
-
-
-
- 1016 int16_t parseDownlink(uint8_t* data,
size_t* len,
LoRaWANEvent_t* event = NULL);
-
-
- 1019 bool execMacCommand(uint8_t cid, uint8_t* optIn, uint8_t lenIn);
- 1020 bool execMacCommand(uint8_t cid, uint8_t* optIn, uint8_t lenIn, uint8_t* optOut);
-
-
- 1023 virtual bool derivedMacHandler(uint8_t cid, uint8_t* optIn, uint8_t lenIn, uint8_t* optOut);
-
-
- 1026 void preprocessMacLinkAdr(uint8_t* mPtr, uint8_t cLen, uint8_t* mAdrOpt);
-
-
- 1029 void postprocessMacLinkAdr(uint8_t* ack, uint8_t cLen);
-
-
-
-
-
-
-
-
-
- 1039 int16_t getMacLen(uint8_t cid, uint8_t* len, uint8_t dir,
bool inclusive =
false);
-
-
-
-
- 1044 bool isPersistentMacCommand(uint8_t cid, uint8_t dir);
-
-
- 1047 int16_t pushMacCommand(uint8_t cid, uint8_t* cOcts, uint8_t* out, uint8_t* lenOut, uint8_t dir);
-
-
- 1050 int16_t getMacPayload(uint8_t cid, uint8_t* in, uint8_t lenIn, uint8_t* out, uint8_t dir);
-
-
- 1053 int16_t deleteMacCommand(uint8_t cid, uint8_t* inOut, uint8_t* lenInOut, uint8_t dir);
-
-
- 1056 void clearMacCommands(uint8_t* inOut, uint8_t* lenInOut, uint8_t dir);
-
-
- 1059 int16_t setPhyProperties(
const LoRaWANChannel_t* chnl, uint8_t dir, int8_t pwr,
size_t pre = 0);
-
-
- 1062 bool csmaChannelClear(uint8_t difs, uint8_t numBackoff);
-
-
- 1065 bool cadChannelClear();
-
-
- 1068 void getChannelPlanMask(uint64_t* chMaskGrp0123, uint32_t* chMaskGrp45);
-
-
-
-
- 1073 void selectChannelPlanDyn(
bool joinRequest =
false);
-
-
-
- 1077 void selectChannelPlanFix();
-
-
-
- 1081 uint8_t getAvailableChannels(uint16_t* mask);
-
-
- 1084 void setAvailableChannels(uint16_t mask);
-
-
- 1087 int16_t selectChannels();
-
-
- 1090 bool applyChannelMask(uint64_t chMaskGrp0123, uint32_t chMaskGrp45);
-
- 1092 #if RADIOLIB_DEBUG_PROTOCOL
-
- 1094 void printChannels();
-
-
-
- 1098 uint32_t generateMIC(uint8_t* msg,
size_t len, uint8_t* key);
-
-
-
- 1102 bool verifyMIC(uint8_t* msg,
size_t len, uint8_t* key);
-
-
- 1105 int16_t findDataRate(uint8_t dr,
DataRate_t* dataRate);
-
-
- 1108 void processAES(
const uint8_t* in,
size_t len, uint8_t* key, uint8_t* out, uint32_t fCnt, uint8_t dir, uint8_t ctrId,
bool counter);
-
-
- 1111 static uint16_t checkSum16(
const uint8_t *key, uint16_t keyLen);
-
-
- 1114 static int16_t checkBufferCommon(uint8_t *buffer, uint16_t size);
-
-
- 1117 template<
typename T>
- 1118 static T ntoh(uint8_t* buff,
size_t size = 0);
-
-
- 1121 template<
typename T>
- 1122 static void hton(uint8_t* buff, T val,
size_t size = 0);
-
-
- 1125 template<
typename T>
- 1126 T LoRaWANNode::ntoh(uint8_t* buff,
size_t size) {
- 1127 uint8_t* buffPtr = buff;
- 1128 size_t targetSize =
sizeof(T);
-
-
-
-
- 1133 for(
size_t i = 0; i < targetSize; i++) {
- 1134 res |= (uint32_t)(*(buffPtr++)) << 8*i;
-
-
-
-
- 1139 template<
typename T>
- 1140 void LoRaWANNode::hton(uint8_t* buff, T val,
size_t size) {
- 1141 uint8_t* buffPtr = buff;
- 1142 size_t targetSize =
sizeof(T);
-
-
-
- 1146 for(
size_t i = 0; i < targetSize; i++) {
- 1147 *(buffPtr++) = val >> 8*i;
-
-
-
-
-LoRaWAN-compatible node (class A device).
Definition: LoRaWAN.h:528
+ 70 #define RADIOLIB_LORAWAN_DATA_RATE_CR (0x01 << 0)
+ 71 #define RADIOLIB_LORAWAN_DATA_RATE_CR_1_3 (0x00 << 0)
+ 72 #define RADIOLIB_LORAWAN_DATA_RATE_CR_2_3 (0x01 << 0)
+ 73 #define RADIOLIB_LORAWAN_DATA_RATE_UNUSED (0xFF << 0)
+
+
+ 76 #define RADIOLIB_LORAWAN_UPLINK (0x00 << 0)
+ 77 #define RADIOLIB_LORAWAN_DOWNLINK (0x01 << 0)
+ 78 #define RADIOLIB_LORAWAN_DIR_RX2 (0x02 << 0)
+ 79 #define RADIOLIB_LORAWAN_BAND_DYNAMIC (0)
+ 80 #define RADIOLIB_LORAWAN_BAND_FIXED (1)
+ 81 #define RADIOLIB_LORAWAN_CHANNEL_NUM_DATARATES (15)
+ 82 #define RADIOLIB_LORAWAN_CHANNEL_INDEX_NONE (0xFF >> 0)
+
+
+ 85 #define RADIOLIB_LORAWAN_RECEIVE_DELAY_1_MS (1000)
+ 86 #define RADIOLIB_LORAWAN_RECEIVE_DELAY_2_MS ((RADIOLIB_LORAWAN_RECEIVE_DELAY_1_MS) + 1000)
+ 87 #define RADIOLIB_LORAWAN_RX1_DR_OFFSET (0)
+ 88 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_DELAY_1_MS (5000)
+ 89 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_DELAY_2_MS (6000)
+ 90 #define RADIOLIB_LORAWAN_MAX_FCNT_GAP (16384)
+ 91 #define RADIOLIB_LORAWAN_ADR_ACK_LIMIT_EXP (0x06)
+ 92 #define RADIOLIB_LORAWAN_ADR_ACK_DELAY_EXP (0x05)
+ 93 #define RADIOLIB_LORAWAN_RETRANSMIT_TIMEOUT_MIN_MS (1000)
+ 94 #define RADIOLIB_LORAWAN_RETRANSMIT_TIMEOUT_MAX_MS (3000)
+ 95 #define RADIOLIB_LORAWAN_POWER_STEP_SIZE_DBM (-2)
+ 96 #define RADIOLIB_LORAWAN_REJOIN_MAX_COUNT_N (10)
+ 97 #define RADIOLIB_LORAWAN_REJOIN_MAX_TIME_N (15)
+
+
+ 100 #define RADIOLIB_LORAWAN_JOIN_REQUEST_LEN (23)
+ 101 #define RADIOLIB_LORAWAN_JOIN_REQUEST_JOIN_EUI_POS (1)
+ 102 #define RADIOLIB_LORAWAN_JOIN_REQUEST_DEV_EUI_POS (9)
+ 103 #define RADIOLIB_LORAWAN_JOIN_REQUEST_DEV_NONCE_POS (17)
+ 104 #define RADIOLIB_LORAWAN_JOIN_REQUEST_TYPE (0xFF)
+ 105 #define RADIOLIB_LORAWAN_JOIN_REQUEST_TYPE_0 (0x00)
+ 106 #define RADIOLIB_LORAWAN_JOIN_REQUEST_TYPE_1 (0x01)
+ 107 #define RADIOLIB_LORAWAN_JOIN_REQUEST_TYPE_2 (0x02)
+
+
+ 110 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_MAX_LEN (33)
+ 111 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_JOIN_NONCE_POS (1)
+ 112 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_HOME_NET_ID_POS (4)
+ 113 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_DEV_ADDR_POS (7)
+ 114 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_DL_SETTINGS_POS (11)
+ 115 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_RX_DELAY_POS (12)
+ 116 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_CFLIST_POS (13)
+ 117 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_CFLIST_LEN (16)
+ 118 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_CFLIST_TYPE_POS (RADIOLIB_LORAWAN_JOIN_ACCEPT_CFLIST_POS + RADIOLIB_LORAWAN_JOIN_ACCEPT_CFLIST_LEN - 1)
+
+
+ 121 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_AES_JOIN_NONCE_POS (1)
+ 122 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_AES_JOIN_EUI_POS (4)
+ 123 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_AES_DEV_NONCE_POS (12)
+ 124 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_AES_DEV_ADDR_POS (1)
+
+
+ 127 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_R_1_0 (0x00 << 7)
+ 128 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_R_1_1 (0x01 << 7)
+ 129 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_F_NWK_S_INT_KEY (0x01)
+ 130 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_APP_S_KEY (0x02)
+ 131 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_S_NWK_S_INT_KEY (0x03)
+ 132 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_NWK_S_ENC_KEY (0x04)
+ 133 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_JS_ENC_KEY (0x05)
+ 134 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_JS_INT_KEY (0x06)
+ 135 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_ROOT_WOR_S_KEY (0x01)
+ 136 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_WOR_S_INT_KEY (0x01)
+ 137 #define RADIOLIB_LORAWAN_JOIN_ACCEPT_WOR_S_ENC_KEY (0x02)
+
+
+ 140 #define RADIOLIB_LORAWAN_FHDR_LEN_START_OFFS (16)
+ 141 #define RADIOLIB_LORAWAN_FHDR_DEV_ADDR_POS (RADIOLIB_LORAWAN_FHDR_LEN_START_OFFS + 1)
+ 142 #define RADIOLIB_LORAWAN_FHDR_FCTRL_POS (RADIOLIB_LORAWAN_FHDR_LEN_START_OFFS + 5)
+ 143 #define RADIOLIB_LORAWAN_FHDR_FCNT_POS (RADIOLIB_LORAWAN_FHDR_LEN_START_OFFS + 6)
+ 144 #define RADIOLIB_LORAWAN_FHDR_FOPTS_POS (RADIOLIB_LORAWAN_FHDR_LEN_START_OFFS + 8)
+ 145 #define RADIOLIB_LORAWAN_FHDR_FOPTS_LEN_MASK (0x0F)
+ 146 #define RADIOLIB_LORAWAN_FHDR_FOPTS_MAX_LEN (15)
+ 147 #define RADIOLIB_LORAWAN_FHDR_FPORT_POS(FOPTS) (RADIOLIB_LORAWAN_FHDR_LEN_START_OFFS + 8 + (FOPTS))
+ 148 #define RADIOLIB_LORAWAN_FRAME_PAYLOAD_POS(FOPTS) (RADIOLIB_LORAWAN_FHDR_LEN_START_OFFS + 9 + (FOPTS))
+ 149 #define RADIOLIB_LORAWAN_FRAME_LEN(PAYLOAD, FOPTS) (16 + 13 + (PAYLOAD) + (FOPTS))
+
+
+ 152 #define RADIOLIB_LORAWAN_BLOCK_MAGIC_POS (0)
+ 153 #define RADIOLIB_LORAWAN_BLOCK_CONF_FCNT_POS (1)
+ 154 #define RADIOLIB_LORAWAN_BLOCK_DIR_POS (5)
+ 155 #define RADIOLIB_LORAWAN_BLOCK_DEV_ADDR_POS (6)
+ 156 #define RADIOLIB_LORAWAN_BLOCK_FCNT_POS (10)
+
+
+ 159 #define RADIOLIB_LORAWAN_ENC_BLOCK_MAGIC (0x01)
+ 160 #define RADIOLIB_LORAWAN_ENC_BLOCK_COUNTER_ID_POS (4)
+ 161 #define RADIOLIB_LORAWAN_ENC_BLOCK_COUNTER_POS (15)
+
+
+ 164 #define RADIOLIB_LORAWAN_MIC_BLOCK_MAGIC (0x49)
+ 165 #define RADIOLIB_LORAWAN_MIC_BLOCK_LEN_POS (15)
+ 166 #define RADIOLIB_LORAWAN_MIC_DATA_RATE_POS (3)
+ 167 #define RADIOLIB_LORAWAN_MIC_CH_INDEX_POS (4)
+
+
+ 170 #define RADIOLIB_LORAWAN_DWELL_TIME (400)
+
+
+ 173 #define RADIOLIB_LORAWAN_FCNT_NONE (0xFFFFFFFF)
+
+
+ 176 #define RADIOLIB_LORAWAN_DIFS_DEFAULT (2)
+ 177 #define RADIOLIB_LORAWAN_BACKOFF_MAX_DEFAULT (6)
+ 178 #define RADIOLIB_LORAWAN_MAX_CHANGES_DEFAULT (4)
+
+
+ 181 #define RADIOLIB_LORAWAN_NUM_MAC_COMMANDS (23)
+
+ 183 #define RADIOLIB_LORAWAN_MAC_RESET (0x01)
+ 184 #define RADIOLIB_LORAWAN_MAC_LINK_CHECK (0x02)
+ 185 #define RADIOLIB_LORAWAN_MAC_LINK_ADR (0x03)
+ 186 #define RADIOLIB_LORAWAN_MAC_DUTY_CYCLE (0x04)
+ 187 #define RADIOLIB_LORAWAN_MAC_RX_PARAM_SETUP (0x05)
+ 188 #define RADIOLIB_LORAWAN_MAC_DEV_STATUS (0x06)
+ 189 #define RADIOLIB_LORAWAN_MAC_NEW_CHANNEL (0x07)
+ 190 #define RADIOLIB_LORAWAN_MAC_RX_TIMING_SETUP (0x08)
+ 191 #define RADIOLIB_LORAWAN_MAC_TX_PARAM_SETUP (0x09)
+ 192 #define RADIOLIB_LORAWAN_MAC_DL_CHANNEL (0x0A)
+ 193 #define RADIOLIB_LORAWAN_MAC_REKEY (0x0B)
+ 194 #define RADIOLIB_LORAWAN_MAC_ADR_PARAM_SETUP (0x0C)
+ 195 #define RADIOLIB_LORAWAN_MAC_DEVICE_TIME (0x0D)
+ 196 #define RADIOLIB_LORAWAN_MAC_FORCE_REJOIN (0x0E)
+ 197 #define RADIOLIB_LORAWAN_MAC_REJOIN_PARAM_SETUP (0x0F)
+ 198 #define RADIOLIB_LORAWAN_MAC_PROPRIETARY (0x80)
+
+
+ 201 #define RADIOLIB_LORAWAN_MAC_COMMAND_QUEUE_SIZE (9)
+
+
+ 204 #define RADIOLIB_LORAWAN_NUM_AVAILABLE_CHANNELS (16)
+
+
+ 207 #define RADIOLIB_LORAWAN_MAX_MAC_COMMAND_LEN_DOWN (5)
+ 208 #define RADIOLIB_LORAWAN_MAX_MAC_COMMAND_LEN_UP (2)
+ 209 #define RADIOLIB_LORAWAN_MAX_NUM_ADR_COMMANDS (8)
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 232 #define RADIOLIB_LORAWAN_MAC_COMMAND_NONE { .cid = 0, .lenDn = 0, .lenUp = 0, .persist = false, .user = false }
+
+
+ 235 { RADIOLIB_LORAWAN_MAC_RESET, 1, 1,
false,
false },
+ 236 { RADIOLIB_LORAWAN_MAC_LINK_CHECK, 2, 0,
false,
true },
+ 237 { RADIOLIB_LORAWAN_MAC_LINK_ADR, 4, 1,
false,
false },
+ 238 { RADIOLIB_LORAWAN_MAC_DUTY_CYCLE, 1, 0,
false,
false },
+ 239 { RADIOLIB_LORAWAN_MAC_RX_PARAM_SETUP, 4, 1,
true,
false },
+ 240 { RADIOLIB_LORAWAN_MAC_DEV_STATUS, 0, 2,
false,
false },
+ 241 { RADIOLIB_LORAWAN_MAC_NEW_CHANNEL, 5, 1,
false,
false },
+ 242 { RADIOLIB_LORAWAN_MAC_RX_TIMING_SETUP, 1, 0,
true,
false },
+ 243 { RADIOLIB_LORAWAN_MAC_TX_PARAM_SETUP, 1, 0,
true,
false },
+ 244 { RADIOLIB_LORAWAN_MAC_DL_CHANNEL, 4, 1,
true,
false },
+ 245 { RADIOLIB_LORAWAN_MAC_REKEY, 1, 1,
false,
false },
+ 246 { RADIOLIB_LORAWAN_MAC_ADR_PARAM_SETUP, 1, 0,
false,
false },
+ 247 { RADIOLIB_LORAWAN_MAC_DEVICE_TIME, 5, 0,
false,
true },
+ 248 { RADIOLIB_LORAWAN_MAC_FORCE_REJOIN, 2, 0,
false,
false },
+ 249 { RADIOLIB_LORAWAN_MAC_REJOIN_PARAM_SETUP, 1, 1,
false,
false },
+ 250 { RADIOLIB_LORAWAN_MAC_PROPRIETARY, 5, 0,
false,
true },
+
+
+ 253 #define RADIOLIB_LORAWAN_NONCES_VERSION_VAL (0x0001)
+
+ 255 enum LoRaWANSchemeBase_t {
+ 256 RADIOLIB_LORAWAN_NONCES_START = 0x00,
+ 257 RADIOLIB_LORAWAN_NONCES_VERSION = RADIOLIB_LORAWAN_NONCES_START,
+ 258 RADIOLIB_LORAWAN_NONCES_MODE = RADIOLIB_LORAWAN_NONCES_VERSION +
sizeof(uint16_t),
+ 259 RADIOLIB_LORAWAN_NONCES_CLASS = RADIOLIB_LORAWAN_NONCES_MODE +
sizeof(uint16_t),
+ 260 RADIOLIB_LORAWAN_NONCES_PLAN = RADIOLIB_LORAWAN_NONCES_CLASS +
sizeof(uint8_t),
+ 261 RADIOLIB_LORAWAN_NONCES_CHECKSUM = RADIOLIB_LORAWAN_NONCES_PLAN +
sizeof(uint8_t),
+ 262 RADIOLIB_LORAWAN_NONCES_DEV_NONCE = RADIOLIB_LORAWAN_NONCES_CHECKSUM +
sizeof(uint16_t),
+ 263 RADIOLIB_LORAWAN_NONCES_JOIN_NONCE = RADIOLIB_LORAWAN_NONCES_DEV_NONCE +
sizeof(uint16_t),
+ 264 RADIOLIB_LORAWAN_NONCES_ACTIVE = RADIOLIB_LORAWAN_NONCES_JOIN_NONCE + 3,
+ 265 RADIOLIB_LORAWAN_NONCES_SIGNATURE = RADIOLIB_LORAWAN_NONCES_ACTIVE +
sizeof(uint8_t),
+ 266 RADIOLIB_LORAWAN_NONCES_BUF_SIZE = RADIOLIB_LORAWAN_NONCES_SIGNATURE +
sizeof(uint16_t)
+
+
+ 269 enum LoRaWANSchemeSession_t {
+ 270 RADIOLIB_LORAWAN_SESSION_START = 0x00,
+ 271 RADIOLIB_LORAWAN_SESSION_NWK_SENC_KEY = RADIOLIB_LORAWAN_SESSION_START,
+ 272 RADIOLIB_LORAWAN_SESSION_APP_SKEY = RADIOLIB_LORAWAN_SESSION_NWK_SENC_KEY + RADIOLIB_AES128_KEY_SIZE,
+ 273 RADIOLIB_LORAWAN_SESSION_FNWK_SINT_KEY = RADIOLIB_LORAWAN_SESSION_APP_SKEY + RADIOLIB_AES128_KEY_SIZE,
+ 274 RADIOLIB_LORAWAN_SESSION_SNWK_SINT_KEY = RADIOLIB_LORAWAN_SESSION_FNWK_SINT_KEY + RADIOLIB_AES128_KEY_SIZE,
+ 275 RADIOLIB_LORAWAN_SESSION_DEV_ADDR = RADIOLIB_LORAWAN_SESSION_SNWK_SINT_KEY + RADIOLIB_AES128_KEY_SIZE,
+ 276 RADIOLIB_LORAWAN_SESSION_NONCES_SIGNATURE = RADIOLIB_LORAWAN_SESSION_DEV_ADDR +
sizeof(uint32_t),
+ 277 RADIOLIB_LORAWAN_SESSION_FCNT_UP = RADIOLIB_LORAWAN_SESSION_NONCES_SIGNATURE + 2,
+ 278 RADIOLIB_LORAWAN_SESSION_N_FCNT_DOWN = RADIOLIB_LORAWAN_SESSION_FCNT_UP +
sizeof(uint32_t),
+ 279 RADIOLIB_LORAWAN_SESSION_A_FCNT_DOWN = RADIOLIB_LORAWAN_SESSION_N_FCNT_DOWN +
sizeof(uint32_t),
+ 280 RADIOLIB_LORAWAN_SESSION_ADR_FCNT = RADIOLIB_LORAWAN_SESSION_A_FCNT_DOWN +
sizeof(uint32_t),
+ 281 RADIOLIB_LORAWAN_SESSION_CONF_FCNT_UP = RADIOLIB_LORAWAN_SESSION_ADR_FCNT +
sizeof(uint32_t),
+ 282 RADIOLIB_LORAWAN_SESSION_CONF_FCNT_DOWN = RADIOLIB_LORAWAN_SESSION_CONF_FCNT_UP +
sizeof(uint32_t),
+ 283 RADIOLIB_LORAWAN_SESSION_RJ_COUNT0 = RADIOLIB_LORAWAN_SESSION_CONF_FCNT_DOWN +
sizeof(uint32_t),
+ 284 RADIOLIB_LORAWAN_SESSION_RJ_COUNT1 = RADIOLIB_LORAWAN_SESSION_RJ_COUNT0 +
sizeof(uint16_t),
+ 285 RADIOLIB_LORAWAN_SESSION_HOMENET_ID = RADIOLIB_LORAWAN_SESSION_RJ_COUNT1 +
sizeof(uint16_t),
+ 286 RADIOLIB_LORAWAN_SESSION_VERSION = RADIOLIB_LORAWAN_SESSION_HOMENET_ID +
sizeof(uint32_t),
+ 287 RADIOLIB_LORAWAN_SESSION_LINK_ADR = RADIOLIB_LORAWAN_SESSION_VERSION +
sizeof(uint8_t),
+ 288 RADIOLIB_LORAWAN_SESSION_DUTY_CYCLE = RADIOLIB_LORAWAN_SESSION_LINK_ADR + 14,
+ 289 RADIOLIB_LORAWAN_SESSION_RX_PARAM_SETUP = RADIOLIB_LORAWAN_SESSION_DUTY_CYCLE + 1,
+ 290 RADIOLIB_LORAWAN_SESSION_RX_TIMING_SETUP = RADIOLIB_LORAWAN_SESSION_RX_PARAM_SETUP + 4,
+ 291 RADIOLIB_LORAWAN_SESSION_TX_PARAM_SETUP = RADIOLIB_LORAWAN_SESSION_RX_TIMING_SETUP + 1,
+ 292 RADIOLIB_LORAWAN_SESSION_ADR_PARAM_SETUP = RADIOLIB_LORAWAN_SESSION_TX_PARAM_SETUP + 1,
+ 293 RADIOLIB_LORAWAN_SESSION_REJOIN_PARAM_SETUP = RADIOLIB_LORAWAN_SESSION_ADR_PARAM_SETUP + 1,
+ 294 RADIOLIB_LORAWAN_SESSION_BEACON_FREQ = RADIOLIB_LORAWAN_SESSION_REJOIN_PARAM_SETUP + 1,
+ 295 RADIOLIB_LORAWAN_SESSION_PING_SLOT_CHANNEL = RADIOLIB_LORAWAN_SESSION_BEACON_FREQ + 3,
+ 296 RADIOLIB_LORAWAN_SESSION_PERIODICITY = RADIOLIB_LORAWAN_SESSION_PING_SLOT_CHANNEL + 4,
+ 297 RADIOLIB_LORAWAN_SESSION_LAST_TIME = RADIOLIB_LORAWAN_SESSION_PERIODICITY + 1,
+ 298 RADIOLIB_LORAWAN_SESSION_UL_CHANNELS = RADIOLIB_LORAWAN_SESSION_LAST_TIME + 4,
+ 299 RADIOLIB_LORAWAN_SESSION_DL_CHANNELS = RADIOLIB_LORAWAN_SESSION_UL_CHANNELS + RADIOLIB_LORAWAN_NUM_AVAILABLE_CHANNELS*5,
+ 300 RADIOLIB_LORAWAN_SESSION_AVAILABLE_CHANNELS = RADIOLIB_LORAWAN_SESSION_DL_CHANNELS + RADIOLIB_LORAWAN_NUM_AVAILABLE_CHANNELS*4,
+ 301 RADIOLIB_LORAWAN_SESSION_MAC_QUEUE = RADIOLIB_LORAWAN_SESSION_AVAILABLE_CHANNELS +
sizeof(uint16_t),
+ 302 RADIOLIB_LORAWAN_SESSION_MAC_QUEUE_LEN = RADIOLIB_LORAWAN_SESSION_MAC_QUEUE + RADIOLIB_LORAWAN_FHDR_FOPTS_MAX_LEN,
+ 303 RADIOLIB_LORAWAN_SESSION_SIGNATURE = RADIOLIB_LORAWAN_SESSION_MAC_QUEUE_LEN +
sizeof(uint8_t),
+ 304 RADIOLIB_LORAWAN_SESSION_BUF_SIZE = RADIOLIB_LORAWAN_SESSION_SIGNATURE +
sizeof(uint16_t)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 336 #define RADIOLIB_LORAWAN_CHANNEL_NONE { .enabled = false, .idx = RADIOLIB_LORAWAN_CHANNEL_INDEX_NONE, .freq = 0, \
+ 337 .drMin = 0, .drMax = 0, .dr = RADIOLIB_LORAWAN_DATA_RATE_UNUSED, .available = false }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 365 #define RADIOLIB_LORAWAN_CHANNEL_SPAN_NONE { .numChannels = 0, .freqStart = 0, .freqStep = 0, .drMin = 0, .drMax = 0, .drJoinRequest = RADIOLIB_LORAWAN_DATA_RATE_UNUSED }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 420 uint8_t rx1DrTable[RADIOLIB_LORAWAN_CHANNEL_NUM_DATARATES][8];
+
+
+
+
+
+
+
+ 432 uint8_t
dataRates[RADIOLIB_LORAWAN_CHANNEL_NUM_DATARATES];
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 468 #define RADIOLIB_LORAWAN_NUM_SUPPORTED_BANDS (BandLast - BandEU868)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 579 int16_t
beginOTAA(uint64_t joinEUI, uint64_t devEUI, uint8_t* nwkKey, uint8_t* appKey);
+
+ 591 int16_t
beginABP(uint32_t addr, uint8_t* fNwkSIntKey, uint8_t* sNwkSIntKey, uint8_t* nwkSEncKey, uint8_t* appSKey);
+
+
+
+ 607 virtual int16_t
activateABP(uint8_t initialDr = RADIOLIB_LORAWAN_DATA_RATE_UNUSED);
+
+
+
+ 612 #if defined(RADIOLIB_BUILD_ARDUINO)
+
+
+
+
+
+
+
+
+
+ 684 virtual int16_t
sendReceive(uint8_t* dataUp,
size_t lenUp, uint8_t fPort, uint8_t* dataDown,
size_t* lenDown,
bool isConfirmed =
false,
LoRaWANEvent_t* eventUp = NULL,
LoRaWANEvent_t* eventDown = NULL);
+
+
+
+
+
+ 714 int16_t
getMacDeviceTimeAns(uint32_t* gpsEpoch, uint8_t* fraction,
bool returnUnix =
true);
+
+
+
+
+
+
+
+ 742 void setADR(
bool enable =
true);
+
+
+
+
+
+ 767 void setCSMA(
bool csmaEnabled, uint8_t maxChanges = 4, uint8_t backoffMax = 0, uint8_t difsSlots = 2);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 860 #if !RADIOLIB_GODMODE
+
+
+
+
+
+
+ 867 uint8_t bufferNonces[RADIOLIB_LORAWAN_NONCES_BUF_SIZE] = { 0 };
+
+
+ 870 uint8_t bufferSession[RADIOLIB_LORAWAN_SESSION_BUF_SIZE] = { 0 };
+
+ 872 uint8_t fOptsUp[RADIOLIB_LORAWAN_FHDR_FOPTS_MAX_LEN] = { 0 };
+ 873 uint8_t fOptsDown[RADIOLIB_LORAWAN_FHDR_FOPTS_MAX_LEN] = { 0 };
+ 874 uint8_t fOptsUpLen = 0;
+ 875 uint8_t fOptsDownLen = 0;
+
+ 877 uint16_t lwMode = RADIOLIB_LORAWAN_MODE_NONE;
+ 878 uint8_t lwClass = RADIOLIB_LORAWAN_CLASS_A;
+ 879 bool isActive =
false;
+
+ 881 uint64_t joinEUI = 0;
+
+ 883 uint8_t nwkKey[RADIOLIB_AES128_KEY_SIZE] = { 0 };
+ 884 uint8_t appKey[RADIOLIB_AES128_KEY_SIZE] = { 0 };
+
+
+
+ 888 uint32_t devAddr = 0;
+ 889 uint8_t appSKey[RADIOLIB_AES128_KEY_SIZE] = { 0 };
+ 890 uint8_t fNwkSIntKey[RADIOLIB_AES128_KEY_SIZE] = { 0 };
+ 891 uint8_t sNwkSIntKey[RADIOLIB_AES128_KEY_SIZE] = { 0 };
+ 892 uint8_t nwkSEncKey[RADIOLIB_AES128_KEY_SIZE] = { 0 };
+ 893 uint8_t jSIntKey[RADIOLIB_AES128_KEY_SIZE] = { 0 };
+
+ 895 uint16_t keyCheckSum = 0;
+
+
+ 898 uint16_t devNonce = 0;
+ 899 uint32_t joinNonce = 0;
+
+
+ 902 uint32_t homeNetId = 0;
+ 903 uint8_t adrLimitExp = RADIOLIB_LORAWAN_ADR_ACK_LIMIT_EXP;
+ 904 uint8_t adrDelayExp = RADIOLIB_LORAWAN_ADR_ACK_DELAY_EXP;
+
+ 906 uint8_t txPowerSteps = 0;
+ 907 uint8_t txPowerMax = 0;
+
+ 909 uint32_t aFCntDown = 0;
+ 910 uint32_t nFCntDown = 0;
+ 911 uint32_t confFCntUp = RADIOLIB_LORAWAN_FCNT_NONE;
+ 912 uint32_t confFCntDown = RADIOLIB_LORAWAN_FCNT_NONE;
+ 913 uint32_t adrFCnt = 0;
+
+
+ 916 bool adrEnabled =
true;
+
+
+ 919 bool dutyCycleEnabled =
false;
+ 920 uint32_t dutyCycle = 0;
+
+
+ 923 bool dwellTimeEnabledUp =
false;
+ 924 uint16_t dwellTimeUp = 0;
+ 925 bool dwellTimeEnabledDn =
false;
+ 926 uint16_t dwellTimeDn = 0;
+
+
+
+
+
+ 932 bool csmaEnabled =
false;
+
+
+ 935 uint8_t maxChanges = RADIOLIB_LORAWAN_MAX_CHANGES_DEFAULT;
+
+
+
+
+ 940 uint8_t backoffMax = RADIOLIB_LORAWAN_BACKOFF_MAX_DEFAULT;
+
+
+ 943 uint8_t difsSlots = RADIOLIB_LORAWAN_DIFS_DEFAULT;
+
+
+
+
+
+ 949 LoRaWANChannel_t channels[3] = { RADIOLIB_LORAWAN_CHANNEL_NONE, RADIOLIB_LORAWAN_CHANNEL_NONE,
+ 950 RADIOLIB_LORAWAN_CHANNEL_NONE };
+
+
+
+ 954 RadioLibTime_t rxDelays[3] = { 0, RADIOLIB_LORAWAN_RECEIVE_DELAY_1_MS, RADIOLIB_LORAWAN_RECEIVE_DELAY_2_MS };
+
+
+ 957 uint8_t rx1DrOffset = 0;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 972 uint8_t battLevel = 0xFF;
+
+
+ 975 bool isMACPayload =
false;
+
+
+
+
+
+
+
+
+
+
+
+ 987 void createSession(uint16_t lwMode, uint8_t initialDr);
+
+
+ 990 void composeJoinRequest(uint8_t* joinRequestMsg);
+
+
+
+
+
+ 996 void processCFList(uint8_t* cfList);
+
+
+ 999 int16_t isValidUplink(uint8_t* len, uint8_t fPort);
+
+
+
+
+
+ 1005 void composeUplink(uint8_t* in, uint8_t lenIn, uint8_t* out, uint8_t fPort,
bool isConfirmed);
+
+
+ 1008 void micUplink(uint8_t* inOut, uint8_t lenInOut);
+
+
+ 1011 int16_t transmitUplink(
LoRaWANChannel_t* chnl, uint8_t* in, uint8_t len,
bool retrans);
+
+
+
+
+
+ 1017 int16_t parseDownlink(uint8_t* data,
size_t* len,
LoRaWANEvent_t* event = NULL);
+
+
+ 1020 bool execMacCommand(uint8_t cid, uint8_t* optIn, uint8_t lenIn);
+ 1021 bool execMacCommand(uint8_t cid, uint8_t* optIn, uint8_t lenIn, uint8_t* optOut);
+
+
+ 1024 virtual bool derivedMacHandler(uint8_t cid, uint8_t* optIn, uint8_t lenIn, uint8_t* optOut);
+
+
+ 1027 void preprocessMacLinkAdr(uint8_t* mPtr, uint8_t cLen, uint8_t* mAdrOpt);
+
+
+ 1030 void postprocessMacLinkAdr(uint8_t* ack, uint8_t cLen);
+
+
+
+
+
+
+
+
+
+ 1040 int16_t getMacLen(uint8_t cid, uint8_t* len, uint8_t dir,
bool inclusive =
false);
+
+
+
+
+ 1045 bool isPersistentMacCommand(uint8_t cid, uint8_t dir);
+
+
+ 1048 int16_t pushMacCommand(uint8_t cid, uint8_t* cOcts, uint8_t* out, uint8_t* lenOut, uint8_t dir);
+
+
+ 1051 int16_t getMacPayload(uint8_t cid, uint8_t* in, uint8_t lenIn, uint8_t* out, uint8_t dir);
+
+
+ 1054 int16_t deleteMacCommand(uint8_t cid, uint8_t* inOut, uint8_t* lenInOut, uint8_t dir);
+
+
+ 1057 void clearMacCommands(uint8_t* inOut, uint8_t* lenInOut, uint8_t dir);
+
+
+ 1060 int16_t setPhyProperties(
const LoRaWANChannel_t* chnl, uint8_t dir, int8_t pwr,
size_t pre = 0);
+
+
+ 1063 bool csmaChannelClear(uint8_t difs, uint8_t numBackoff);
+
+
+ 1066 bool cadChannelClear();
+
+
+ 1069 void getChannelPlanMask(uint64_t* chMaskGrp0123, uint32_t* chMaskGrp45);
+
+
+
+
+ 1074 void selectChannelPlanDyn(
bool joinRequest =
false);
+
+
+
+ 1078 void selectChannelPlanFix();
+
+
+
+ 1082 uint8_t getAvailableChannels(uint16_t* mask);
+
+
+ 1085 void setAvailableChannels(uint16_t mask);
+
+
+ 1088 int16_t selectChannels();
+
+
+ 1091 bool applyChannelMask(uint64_t chMaskGrp0123, uint32_t chMaskGrp45);
+
+ 1093 #if RADIOLIB_DEBUG_PROTOCOL
+
+ 1095 void printChannels();
+
+
+
+ 1099 uint32_t generateMIC(uint8_t* msg,
size_t len, uint8_t* key);
+
+
+
+ 1103 bool verifyMIC(uint8_t* msg,
size_t len, uint8_t* key);
+
+
+ 1106 int16_t findDataRate(uint8_t dr,
DataRate_t* dataRate);
+
+
+ 1109 void processAES(
const uint8_t* in,
size_t len, uint8_t* key, uint8_t* out, uint32_t fCnt, uint8_t dir, uint8_t ctrId,
bool counter);
+
+
+ 1112 static uint16_t checkSum16(
const uint8_t *key, uint16_t keyLen);
+
+
+ 1115 static int16_t checkBufferCommon(uint8_t *buffer, uint16_t size);
+
+
+ 1118 template<
typename T>
+ 1119 static T ntoh(uint8_t* buff,
size_t size = 0);
+
+
+ 1122 template<
typename T>
+ 1123 static void hton(uint8_t* buff, T val,
size_t size = 0);
+
+
+ 1126 template<
typename T>
+ 1127 T LoRaWANNode::ntoh(uint8_t* buff,
size_t size) {
+ 1128 uint8_t* buffPtr = buff;
+ 1129 size_t targetSize =
sizeof(T);
+
+
+
+
+ 1134 for(
size_t i = 0; i < targetSize; i++) {
+ 1135 res |= (uint32_t)(*(buffPtr++)) << 8*i;
+
+
+
+
+ 1140 template<
typename T>
+ 1141 void LoRaWANNode::hton(uint8_t* buff, T val,
size_t size) {
+ 1142 uint8_t* buffPtr = buff;
+ 1143 size_t targetSize =
sizeof(T);
+
+
+
+ 1147 for(
size_t i = 0; i < targetSize; i++) {
+ 1148 *(buffPtr++) = val >> 8*i;
+
+
+
+
+LoRaWAN-compatible node (class A device).
Definition: LoRaWAN.h:529
void clearSession()
Clear an active session, so that the device will have to rejoin the network.
Definition: LoRaWAN.cpp:280
int16_t setBufferNonces(uint8_t *persistentBuffer)
Fill the internal buffer that holds the LW base parameters with a supplied buffer.
Definition: LoRaWAN.cpp:244
virtual int16_t sendReceive(const char *strUp, uint8_t fPort, bool isConfirmed=false, LoRaWANEvent_t *eventUp=NULL, LoRaWANEvent_t *eventDown=NULL)
Send a message to the server and wait for a downlink during Rx1 and/or Rx2 window.
Definition: LoRaWAN.cpp:45
int16_t setDatarate(uint8_t drUp)
Set uplink datarate. This should not be used when ADR is enabled.
Definition: LoRaWAN.cpp:2599
void scheduleTransmission(RadioLibTime_t tUplink)
Set the exact time a transmission should occur. Note: this is the internal clock time....
Definition: LoRaWAN.cpp:2730
-RadioLibTime_t scanGuard
Rx window padding in milliseconds according to the spec, the Rx window must be at least enough time t...
Definition: LoRaWAN.h:857
+RadioLibTime_t scanGuard
Rx window padding in milliseconds according to the spec, the Rx window must be at least enough time t...
Definition: LoRaWAN.h:858
void setCSMA(bool csmaEnabled, uint8_t maxChanges=4, uint8_t backoffMax=0, uint8_t difsSlots=2)
Configures CSMA for LoRaWAN as per TR013, LoRa Alliance.
Definition: LoRaWAN.cpp:2712
void setDutyCycle(bool enable=true, RadioLibTime_t msPerHour=0)
Toggle adherence to dutyCycle limits to on or off.
Definition: LoRaWAN.cpp:2689
int16_t beginABP(uint32_t addr, uint8_t *fNwkSIntKey, uint8_t *sNwkSIntKey, uint8_t *nwkSEncKey, uint8_t *appSKey)
Set the device credentials and activation configuration.
Definition: LoRaWAN.cpp:620
@@ -920,7 +921,7 @@ $(document).ready(function(){initNavTree('_lo_ra_w_a_n_8h_source.html',''); init
uint32_t getAFCntDown()
Returns the last application downlink's frame counter; also 0 if no application downlink occured yet.
Definition: LoRaWAN.cpp:2746
RadioLibTime_t getLastToA()
Get the Time-on-air of the last uplink message (in milliseconds).
Definition: LoRaWAN.cpp:2759
virtual int16_t activateABP(uint8_t initialDr=RADIOLIB_LORAWAN_DATA_RATE_UNUSED)
Join network by restoring ABP session or performing over-the-air activation. In this procedure,...
Definition: LoRaWAN.cpp:966
-bool TS009
TS009 Protocol Specification Verification switch (allows FPort 224 and cuts off uplink payload instea...
Definition: LoRaWAN.h:843
+bool TS009
TS009 Protocol Specification Verification switch (allows FPort 224 and cuts off uplink payload instea...
Definition: LoRaWAN.h:844
uint8_t * getBufferNonces()
Returns the pointer to the internal buffer that holds the LW base parameters.
Definition: LoRaWAN.cpp:229
uint8_t * getBufferSession()
Returns the pointer to the internal buffer that holds the LW session parameters.
Definition: LoRaWAN.cpp:435
bool isActivated()
Whether there is an ongoing session active.
Definition: LoRaWAN.cpp:1057
@@ -941,64 +942,64 @@ $(document).ready(function(){initNavTree('_lo_ra_w_a_n_8h_source.html',''); init
void resetFCntDown()
Reset the downlink frame counters (application and network) This is unsafe and can possibly allow rep...
Definition: LoRaWAN.cpp:2750
Provides common interface for protocols that run on LoRa/FSK modules, such as RTTY or LoRaWAN....
Definition: PhysicalLayer.h:151
unsigned long RadioLibTime_t
Type used for durations in RadioLib.
Definition: TypeDef.h:642
-Structure to save information about LoRaWAN band.
Definition: LoRaWAN.h:370
-int8_t powerMax
Maximum allowed output power in this band in dBm.
Definition: LoRaWAN.h:387
-bool txParamSupported
Whether this band implements the MAC command TxParamSetupReq.
Definition: LoRaWAN.h:402
-LoRaWANChannel_t txAck[2]
Relay channels for ACK downlink.
Definition: LoRaWAN.h:428
-RadioLibTime_t dutyCycle
Number of milliseconds per hour of allowed Time-on-Air.
Definition: LoRaWAN.h:393
-uint8_t dataRates[RADIOLIB_LORAWAN_CHANNEL_NUM_DATARATES]
The corresponding datarates, bandwidths and coding rates for DR index.
Definition: LoRaWAN.h:431
-RadioLibTime_t dwellTimeUp
Maximum dwell time per uplink message in milliseconds.
Definition: LoRaWAN.h:396
-LoRaWANChannel_t txWoR[2]
Relay channels for WoR uplink.
Definition: LoRaWAN.h:425
-uint32_t freqMin
Minimum allowed frequency (coded in 100 Hz steps)
Definition: LoRaWAN.h:378
-uint8_t payloadLenMax[RADIOLIB_LORAWAN_CHANNEL_NUM_DATARATES]
Array of allowed maximum application payload lengths for each data rate (N-value)
Definition: LoRaWAN.h:384
-LoRaWANChannel_t txFreqs[3]
A set of default uplink (TX) channels for dynamic bands.
Definition: LoRaWAN.h:405
-LoRaWANChannel_t txJoinReq[3]
A set of possible extra channels for the Join-Request message for dynamic bands.
Definition: LoRaWAN.h:408
-int8_t powerNumSteps
Number of power steps in this band.
Definition: LoRaWAN.h:390
-LoRaWANChannelSpan_t txSpans[2]
Default uplink (TX) channel spans for fixed bands, including Join-Request parameters.
Definition: LoRaWAN.h:414
-uint8_t bandNum
Identier for this band.
Definition: LoRaWAN.h:372
-uint32_t freqMax
Maximum allowed frequency (coded in 100 Hz steps)
Definition: LoRaWAN.h:381
-uint8_t bandType
Whether the channels are fixed per specification, or dynamically allocated through the network (plus ...
Definition: LoRaWAN.h:375
-LoRaWANChannel_t rx2
Backup channel for downlink (RX2) window.
Definition: LoRaWAN.h:422
-uint8_t numTxSpans
The number of TX channel spans for fixed bands.
Definition: LoRaWAN.h:411
-RadioLibTime_t dwellTimeDn
Maximum dwell time per downlink message in milliseconds.
Definition: LoRaWAN.h:399
-LoRaWANChannelSpan_t rx1Span
Default downlink (RX1) channel span for fixed bands.
Definition: LoRaWAN.h:417
+Structure to save information about LoRaWAN band.
Definition: LoRaWAN.h:371
+int8_t powerMax
Maximum allowed output power in this band in dBm.
Definition: LoRaWAN.h:388
+bool txParamSupported
Whether this band implements the MAC command TxParamSetupReq.
Definition: LoRaWAN.h:403
+LoRaWANChannel_t txAck[2]
Relay channels for ACK downlink.
Definition: LoRaWAN.h:429
+RadioLibTime_t dutyCycle
Number of milliseconds per hour of allowed Time-on-Air.
Definition: LoRaWAN.h:394
+uint8_t dataRates[RADIOLIB_LORAWAN_CHANNEL_NUM_DATARATES]
The corresponding datarates, bandwidths and coding rates for DR index.
Definition: LoRaWAN.h:432
+RadioLibTime_t dwellTimeUp
Maximum dwell time per uplink message in milliseconds.
Definition: LoRaWAN.h:397
+LoRaWANChannel_t txWoR[2]
Relay channels for WoR uplink.
Definition: LoRaWAN.h:426
+uint32_t freqMin
Minimum allowed frequency (coded in 100 Hz steps)
Definition: LoRaWAN.h:379
+uint8_t payloadLenMax[RADIOLIB_LORAWAN_CHANNEL_NUM_DATARATES]
Array of allowed maximum application payload lengths for each data rate (N-value)
Definition: LoRaWAN.h:385
+LoRaWANChannel_t txFreqs[3]
A set of default uplink (TX) channels for dynamic bands.
Definition: LoRaWAN.h:406
+LoRaWANChannel_t txJoinReq[3]
A set of possible extra channels for the Join-Request message for dynamic bands.
Definition: LoRaWAN.h:409
+int8_t powerNumSteps
Number of power steps in this band.
Definition: LoRaWAN.h:391
+LoRaWANChannelSpan_t txSpans[2]
Default uplink (TX) channel spans for fixed bands, including Join-Request parameters.
Definition: LoRaWAN.h:415
+uint8_t bandNum
Identier for this band.
Definition: LoRaWAN.h:373
+uint32_t freqMax
Maximum allowed frequency (coded in 100 Hz steps)
Definition: LoRaWAN.h:382
+uint8_t bandType
Whether the channels are fixed per specification, or dynamically allocated through the network (plus ...
Definition: LoRaWAN.h:376
+LoRaWANChannel_t rx2
Backup channel for downlink (RX2) window.
Definition: LoRaWAN.h:423
+uint8_t numTxSpans
The number of TX channel spans for fixed bands.
Definition: LoRaWAN.h:412
+RadioLibTime_t dwellTimeDn
Maximum dwell time per downlink message in milliseconds.
Definition: LoRaWAN.h:400
+LoRaWANChannelSpan_t rx1Span
Default downlink (RX1) channel span for fixed bands.
Definition: LoRaWAN.h:418
IDs of all currently supported bands.
-Structure to save information about LoRaWAN channels. To save space, adjacent channels are saved in "...
Definition: LoRaWAN.h:311
-bool available
Whether this channel is available for channel selection.
Definition: LoRaWAN.h:331
-uint8_t dr
Datarate currently in use on this channel.
Definition: LoRaWAN.h:328
-uint32_t freq
The channel frequency (coded in 100 Hz steps)
Definition: LoRaWAN.h:319
-uint8_t idx
The channel number, as specified by defaults or the network.
Definition: LoRaWAN.h:316
-uint8_t drMin
Minimum allowed datarate for this channel.
Definition: LoRaWAN.h:322
-bool enabled
Whether this channel is enabled (can be used) or is disabled.
Definition: LoRaWAN.h:313
-uint8_t drMax
Maximum allowed datarate for this channel (inclusive)
Definition: LoRaWAN.h:325
-Structure to save information about LoRaWAN channels. To save space, adjacent channels are saved in "...
Definition: LoRaWAN.h:343
-uint8_t drJoinRequest
Allowed data rates for a join request message.
Definition: LoRaWAN.h:360
-uint32_t freqStart
Center frequency of the first channel in span (coded in 100 Hz steps)
Definition: LoRaWAN.h:348
-uint8_t numChannels
Total number of channels in the span.
Definition: LoRaWAN.h:345
-uint8_t drMax
Maximum allowed datarate for all channels in this span (inclusive)
Definition: LoRaWAN.h:357
-uint32_t freqStep
Frequency step between adjacent channels (coded in 100 Hz steps)
Definition: LoRaWAN.h:351
-uint8_t drMin
Minimum allowed datarate for all channels in this span.
Definition: LoRaWAN.h:354
-Structure to save extra information about uplink/downlink event.
Definition: LoRaWAN.h:491
-float freq
Frequency in MHz.
Definition: LoRaWAN.h:509
-bool confirmed
Whether the event is confirmed or not (e.g., confirmed uplink sent by user application)
Definition: LoRaWAN.h:496
-uint8_t fPort
Port number.
Definition: LoRaWAN.h:518
-int16_t power
Transmit power in dBm for uplink, or RSSI for downlink.
Definition: LoRaWAN.h:512
-bool confirming
Whether the event is confirming a previous request (e.g., server downlink reply to confirmed uplink s...
Definition: LoRaWAN.h:500
-uint8_t datarate
Datarate.
Definition: LoRaWAN.h:506
-uint8_t dir
Event direction, one of RADIOLIB_LORAWAN_CHANNEL_DIR_*.
Definition: LoRaWAN.h:493
-uint8_t nbTrans
Number of times this uplink was transmitted (ADR)
Definition: LoRaWAN.h:521
-uint32_t fCnt
The appropriate frame counter - for different events, different frame counters will be reported!
Definition: LoRaWAN.h:515
-bool frmPending
Whether further downlink messages are pending on the server side.
Definition: LoRaWAN.h:503
-Structure to save extra information about activation event.
Definition: LoRaWAN.h:476
-bool newSession
Whether a new session was started.
Definition: LoRaWAN.h:478
-uint32_t joinNonce
The received Join-Request JoinNonce value.
Definition: LoRaWAN.h:484
-uint16_t devNonce
The transmitted Join-Request DevNonce value.
Definition: LoRaWAN.h:481
-MAC command specification structure.
Definition: LoRaWAN.h:214
-const uint8_t lenDn
Uplink message length.
Definition: LoRaWAN.h:219
-const bool user
Whether this MAC command can be issued by the user or not.
Definition: LoRaWAN.h:228
-const uint8_t cid
Command ID.
Definition: LoRaWAN.h:216
-const uint8_t lenUp
Downlink message length.
Definition: LoRaWAN.h:222
-const bool persist
Some commands must be resent until Class A downlink received.
Definition: LoRaWAN.h:225
+Structure to save information about LoRaWAN channels. To save space, adjacent channels are saved in "...
Definition: LoRaWAN.h:312
+bool available
Whether this channel is available for channel selection.
Definition: LoRaWAN.h:332
+uint8_t dr
Datarate currently in use on this channel.
Definition: LoRaWAN.h:329
+uint32_t freq
The channel frequency (coded in 100 Hz steps)
Definition: LoRaWAN.h:320
+uint8_t idx
The channel number, as specified by defaults or the network.
Definition: LoRaWAN.h:317
+uint8_t drMin
Minimum allowed datarate for this channel.
Definition: LoRaWAN.h:323
+bool enabled
Whether this channel is enabled (can be used) or is disabled.
Definition: LoRaWAN.h:314
+uint8_t drMax
Maximum allowed datarate for this channel (inclusive)
Definition: LoRaWAN.h:326
+Structure to save information about LoRaWAN channels. To save space, adjacent channels are saved in "...
Definition: LoRaWAN.h:344
+uint8_t drJoinRequest
Allowed data rates for a join request message.
Definition: LoRaWAN.h:361
+uint32_t freqStart
Center frequency of the first channel in span (coded in 100 Hz steps)
Definition: LoRaWAN.h:349
+uint8_t numChannels
Total number of channels in the span.
Definition: LoRaWAN.h:346
+uint8_t drMax
Maximum allowed datarate for all channels in this span (inclusive)
Definition: LoRaWAN.h:358
+uint32_t freqStep
Frequency step between adjacent channels (coded in 100 Hz steps)
Definition: LoRaWAN.h:352
+uint8_t drMin
Minimum allowed datarate for all channels in this span.
Definition: LoRaWAN.h:355
+Structure to save extra information about uplink/downlink event.
Definition: LoRaWAN.h:492
+float freq
Frequency in MHz.
Definition: LoRaWAN.h:510
+bool confirmed
Whether the event is confirmed or not (e.g., confirmed uplink sent by user application)
Definition: LoRaWAN.h:497
+uint8_t fPort
Port number.
Definition: LoRaWAN.h:519
+int16_t power
Transmit power in dBm for uplink, or RSSI for downlink.
Definition: LoRaWAN.h:513
+bool confirming
Whether the event is confirming a previous request (e.g., server downlink reply to confirmed uplink s...
Definition: LoRaWAN.h:501
+uint8_t datarate
Datarate.
Definition: LoRaWAN.h:507
+uint8_t dir
Event direction, one of RADIOLIB_LORAWAN_CHANNEL_DIR_*.
Definition: LoRaWAN.h:494
+uint8_t nbTrans
Number of times this uplink was transmitted (ADR)
Definition: LoRaWAN.h:522
+uint32_t fCnt
The appropriate frame counter - for different events, different frame counters will be reported!
Definition: LoRaWAN.h:516
+bool frmPending
Whether further downlink messages are pending on the server side.
Definition: LoRaWAN.h:504
+Structure to save extra information about activation event.
Definition: LoRaWAN.h:477
+bool newSession
Whether a new session was started.
Definition: LoRaWAN.h:479
+uint32_t joinNonce
The received Join-Request JoinNonce value.
Definition: LoRaWAN.h:485
+uint16_t devNonce
The transmitted Join-Request DevNonce value.
Definition: LoRaWAN.h:482
+MAC command specification structure.
Definition: LoRaWAN.h:215
+const uint8_t lenDn
Uplink message length.
Definition: LoRaWAN.h:220
+const bool user
Whether this MAC command can be issued by the user or not.
Definition: LoRaWAN.h:229
+const uint8_t cid
Command ID.
Definition: LoRaWAN.h:217
+const uint8_t lenUp
Downlink message length.
Definition: LoRaWAN.h:223
+const bool persist
Some commands must be resent until Class A downlink received.
Definition: LoRaWAN.h:226
Common data rate structure.
Definition: PhysicalLayer.h:74
diff --git a/_physical_layer_8h_source.html b/_physical_layer_8h_source.html
index 80911357..ad833d53 100644
--- a/_physical_layer_8h_source.html
+++ b/_physical_layer_8h_source.html
@@ -128,7 +128,7 @@ $(document).ready(function(){initNavTree('_physical_layer_8h_source.html',''); i
-
+
@@ -390,7 +390,7 @@ $(document).ready(function(){initNavTree('_physical_layer_8h_source.html',''); i
Client for Bell modem communication. The public interface is the same as Arduino Serial.
Definition: BellModem.h:54
Client for FSK-4 communication. The public interface is the same as Arduino Serial.
Definition: FSK4.h:15
Client for Hellschreiber transmissions.
Definition: Hellschreiber.h:90
-LoRaWAN-compatible node (class A device).
Definition: LoRaWAN.h:528
+LoRaWAN-compatible node (class A device).
Definition: LoRaWAN.h:529
Implements all common low-level methods to control the wireless module. Every module class contains o...
Definition: Module.h:73
Client for Morse Code communication. The public interface is the same as Arduino Serial.
Definition: Morse.h:93
@@ -474,7 +474,7 @@ $(document).ready(function(){initNavTree('_physical_layer_8h_source.html',''); i
Data rate structure interpretation in case LR-FHSS is used.
Definition: PhysicalLayer.h:59
bool narrowGrid
Grid spacing.
Definition: PhysicalLayer.h:67
uint8_t cr
Coding rate.
Definition: PhysicalLayer.h:64
-uint8_t bw
Bandwidth.
Definition: PhysicalLayer.h:61
+float bw
Bandwidth.
Definition: PhysicalLayer.h:61
Channel scan configuration interpretation in case RSSI threshold is used.
Definition: PhysicalLayer.h:116
float limit
RSSI limit in dBm.
Definition: PhysicalLayer.h:118
Common channel scan configuration structure.
Definition: PhysicalLayer.h:125
diff --git a/functions_b.html b/functions_b.html
index 765ebe93..fb255b35 100644
--- a/functions_b.html
+++ b/functions_b.html
@@ -190,7 +190,7 @@ $(document).ready(function(){initNavTree('functions_b.html',''); initResizable()
: FSKRate_t
bw
-: LrFhssRate_t
+: LrFhssRate_t
byteArr()
: ITA2String
diff --git a/functions_vars.html b/functions_vars.html
index 55cae371..8eb2878e 100644
--- a/functions_vars.html
+++ b/functions_vars.html
@@ -123,7 +123,7 @@ $(document).ready(function(){initNavTree('functions_vars.html',''); initResizabl
: FSKRate_t
bw
-: LrFhssRate_t
+: LrFhssRate_t
diff --git a/navtreeindex7.js b/navtreeindex7.js
index 51b6957b..7daf7a5a 100644
--- a/navtreeindex7.js
+++ b/navtreeindex7.js
@@ -22,7 +22,7 @@ var NAVTREEINDEX7 =
"struct_lr_fhss_rate__t.html":[3,0,39],
"struct_lr_fhss_rate__t.html#a29dec307a472c34e9fafb10af3c4fb9c":[3,0,39,2],
"struct_lr_fhss_rate__t.html#a3eb7a2c2f4f23face4d6706aa8084c6b":[3,0,39,1],
-"struct_lr_fhss_rate__t.html#a965dcb7da1b9adc4818ae9e908585f21":[3,0,39,0],
+"struct_lr_fhss_rate__t.html#afb7412c51412d19e9d3cc1534b5a7e90":[3,0,39,0],
"struct_module_1_1_rf_switch_mode__t.html":[3,0,40,0],
"struct_module_1_1_rf_switch_mode__t.html#a2442217bfabfb124a3f46bb128aa7462":[3,0,40,0,0],
"struct_module_1_1_rf_switch_mode__t.html#a694fecae172f868d8ca400319920ed66":[3,0,40,0,1],
diff --git a/search/all_1.js b/search/all_1.js
index 43f6d738..481a4d43 100644
--- a/search/all_1.js
+++ b/search/all_1.js
@@ -18,6 +18,6 @@ var searchData=
['bellclient_28',['BellClient',['../class_bell_client.html#a20fcf0322ef40c31b3bc329f7d89a177',1,'BellClient::BellClient(PhysicalLayer *phy, uint32_t pin)'],['../class_bell_client.html#ab9d0d76bb88fc8bdc995ab800063c149',1,'BellClient::BellClient(AFSKClient *aud)'],['../class_bell_client.html',1,'BellClient']]],
['bellmodem_5ft_29',['BellModem_t',['../struct_bell_modem__t.html',1,'']]],
['bitrate_30',['bitRate',['../struct_f_s_k_rate__t.html#a2500c6dee65326b52d4e58ecf4b6d107',1,'FSKRate_t']]],
- ['bw_31',['bw',['../struct_lr_fhss_rate__t.html#a965dcb7da1b9adc4818ae9e908585f21',1,'LrFhssRate_t']]],
+ ['bw_31',['bw',['../struct_lr_fhss_rate__t.html#afb7412c51412d19e9d3cc1534b5a7e90',1,'LrFhssRate_t']]],
['bytearr_32',['byteArr',['../class_i_t_a2_string.html#a3f42f7ad98473dbe36515e676622ed3d',1,'ITA2String']]]
];
diff --git a/search/variables_1.js b/search/variables_1.js
index bad9c590..fedd5936 100644
--- a/search/variables_1.js
+++ b/search/variables_1.js
@@ -7,5 +7,5 @@ var searchData=
['beidou_1176',['beidou',['../struct_l_r11x0_gnss_almanac_status__t.html#a6ecc7d7bbc090f380ca6d2d8774f7ca0',1,'LR11x0GnssAlmanacStatus_t']]],
['beidousvnoalmanacflags_1177',['beidouSvNoAlmanacFlags',['../struct_l_r11x0_gnss_almanac_status__t.html#ab040b1d9ccf9c6497b008d11a93ebfdf',1,'LR11x0GnssAlmanacStatus_t']]],
['bitrate_1178',['bitRate',['../struct_f_s_k_rate__t.html#a2500c6dee65326b52d4e58ecf4b6d107',1,'FSKRate_t']]],
- ['bw_1179',['bw',['../struct_lr_fhss_rate__t.html#a965dcb7da1b9adc4818ae9e908585f21',1,'LrFhssRate_t']]]
+ ['bw_1179',['bw',['../struct_lr_fhss_rate__t.html#afb7412c51412d19e9d3cc1534b5a7e90',1,'LrFhssRate_t']]]
];
diff --git a/struct_lr_fhss_rate__t-members.html b/struct_lr_fhss_rate__t-members.html
index f376df75..37680104 100644
--- a/struct_lr_fhss_rate__t-members.html
+++ b/struct_lr_fhss_rate__t-members.html
@@ -89,7 +89,7 @@ $(document).ready(function(){initNavTree('struct_lr_fhss_rate__t.html',''); init
This is the complete list of members for LrFhssRate_t, including all inherited members.
diff --git a/struct_lr_fhss_rate__t.html b/struct_lr_fhss_rate__t.html
index a8388a98..a3866467 100644
--- a/struct_lr_fhss_rate__t.html
+++ b/struct_lr_fhss_rate__t.html
@@ -97,10 +97,10 @@ $(document).ready(function(){initNavTree('struct_lr_fhss_rate__t.html',''); init
|
-
-uint8_t | bw |
- | Bandwidth.
|
- |
+
+float | bw |
+ | Bandwidth.
|
+ |
uint8_t | cr |
| Coding rate.
|
diff --git a/struct_lr_fhss_rate__t.js b/struct_lr_fhss_rate__t.js
index 5959c6ce..7a6851e6 100644
--- a/struct_lr_fhss_rate__t.js
+++ b/struct_lr_fhss_rate__t.js
@@ -1,6 +1,6 @@
var struct_lr_fhss_rate__t =
[
- [ "bw", "struct_lr_fhss_rate__t.html#a965dcb7da1b9adc4818ae9e908585f21", null ],
+ [ "bw", "struct_lr_fhss_rate__t.html#afb7412c51412d19e9d3cc1534b5a7e90", null ],
[ "cr", "struct_lr_fhss_rate__t.html#a3eb7a2c2f4f23face4d6706aa8084c6b", null ],
[ "narrowGrid", "struct_lr_fhss_rate__t.html#a29dec307a472c34e9fafb10af3c4fb9c", null ]
];
\ No newline at end of file