diff --git a/_lo_ra_w_a_n_8h_source.html b/_lo_ra_w_a_n_8h_source.html
index 783ea642..b4e595c4 100644
--- a/_lo_ra_w_a_n_8h_source.html
+++ b/_lo_ra_w_a_n_8h_source.html
@@ -238,266 +238,272 @@ $(document).ready(function(){initNavTree('_lo_ra_w_a_n_8h_source.html',''); init
150 #define RADIOLIB_LORAWAN_MAGIC (0x12AD101B)
- 153 #define RADIOLIB_LORAWAN_MAC_CMD_RESET_IND (0x01)
- 154 #define RADIOLIB_LORAWAN_MAC_CMD_LINK_CHECK_REQ (0x02)
- 155 #define RADIOLIB_LORAWAN_MAC_CMD_LINK_ADR_ANS (0x03)
- 156 #define RADIOLIB_LORAWAN_MAC_CMD_DUTY_CYCLE_ANS (0x04)
- 157 #define RADIOLIB_LORAWAN_MAC_CMD_RX_PARAM_SETUP_ANS (0x05)
- 158 #define RADIOLIB_LORAWAN_MAC_CMD_DEV_STATUS_ANS (0x06)
- 159 #define RADIOLIB_LORAWAN_MAC_CMD_NEW_CHANNEL_ANS (0x07)
- 160 #define RADIOLIB_LORAWAN_MAC_CMD_RX_TIMING_SETUP_ANS (0x08)
- 161 #define RADIOLIB_LORAWAN_MAC_CMD_TX_PARAM_SETUP_ANS (0x09)
- 162 #define RADIOLIB_LORAWAN_MAC_CMD_DI_CHANNEL_ANS (0x0A)
- 163 #define RADIOLIB_LORAWAN_MAC_CMD_REKEY_IND (0x0B)
- 164 #define RADIOLIB_LORAWAN_MAC_CMD_ADR_PARAM_SETUP_ANS (0x0C)
- 165 #define RADIOLIB_LORAWAN_MAC_CMD_DEVICE_TIME_REQ (0x0D)
- 166 #define RADIOLIB_LORAWAN_MAC_CMD_REJOIN_PARAM_SETUP_ANS (0x0F)
-
-
- 169 #define RADIOLIB_LORAWAN_MAC_COMMAND_QUEUE_SIZE (8)
-
-
- 172 #define RADIOLIB_LORAWAN_NUM_AVAILABLE_CHANNELS (8)
-
-
-
-
-
-
-
-
-
-
-
-
- 196 uint8_t
dataRates[RADIOLIB_LORAWAN_CHANNEL_NUM_DATARATES];
-
-
-
- 200 #define RADIOLIB_LORAWAN_CHANNEL_SPAN_NONE { .direction = RADIOLIB_LORAWAN_CHANNEL_DIR_NONE, .joinRequestDataRate = RADIOLIB_LORAWAN_DATA_RATE_UNUSED, .numChannels = 0, .freqStart = 0, .freqStep = 0, .dataRates = { 0 } }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 322 int16_t
beginOTAA(uint64_t joinEUI, uint64_t devEUI, uint8_t* nwkKey, uint8_t* appKey,
bool force =
false);
-
- 334 int16_t
beginAPB(uint32_t addr, uint8_t* nwkSKey, uint8_t* appSKey, uint8_t* fNwkSIntKey = NULL, uint8_t* sNwkSIntKey = NULL);
-
- 336 #if defined(RADIOLIB_BUILD_ARDUINO)
- 343 int16_t
uplink(String& str, uint8_t port);
-
-
- 352 int16_t
uplink(
const char* str, uint8_t port);
-
- 361 int16_t
uplink(uint8_t* data,
size_t len, uint8_t port);
-
- 363 #if defined(RADIOLIB_BUILD_ARDUINO)
-
-
-
- 378 int16_t
downlink(uint8_t* data,
size_t* len);
-
-
-
- 387 #if !defined(RADIOLIB_GODMODE)
-
-
-
-
-
-
- 394 .commands = { { .
cid = 0, .len = 0, .payload = { 0 }, .repeat = 0, } },
-
-
-
- 398 .commands = { { .
cid = 0, .len = 0, .payload = { 0 }, .repeat = 0, } },
-
-
-
-
-
- 404 uint32_t devAddr = 0;
- 405 uint8_t appSKey[RADIOLIB_AES128_KEY_SIZE] = { 0 };
- 406 uint8_t fNwkSIntKey[RADIOLIB_AES128_KEY_SIZE] = { 0 };
- 407 uint8_t sNwkSIntKey[RADIOLIB_AES128_KEY_SIZE] = { 0 };
- 408 uint8_t nwkSEncKey[RADIOLIB_AES128_KEY_SIZE] = { 0 };
- 409 uint8_t jSIntKey[RADIOLIB_AES128_KEY_SIZE] = { 0 };
-
-
- 412 float availableChannelsFreq[2][RADIOLIB_LORAWAN_NUM_AVAILABLE_CHANNELS] = { { 0 }, { 0 } };
-
-
- 415 float channelFreq[2] = { 0 };
-
-
-
-
-
- 421 uint8_t dataRate[2] = { 0 };
-
-
- 424 uint8_t chIndex[2] = { 0 };
-
-
- 427 uint32_t rxDelayStart = 0;
-
-
- 430 uint32_t rxDelays[2] = { RADIOLIB_LORAWAN_RECEIVE_DELAY_1_MS, RADIOLIB_LORAWAN_RECEIVE_DELAY_2_MS };
+ 153 #define RADIOLIB_LORAWAN_MAC_CMD_RESET (0x01)
+ 154 #define RADIOLIB_LORAWAN_MAC_CMD_LINK_CHECK (0x02)
+ 155 #define RADIOLIB_LORAWAN_MAC_CMD_LINK_ADR (0x03)
+ 156 #define RADIOLIB_LORAWAN_MAC_CMD_DUTY_CYCLE (0x04)
+ 157 #define RADIOLIB_LORAWAN_MAC_CMD_RX_PARAM_SETUP (0x05)
+ 158 #define RADIOLIB_LORAWAN_MAC_CMD_DEV_STATUS (0x06)
+ 159 #define RADIOLIB_LORAWAN_MAC_CMD_NEW_CHANNEL (0x07)
+ 160 #define RADIOLIB_LORAWAN_MAC_CMD_RX_TIMING_SETUP (0x08)
+ 161 #define RADIOLIB_LORAWAN_MAC_CMD_TX_PARAM_SETUP (0x09)
+ 162 #define RADIOLIB_LORAWAN_MAC_CMD_DL_CHANNEL (0x0A)
+ 163 #define RADIOLIB_LORAWAN_MAC_CMD_REKEY (0x0B)
+ 164 #define RADIOLIB_LORAWAN_MAC_CMD_ADR_PARAM_SETUP (0x0C)
+ 165 #define RADIOLIB_LORAWAN_MAC_CMD_DEVICE_TIME (0x0D)
+ 166 #define RADIOLIB_LORAWAN_MAC_CMD_FORCE_REJOIN (0x0E)
+ 167 #define RADIOLIB_LORAWAN_MAC_CMD_REJOIN_PARAM_SETUP (0x0F)
+ 168 #define RADIOLIB_LORAWAN_MAC_CMD_PROPRIETARY (0x80)
+
+
+ 171 #define RADIOLIB_LORAWAN_MAC_COMMAND_QUEUE_SIZE (8)
+
+
+ 174 #define RADIOLIB_LORAWAN_NUM_AVAILABLE_CHANNELS (8)
+
+
+
+
+
+
+
+
+
+
+
+
+ 198 uint8_t
dataRates[RADIOLIB_LORAWAN_CHANNEL_NUM_DATARATES];
+
+
+
+ 202 #define RADIOLIB_LORAWAN_CHANNEL_SPAN_NONE { .direction = RADIOLIB_LORAWAN_CHANNEL_DIR_NONE, .joinRequestDataRate = RADIOLIB_LORAWAN_DATA_RATE_UNUSED, .numChannels = 0, .freqStart = 0, .freqStep = 0, .dataRates = { 0 } }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 324 int16_t
beginOTAA(uint64_t joinEUI, uint64_t devEUI, uint8_t* nwkKey, uint8_t* appKey,
bool force =
false);
+
+ 336 int16_t
beginAPB(uint32_t addr, uint8_t* nwkSKey, uint8_t* appSKey, uint8_t* fNwkSIntKey = NULL, uint8_t* sNwkSIntKey = NULL);
+
+ 338 #if defined(RADIOLIB_BUILD_ARDUINO)
+ 345 int16_t
uplink(String& str, uint8_t port);
+
+
+ 354 int16_t
uplink(
const char* str, uint8_t port);
+
+ 363 int16_t
uplink(uint8_t* data,
size_t len, uint8_t port);
+
+ 365 #if defined(RADIOLIB_BUILD_ARDUINO)
+
+
+
+ 380 int16_t
downlink(uint8_t* data,
size_t* len);
+
+
+
+ 389 #if !defined(RADIOLIB_GODMODE)
+
+
+
+
+
+
+ 396 .commands = { { .
cid = 0, .len = 0, .payload = { 0 }, .repeat = 0, } },
+
+
+
+ 400 .commands = { { .
cid = 0, .len = 0, .payload = { 0 }, .repeat = 0, } },
+
+
+
+
+
+ 406 uint32_t devAddr = 0;
+ 407 uint8_t appSKey[RADIOLIB_AES128_KEY_SIZE] = { 0 };
+ 408 uint8_t fNwkSIntKey[RADIOLIB_AES128_KEY_SIZE] = { 0 };
+ 409 uint8_t sNwkSIntKey[RADIOLIB_AES128_KEY_SIZE] = { 0 };
+ 410 uint8_t nwkSEncKey[RADIOLIB_AES128_KEY_SIZE] = { 0 };
+ 411 uint8_t jSIntKey[RADIOLIB_AES128_KEY_SIZE] = { 0 };
+
+
+ 414 float availableChannelsFreq[2][RADIOLIB_LORAWAN_NUM_AVAILABLE_CHANNELS] = { { 0 }, { 0 } };
+
+
+ 417 float channelFreq[2] = { 0 };
+
+
+
+
+
+ 423 uint8_t dataRate[2] = { 0 };
+
+
+ 426 uint8_t chIndex[2] = { 0 };
+
+
+ 429 float backupFreq = 0;
+ 430 uint8_t backupDataRate = 0;
-
- 433 uint8_t battLevel = 0xFF;
+
+ 433 uint32_t rxDelayStart = 0;
-
- 436 uint32_t generateMIC(uint8_t* msg,
size_t len, uint8_t* key);
+
+ 436 uint32_t rxDelays[2] = { RADIOLIB_LORAWAN_RECEIVE_DELAY_1_MS, RADIOLIB_LORAWAN_RECEIVE_DELAY_2_MS };
-
-
- 440 bool verifyMIC(uint8_t* msg,
size_t len, uint8_t* key);
-
-
-
- 444 int16_t setPhyProperties();
-
-
-
- 448 int16_t setupChannels();
-
-
-
-
-
- 454 int16_t findChannelId(uint8_t dir, uint8_t* ch, uint8_t* dr, int8_t min, int8_t max);
+
+ 439 uint8_t battLevel = 0xFF;
+
+
+ 442 uint32_t generateMIC(uint8_t* msg,
size_t len, uint8_t* key);
+
+
+
+ 446 bool verifyMIC(uint8_t* msg,
size_t len, uint8_t* key);
+
+
+
+ 450 int16_t setPhyProperties();
+
+
+
+ 454 int16_t setupChannels();
-
-
+
+
-
- 460 int16_t findChannelFreq(uint8_t dir, uint8_t ch,
float* freq);
+
+ 460 int16_t findChannelId(uint8_t dir, uint8_t* ch, uint8_t* dr, int8_t min, int8_t max);
-
- 463 int16_t configureChannel(uint8_t dir);
+
+
-
- 466 int16_t sendMacCommand(uint8_t cid, uint8_t* payload,
size_t payloadLen, uint8_t* reply,
size_t replyLen);
+
+ 466 int16_t findChannelFreq(uint8_t dir, uint8_t ch,
float* freq);
-
-
-
-
-
+
+ 469 int16_t configureChannel(uint8_t dir);
+
+
+ 472 int16_t sendMacCommand(uint8_t cid, uint8_t* payload,
size_t payloadLen, uint8_t* reply,
size_t replyLen);
-
-
-
-
- 478 void processAES(uint8_t* in,
size_t len, uint8_t* key, uint8_t* out, uint32_t fcnt, uint8_t dir, uint8_t ctrId,
bool counter);
+
+
+
+
+
-
-
- 482 static T ntoh(uint8_t* buff,
size_t size = 0);
-
-
-
- 486 static void hton(uint8_t* buff, T val,
size_t size = 0);
-
-
-
-LoRaWAN-compatible node (class A device).
Definition: LoRaWAN.h:276
-int16_t beginOTAA(uint64_t joinEUI, uint64_t devEUI, uint8_t *nwkKey, uint8_t *appKey, bool force=false)
Join network by performing over-the-air activation. By this procedure, the device will perform an exc...
Definition: LoRaWAN.cpp:62
-bool FSK
Set to true to force the node to only use FSK channels. Set to false by default.
Definition: LoRaWAN.h:279
-int16_t beginAPB(uint32_t addr, uint8_t *nwkSKey, uint8_t *appSKey, uint8_t *fNwkSIntKey=NULL, uint8_t *sNwkSIntKey=NULL)
Join network by performing activation by personalization. In this procedure, all necessary configurat...
Definition: LoRaWAN.cpp:329
-void setDeviceStatus(uint8_t battLevel)
Set device status.
Definition: LoRaWAN.cpp:763
-int16_t downlink(uint8_t *data, size_t *len)
Wait for downlink from the server in either RX1 or RX2 window.
Definition: LoRaWAN.cpp:515
-int8_t numChannels
Number of supported channels. Some band plans only support a subset of available channels....
Definition: LoRaWAN.h:291
-void wipe()
Wipe internal persistent parameters. This will reset all counters and saved variables,...
Definition: LoRaWAN.cpp:37
-int8_t startChannel
Starting channel offset. Some band plans only support a subset of available channels....
Definition: LoRaWAN.h:285
+
+
+
+
+ 484 void processAES(uint8_t* in,
size_t len, uint8_t* key, uint8_t* out, uint32_t fcnt, uint8_t dir, uint8_t ctrId,
bool counter);
+
+
+
+ 488 static T ntoh(uint8_t* buff,
size_t size = 0);
+
+
+
+ 492 static void hton(uint8_t* buff, T val,
size_t size = 0);
+
+
+
+LoRaWAN-compatible node (class A device).
Definition: LoRaWAN.h:278
+int16_t beginOTAA(uint64_t joinEUI, uint64_t devEUI, uint8_t *nwkKey, uint8_t *appKey, bool force=false)
Join network by performing over-the-air activation. By this procedure, the device will perform an exc...
Definition: LoRaWAN.cpp:63
+bool FSK
Set to true to force the node to only use FSK channels. Set to false by default.
Definition: LoRaWAN.h:281
+int16_t beginAPB(uint32_t addr, uint8_t *nwkSKey, uint8_t *appSKey, uint8_t *fNwkSIntKey=NULL, uint8_t *sNwkSIntKey=NULL)
Join network by performing activation by personalization. In this procedure, all necessary configurat...
Definition: LoRaWAN.cpp:330
+void setDeviceStatus(uint8_t battLevel)
Set device status.
Definition: LoRaWAN.cpp:773
+int16_t downlink(uint8_t *data, size_t *len)
Wait for downlink from the server in either RX1 or RX2 window.
Definition: LoRaWAN.cpp:516
+int8_t numChannels
Number of supported channels. Some band plans only support a subset of available channels....
Definition: LoRaWAN.h:293
+void wipe()
Wipe internal persistent parameters. This will reset all counters and saved variables,...
Definition: LoRaWAN.cpp:38
+int8_t startChannel
Starting channel offset. Some band plans only support a subset of available channels....
Definition: LoRaWAN.h:287
LoRaWANNode(PhysicalLayer *phy, const LoRaWANBand_t *band)
Default constructor.
Definition: LoRaWAN.cpp:29
-int16_t uplink(const char *str, uint8_t port)
Send a message to the server.
Definition: LoRaWAN.cpp:358
-int16_t begin()
Join network by loading information from persistent storage.
Definition: LoRaWAN.cpp:42
+int16_t uplink(const char *str, uint8_t port)
Send a message to the server.
Definition: LoRaWAN.cpp:359
+int16_t begin()
Join network by loading information from persistent storage.
Definition: LoRaWAN.cpp:43
Provides common interface for protocols that run on LoRa/FSK modules, such as RTTY or LoRaWAN....
Definition: PhysicalLayer.h:34
-Structure to save information about LoRaWAN band.
Definition: LoRaWAN.h:206
-uint8_t cfListType
Whether the optional channels are defined as list of frequencies or bit mask.
Definition: LoRaWAN.h:223
-LoRaWANChannelSpan_t backupChannel
Backup downlink (RX2) channel - just a single channel, but using the same structure for convenience.
Definition: LoRaWAN.h:235
-uint8_t downlinkDataRateBase
The base downlink data rate. Used to calculate data rate changes for adaptive data rate.
Definition: LoRaWAN.h:208
-int8_t powerMax
Maximum allowed output power in this band in dBm.
Definition: LoRaWAN.h:217
-LoRaWANChannelSpan_t defaultChannels[3]
Default uplink (TX/RX1) channels defined by LoRaWAN Regional Parameters.
Definition: LoRaWAN.h:232
-uint8_t payloadLenMax[RADIOLIB_LORAWAN_CHANNEL_NUM_DATARATES]
Array of allowed maximum payload lengths for each data rate.
Definition: LoRaWAN.h:214
-int8_t powerNumSteps
Number of power steps in this band.
Definition: LoRaWAN.h:220
-float fskFreq
FSK channel frequency.
Definition: LoRaWAN.h:226
-uint8_t numChannelSpans
Number of channel spans in the band.
Definition: LoRaWAN.h:229
-uint8_t downlinkDataRateMin
The minimum allowed downlink data rate. Used to calculate data rate changes for adaptive data rate.
Definition: LoRaWAN.h:211
-Structure to save information about LoRaWAN channels. To save space, adjacent channels are saved in "...
Definition: LoRaWAN.h:179
-uint8_t joinRequestDataRate
Allowed data rates for a join request message.
Definition: LoRaWAN.h:184
-float freqStart
Center frequency of the first channel in span.
Definition: LoRaWAN.h:190
-uint8_t numChannels
Total number of channels in the span.
Definition: LoRaWAN.h:187
-uint8_t dataRates[RADIOLIB_LORAWAN_CHANNEL_NUM_DATARATES]
Array of datarates supported by all channels in the span.
Definition: LoRaWAN.h:196
-float freqStep
Frequency step between adjacent channels.
Definition: LoRaWAN.h:193
-uint8_t direction
Whether this channel span is for uplink, downlink, or both directions.
Definition: LoRaWAN.h:181
-Structure to save information about MAC command.
Definition: LoRaWAN.h:253
-size_t len
Length of the payload.
Definition: LoRaWAN.h:258
-uint8_t cid
The command ID.
Definition: LoRaWAN.h:255
-uint8_t repeat
Repetition counter (the command will be uplinked repeat + 1 times)
Definition: LoRaWAN.h:264
-uint8_t payload[5]
Payload buffer (5 bytes is the longest possible)
Definition: LoRaWAN.h:261
-Definition: LoRaWAN.h:267
+Structure to save information about LoRaWAN band.
Definition: LoRaWAN.h:208
+uint8_t cfListType
Whether the optional channels are defined as list of frequencies or bit mask.
Definition: LoRaWAN.h:225
+LoRaWANChannelSpan_t backupChannel
Backup downlink (RX2) channel - just a single channel, but using the same structure for convenience.
Definition: LoRaWAN.h:237
+uint8_t downlinkDataRateBase
The base downlink data rate. Used to calculate data rate changes for adaptive data rate.
Definition: LoRaWAN.h:210
+int8_t powerMax
Maximum allowed output power in this band in dBm.
Definition: LoRaWAN.h:219
+LoRaWANChannelSpan_t defaultChannels[3]
Default uplink (TX/RX1) channels defined by LoRaWAN Regional Parameters.
Definition: LoRaWAN.h:234
+uint8_t payloadLenMax[RADIOLIB_LORAWAN_CHANNEL_NUM_DATARATES]
Array of allowed maximum payload lengths for each data rate.
Definition: LoRaWAN.h:216
+int8_t powerNumSteps
Number of power steps in this band.
Definition: LoRaWAN.h:222
+float fskFreq
FSK channel frequency.
Definition: LoRaWAN.h:228
+uint8_t numChannelSpans
Number of channel spans in the band.
Definition: LoRaWAN.h:231
+uint8_t downlinkDataRateMin
The minimum allowed downlink data rate. Used to calculate data rate changes for adaptive data rate.
Definition: LoRaWAN.h:213
+Structure to save information about LoRaWAN channels. To save space, adjacent channels are saved in "...
Definition: LoRaWAN.h:181
+uint8_t joinRequestDataRate
Allowed data rates for a join request message.
Definition: LoRaWAN.h:186
+float freqStart
Center frequency of the first channel in span.
Definition: LoRaWAN.h:192
+uint8_t numChannels
Total number of channels in the span.
Definition: LoRaWAN.h:189
+uint8_t dataRates[RADIOLIB_LORAWAN_CHANNEL_NUM_DATARATES]
Array of datarates supported by all channels in the span.
Definition: LoRaWAN.h:198
+float freqStep
Frequency step between adjacent channels.
Definition: LoRaWAN.h:195
+uint8_t direction
Whether this channel span is for uplink, downlink, or both directions.
Definition: LoRaWAN.h:183
+Structure to save information about MAC command.
Definition: LoRaWAN.h:255
+size_t len
Length of the payload.
Definition: LoRaWAN.h:260
+uint8_t cid
The command ID.
Definition: LoRaWAN.h:257
+uint8_t repeat
Repetition counter (the command will be uplinked repeat + 1 times)
Definition: LoRaWAN.h:266
+uint8_t payload[5]
Payload buffer (5 bytes is the longest possible)
Definition: LoRaWAN.h:263
+Definition: LoRaWAN.h:269
Definition: PhysicalLayer.h:21
diff --git a/_physical_layer_8h_source.html b/_physical_layer_8h_source.html
index d7cdf419..75fdd967 100644
--- a/_physical_layer_8h_source.html
+++ b/_physical_layer_8h_source.html
@@ -293,7 +293,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:57
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:276
+LoRaWAN-compatible node (class A device).
Definition: LoRaWAN.h:278
Implements all common low-level methods to control the wireless module. Every module class contains o...
Definition: Module.h:31
Client for Morse Code communication. The public interface is the same as Arduino Serial.
Definition: Morse.h:93