kopia lustrzana https://github.com/jgromes/RadioLib
Merge branch 'jgromes:master' into fix-sx126x-timeout
commit
8a8e0765a5
Plik diff jest za duży
Load Diff
|
@ -79,7 +79,6 @@
|
|||
#define RADIOLIB_LORAWAN_BAND_DYNAMIC (0)
|
||||
#define RADIOLIB_LORAWAN_BAND_FIXED (1)
|
||||
#define RADIOLIB_LORAWAN_CHANNEL_NUM_DATARATES (15)
|
||||
#define RADIOLIB_LORAWAN_CHANNEL_INDEX_NONE (0xFF >> 0)
|
||||
|
||||
// recommended default settings
|
||||
#define RADIOLIB_LORAWAN_RECEIVE_DELAY_1_MS (1000)
|
||||
|
@ -218,11 +217,10 @@
|
|||
#define RADIOLIB_LORAWAN_FPORT_TS009 (224)
|
||||
#define RADIOLIB_LORAWAN_FPORT_TS011 (226)
|
||||
|
||||
// the length of internal MAC command queue - hopefully this is enough for most use cases
|
||||
#define RADIOLIB_LORAWAN_MAC_COMMAND_QUEUE_SIZE (9)
|
||||
|
||||
// the maximum number of simultaneously available channels
|
||||
#define RADIOLIB_LORAWAN_NUM_AVAILABLE_CHANNELS (16)
|
||||
#define RADIOLIB_LORAWAN_MAX_NUM_DYNAMIC_CHANNELS (16)
|
||||
#define RADIOLIB_LORAWAN_MAX_NUM_SUBBANDS (12)
|
||||
#define RADIOLIB_LORAWAN_MAX_NUM_FIXED_CHANNELS (96)
|
||||
|
||||
// maximum MAC command sizes
|
||||
#define RADIOLIB_LORAWAN_MAX_MAC_COMMAND_LEN_DOWN (5)
|
||||
|
@ -231,6 +229,12 @@
|
|||
|
||||
#define RADIOLIB_LORAWAN_MAX_DOWNLINK_SIZE (250)
|
||||
|
||||
// session states
|
||||
#define RADIOLIB_LORAWAN_SESSION_NONE (0x00)
|
||||
#define RADIOLIB_LORAWAN_SESSION_ACTIVATING (0x01)
|
||||
#define RADIOLIB_LORAWAN_SESSION_PENDING (0x02)
|
||||
#define RADIOLIB_LORAWAN_SESSION_ACTIVE (0x03)
|
||||
|
||||
// threshold at which sleeping via user callback enabled, in ms
|
||||
#define RADIOLIB_LORAWAN_DELAY_SLEEP_THRESHOLD (50)
|
||||
|
||||
|
@ -316,7 +320,7 @@ constexpr LoRaWANPackage_t PackageTable[RADIOLIB_LORAWAN_NUM_SUPPORTED_PACKAGES]
|
|||
|
||||
#define RADIOLIB_LORAWAN_PACKAGE_NONE { .packId = 0, .packFPort = 0, .isAppPack = false, .fixedFPort = false, .enabled = false, .callback = NULL }
|
||||
|
||||
#define RADIOLIB_LORAWAN_NONCES_VERSION_VAL (0x0002)
|
||||
#define RADIOLIB_LORAWAN_NONCES_VERSION_VAL (0x0003)
|
||||
|
||||
enum LoRaWANSchemeBase_t {
|
||||
RADIOLIB_LORAWAN_NONCES_START = 0x00,
|
||||
|
@ -326,20 +330,20 @@ enum LoRaWANSchemeBase_t {
|
|||
RADIOLIB_LORAWAN_NONCES_CHECKSUM = RADIOLIB_LORAWAN_NONCES_PLAN + sizeof(uint8_t), // 2 bytes
|
||||
RADIOLIB_LORAWAN_NONCES_DEV_NONCE = RADIOLIB_LORAWAN_NONCES_CHECKSUM + sizeof(uint16_t), // 2 bytes
|
||||
RADIOLIB_LORAWAN_NONCES_JOIN_NONCE = RADIOLIB_LORAWAN_NONCES_DEV_NONCE + sizeof(uint16_t), // 3 bytes
|
||||
RADIOLIB_LORAWAN_NONCES_ACTIVE = RADIOLIB_LORAWAN_NONCES_JOIN_NONCE + 3, // 1 byte
|
||||
RADIOLIB_LORAWAN_NONCES_SIGNATURE = RADIOLIB_LORAWAN_NONCES_ACTIVE + sizeof(uint8_t), // 2 bytes
|
||||
RADIOLIB_LORAWAN_NONCES_SIGNATURE = RADIOLIB_LORAWAN_NONCES_JOIN_NONCE + 3, // 2 bytes
|
||||
RADIOLIB_LORAWAN_NONCES_BUF_SIZE = RADIOLIB_LORAWAN_NONCES_SIGNATURE + sizeof(uint16_t) // Nonces buffer size
|
||||
};
|
||||
|
||||
enum LoRaWANSchemeSession_t {
|
||||
RADIOLIB_LORAWAN_SESSION_START = 0x00,
|
||||
RADIOLIB_LORAWAN_SESSION_NWK_SENC_KEY = RADIOLIB_LORAWAN_SESSION_START, // 16 bytes
|
||||
RADIOLIB_LORAWAN_SESSION_STATUS = RADIOLIB_LORAWAN_SESSION_START, // 1 byte
|
||||
RADIOLIB_LORAWAN_SESSION_NWK_SENC_KEY = RADIOLIB_LORAWAN_SESSION_STATUS + 1, // 16 bytes
|
||||
RADIOLIB_LORAWAN_SESSION_APP_SKEY = RADIOLIB_LORAWAN_SESSION_NWK_SENC_KEY + RADIOLIB_AES128_KEY_SIZE, // 16 bytes
|
||||
RADIOLIB_LORAWAN_SESSION_FNWK_SINT_KEY = RADIOLIB_LORAWAN_SESSION_APP_SKEY + RADIOLIB_AES128_KEY_SIZE, // 16 bytes
|
||||
RADIOLIB_LORAWAN_SESSION_SNWK_SINT_KEY = RADIOLIB_LORAWAN_SESSION_FNWK_SINT_KEY + RADIOLIB_AES128_KEY_SIZE, // 16 bytes
|
||||
RADIOLIB_LORAWAN_SESSION_DEV_ADDR = RADIOLIB_LORAWAN_SESSION_SNWK_SINT_KEY + RADIOLIB_AES128_KEY_SIZE, // 4 bytes
|
||||
RADIOLIB_LORAWAN_SESSION_NONCES_SIGNATURE = RADIOLIB_LORAWAN_SESSION_DEV_ADDR + sizeof(uint32_t), // 2 bytes
|
||||
RADIOLIB_LORAWAN_SESSION_FCNT_UP = RADIOLIB_LORAWAN_SESSION_NONCES_SIGNATURE + sizeof(uint16_t), // 4 bytes
|
||||
RADIOLIB_LORAWAN_SESSION_NONCES_SIGNATURE = RADIOLIB_LORAWAN_SESSION_DEV_ADDR + sizeof(uint32_t), // 2 bytes
|
||||
RADIOLIB_LORAWAN_SESSION_FCNT_UP = RADIOLIB_LORAWAN_SESSION_NONCES_SIGNATURE + sizeof(uint16_t), // 4 bytes
|
||||
RADIOLIB_LORAWAN_SESSION_N_FCNT_DOWN = RADIOLIB_LORAWAN_SESSION_FCNT_UP + sizeof(uint32_t), // 4 bytes
|
||||
RADIOLIB_LORAWAN_SESSION_A_FCNT_DOWN = RADIOLIB_LORAWAN_SESSION_N_FCNT_DOWN + sizeof(uint32_t), // 4 bytes
|
||||
RADIOLIB_LORAWAN_SESSION_ADR_FCNT = RADIOLIB_LORAWAN_SESSION_A_FCNT_DOWN + sizeof(uint32_t), // 4 bytes
|
||||
|
@ -349,19 +353,19 @@ enum LoRaWANSchemeSession_t {
|
|||
RADIOLIB_LORAWAN_SESSION_RJ_COUNT1 = RADIOLIB_LORAWAN_SESSION_RJ_COUNT0 + sizeof(uint16_t), // 2 bytes
|
||||
RADIOLIB_LORAWAN_SESSION_HOMENET_ID = RADIOLIB_LORAWAN_SESSION_RJ_COUNT1 + sizeof(uint16_t), // 4 bytes
|
||||
RADIOLIB_LORAWAN_SESSION_VERSION = RADIOLIB_LORAWAN_SESSION_HOMENET_ID + sizeof(uint32_t), // 1 byte
|
||||
RADIOLIB_LORAWAN_SESSION_CLASS = RADIOLIB_LORAWAN_SESSION_VERSION + 1, // 1 byte
|
||||
RADIOLIB_LORAWAN_SESSION_LINK_ADR = RADIOLIB_LORAWAN_SESSION_CLASS + sizeof(uint8_t), // 14 bytes
|
||||
RADIOLIB_LORAWAN_SESSION_DUTY_CYCLE = RADIOLIB_LORAWAN_SESSION_LINK_ADR + 14, // 1 byte
|
||||
RADIOLIB_LORAWAN_SESSION_RX_PARAM_SETUP = RADIOLIB_LORAWAN_SESSION_DUTY_CYCLE + 1, // 4 bytes
|
||||
RADIOLIB_LORAWAN_SESSION_RX_TIMING_SETUP = RADIOLIB_LORAWAN_SESSION_RX_PARAM_SETUP + 4, // 1 byte
|
||||
RADIOLIB_LORAWAN_SESSION_TX_PARAM_SETUP = RADIOLIB_LORAWAN_SESSION_RX_TIMING_SETUP + 1, // 1 byte
|
||||
RADIOLIB_LORAWAN_SESSION_ADR_PARAM_SETUP = RADIOLIB_LORAWAN_SESSION_TX_PARAM_SETUP + 1, // 1 byte
|
||||
RADIOLIB_LORAWAN_SESSION_REJOIN_PARAM_SETUP = RADIOLIB_LORAWAN_SESSION_ADR_PARAM_SETUP + 1, // 1 byte
|
||||
RADIOLIB_LORAWAN_SESSION_UL_CHANNELS = RADIOLIB_LORAWAN_SESSION_REJOIN_PARAM_SETUP + 1, // 16*5 bytes
|
||||
RADIOLIB_LORAWAN_SESSION_DL_CHANNELS = RADIOLIB_LORAWAN_SESSION_UL_CHANNELS + RADIOLIB_LORAWAN_NUM_AVAILABLE_CHANNELS*5, // 16*4 bytes
|
||||
RADIOLIB_LORAWAN_SESSION_AVAILABLE_CHANNELS = RADIOLIB_LORAWAN_SESSION_DL_CHANNELS + RADIOLIB_LORAWAN_NUM_AVAILABLE_CHANNELS*4, // 2 bytes
|
||||
RADIOLIB_LORAWAN_SESSION_MAC_QUEUE = RADIOLIB_LORAWAN_SESSION_AVAILABLE_CHANNELS + sizeof(uint16_t), // 15 bytes
|
||||
RADIOLIB_LORAWAN_SESSION_MAC_QUEUE_LEN = RADIOLIB_LORAWAN_SESSION_MAC_QUEUE + RADIOLIB_LORAWAN_FHDR_FOPTS_MAX_LEN, // 1 byte
|
||||
RADIOLIB_LORAWAN_SESSION_CLASS = RADIOLIB_LORAWAN_SESSION_VERSION + 1, // 1 byte
|
||||
RADIOLIB_LORAWAN_SESSION_LINK_ADR = RADIOLIB_LORAWAN_SESSION_CLASS + sizeof(uint8_t), // 14 bytes
|
||||
RADIOLIB_LORAWAN_SESSION_DUTY_CYCLE = RADIOLIB_LORAWAN_SESSION_LINK_ADR + 14, // 1 byte
|
||||
RADIOLIB_LORAWAN_SESSION_RX_PARAM_SETUP = RADIOLIB_LORAWAN_SESSION_DUTY_CYCLE + 1, // 4 bytes
|
||||
RADIOLIB_LORAWAN_SESSION_RX_TIMING_SETUP = RADIOLIB_LORAWAN_SESSION_RX_PARAM_SETUP + 4, // 1 byte
|
||||
RADIOLIB_LORAWAN_SESSION_TX_PARAM_SETUP = RADIOLIB_LORAWAN_SESSION_RX_TIMING_SETUP + 1, // 1 byte
|
||||
RADIOLIB_LORAWAN_SESSION_ADR_PARAM_SETUP = RADIOLIB_LORAWAN_SESSION_TX_PARAM_SETUP + 1, // 1 byte
|
||||
RADIOLIB_LORAWAN_SESSION_REJOIN_PARAM_SETUP = RADIOLIB_LORAWAN_SESSION_ADR_PARAM_SETUP + 1, // 1 byte
|
||||
RADIOLIB_LORAWAN_SESSION_UL_CHANNELS = RADIOLIB_LORAWAN_SESSION_REJOIN_PARAM_SETUP + 1, // 16*5 bytes
|
||||
RADIOLIB_LORAWAN_SESSION_DL_CHANNELS = RADIOLIB_LORAWAN_SESSION_UL_CHANNELS + RADIOLIB_LORAWAN_MAX_NUM_DYNAMIC_CHANNELS*5, // 16*4 bytes
|
||||
RADIOLIB_LORAWAN_SESSION_AVAILABLE_CHANNELS = RADIOLIB_LORAWAN_SESSION_DL_CHANNELS + RADIOLIB_LORAWAN_MAX_NUM_DYNAMIC_CHANNELS*4, // 2 bytes
|
||||
RADIOLIB_LORAWAN_SESSION_MAC_QUEUE = RADIOLIB_LORAWAN_SESSION_AVAILABLE_CHANNELS + RADIOLIB_LORAWAN_MAX_NUM_SUBBANDS, // 12 bytes // 15 bytes
|
||||
RADIOLIB_LORAWAN_SESSION_MAC_QUEUE_LEN = RADIOLIB_LORAWAN_SESSION_MAC_QUEUE + RADIOLIB_LORAWAN_FHDR_FOPTS_MAX_LEN, // 1 byte
|
||||
RADIOLIB_LORAWAN_SESSION_SIGNATURE = RADIOLIB_LORAWAN_SESSION_MAC_QUEUE_LEN + sizeof(uint8_t), // 2 bytes
|
||||
RADIOLIB_LORAWAN_SESSION_BUF_SIZE = RADIOLIB_LORAWAN_SESSION_SIGNATURE + sizeof(uint16_t) // Session buffer size
|
||||
};
|
||||
|
@ -372,9 +376,6 @@ enum LoRaWANSchemeSession_t {
|
|||
To save space, adjacent channels are saved in "spans".
|
||||
*/
|
||||
struct LoRaWANChannel_t {
|
||||
/*! \brief Whether this channel is enabled (can be used) or is disabled */
|
||||
bool enabled;
|
||||
|
||||
/*! \brief The channel number, as specified by defaults or the network */
|
||||
uint8_t idx;
|
||||
|
||||
|
@ -389,14 +390,11 @@ struct LoRaWANChannel_t {
|
|||
|
||||
/*! \brief Datarate currently in use on this channel */
|
||||
uint8_t dr;
|
||||
|
||||
/*! \brief Whether this channel is available for channel selection */
|
||||
bool available;
|
||||
};
|
||||
|
||||
// alias for unused channel
|
||||
#define RADIOLIB_LORAWAN_CHANNEL_NONE { .enabled = false, .idx = RADIOLIB_LORAWAN_CHANNEL_INDEX_NONE, .freq = 0, \
|
||||
.drMin = 0, .drMax = 0, .dr = RADIOLIB_LORAWAN_DATA_RATE_UNUSED, .available = false }
|
||||
#define RADIOLIB_LORAWAN_CHANNEL_NONE { .idx = 0, .freq = 0, .drMin = 0, .drMax = 0, \
|
||||
.dr = RADIOLIB_LORAWAN_DATA_RATE_UNUSED }
|
||||
|
||||
/*!
|
||||
\struct LoRaWANChannelSpan_t
|
||||
|
@ -613,7 +611,7 @@ class LoRaWANNode {
|
|||
int16_t setBufferNonces(const uint8_t* persistentBuffer);
|
||||
|
||||
/*!
|
||||
\brief Clear an active session, so that the device will have to rejoin the network.
|
||||
\brief Clear an active session. This requires the device to rejoin the network.
|
||||
*/
|
||||
void clearSession();
|
||||
|
||||
|
@ -655,18 +653,16 @@ class LoRaWANNode {
|
|||
/*!
|
||||
\brief Join network by restoring OTAA session or performing over-the-air activation. By this procedure,
|
||||
the device will perform an exchange with the network server and set all necessary configuration.
|
||||
\param joinDr The datarate at which to send the join-request and any subsequent uplinks (unless ADR is enabled)
|
||||
\returns \ref status_codes
|
||||
*/
|
||||
virtual int16_t activateOTAA(uint8_t initialDr = RADIOLIB_LORAWAN_DATA_RATE_UNUSED, LoRaWANJoinEvent_t *joinEvent = NULL);
|
||||
virtual int16_t activateOTAA(LoRaWANJoinEvent_t *joinEvent = NULL);
|
||||
|
||||
/*!
|
||||
\brief Join network by restoring ABP session or performing over-the-air activation.
|
||||
In this procedure, all necessary configuration must be provided by the user.
|
||||
\param initialDr The datarate at which to send the first uplink and any subsequent uplinks (unless ADR is enabled).
|
||||
\returns \ref status_codes
|
||||
*/
|
||||
virtual int16_t activateABP(uint8_t initialDr = RADIOLIB_LORAWAN_DATA_RATE_UNUSED);
|
||||
virtual int16_t activateABP();
|
||||
|
||||
/*! \brief Whether there is an ongoing session active */
|
||||
bool isActivated();
|
||||
|
@ -999,7 +995,7 @@ class LoRaWANNode {
|
|||
|
||||
uint16_t lwMode = RADIOLIB_LORAWAN_MODE_NONE;
|
||||
uint8_t lwClass = RADIOLIB_LORAWAN_CLASS_A;
|
||||
bool isActive = false;
|
||||
uint8_t sessionStatus = RADIOLIB_LORAWAN_SESSION_NONE;
|
||||
|
||||
uint64_t joinEUI = 0;
|
||||
uint64_t devEUI = 0;
|
||||
|
@ -1074,8 +1070,12 @@ class LoRaWANNode {
|
|||
// number of CADs to estimate a clear channel
|
||||
uint8_t difsSlots = RADIOLIB_LORAWAN_DIFS_DEFAULT;
|
||||
|
||||
// available channel frequencies from list passed during OTA activation
|
||||
LoRaWANChannel_t channelPlan[2][RADIOLIB_LORAWAN_NUM_AVAILABLE_CHANNELS];
|
||||
// dynamic channels
|
||||
LoRaWANChannel_t dynamicChannels[2][RADIOLIB_LORAWAN_MAX_NUM_DYNAMIC_CHANNELS];
|
||||
|
||||
// masks: which channels are defined/active; flags: which should be used next
|
||||
uint16_t channelMasks[RADIOLIB_LORAWAN_MAX_NUM_FIXED_CHANNELS / 16] = { 0 };
|
||||
uint16_t channelFlags[RADIOLIB_LORAWAN_MAX_NUM_FIXED_CHANNELS / 16] = { 0 };
|
||||
|
||||
// currently configured channels for Tx, Rx1, Rx2, RxBC
|
||||
LoRaWANChannel_t channels[4] = { RADIOLIB_LORAWAN_CHANNEL_NONE, RADIOLIB_LORAWAN_CHANNEL_NONE,
|
||||
|
@ -1115,8 +1115,8 @@ class LoRaWANNode {
|
|||
// this will reset the device credentials, so the device starts completely new
|
||||
void clearNonces();
|
||||
|
||||
// start a fresh session using default parameters
|
||||
void createSession(uint16_t lwMode, uint8_t initialDr);
|
||||
// setup an empty session with default parameters
|
||||
void createSession();
|
||||
|
||||
// setup Join-Request payload
|
||||
void composeJoinRequest(uint8_t* joinRequestMsg);
|
||||
|
@ -1208,30 +1208,16 @@ class LoRaWANNode {
|
|||
// perform a single CAD operation for the under SF/CH combination. Returns either busy or otherwise.
|
||||
bool cadChannelClear();
|
||||
|
||||
// add all default channels on top of the current channels
|
||||
void addDefaultChannels();
|
||||
// enable all default channels on top of the current channels
|
||||
void enableDefaultChannels(bool addDynamic = false);
|
||||
|
||||
// get a complete 80-bit channel mask for current configuration
|
||||
void getChannelPlanMask(uint64_t* chMaskGrp0123, uint32_t* chMaskGrp45);
|
||||
|
||||
// get the number of available channels,
|
||||
// along with a 16-bit mask indicating which channels can be used next for uplink/downlink
|
||||
uint8_t getAvailableChannels(uint16_t* mask);
|
||||
|
||||
// (re)set/restore which channels can be used next for uplink/downlink
|
||||
void setAvailableChannels(uint16_t mask);
|
||||
// calculate which channels are available given the current datarate
|
||||
// returns true if there is any such channel, false otherwise
|
||||
bool calculateChannelFlags();
|
||||
|
||||
// select a set of random TX/RX channels for up- and downlink
|
||||
int16_t selectChannels();
|
||||
|
||||
// apply a 96-bit channel mask
|
||||
bool applyChannelMask(uint64_t chMaskGrp0123, uint32_t chMaskGrp45);
|
||||
|
||||
#if RADIOLIB_DEBUG_PROTOCOL
|
||||
// print the available channels through debug
|
||||
void printChannels();
|
||||
#endif
|
||||
|
||||
// method to generate message integrity code
|
||||
uint32_t generateMIC(const uint8_t* msg, size_t len, uint8_t* key);
|
||||
|
||||
|
|
|
@ -30,9 +30,9 @@ const LoRaWANBand_t EU868 = {
|
|||
.dwellTimeDn = 0,
|
||||
.txParamSupported = false,
|
||||
.txFreqs = {
|
||||
{ .enabled = true, .idx = 0, .freq = 8681000, .drMin = 0, .drMax = 5, .dr = 3, .available = true },
|
||||
{ .enabled = true, .idx = 1, .freq = 8683000, .drMin = 0, .drMax = 5, .dr = 3, .available = true },
|
||||
{ .enabled = true, .idx = 2, .freq = 8685000, .drMin = 0, .drMax = 5, .dr = 3, .available = true },
|
||||
{ .idx = 0, .freq = 8681000, .drMin = 0, .drMax = 5, .dr = 3 },
|
||||
{ .idx = 1, .freq = 8683000, .drMin = 0, .drMax = 5, .dr = 3 },
|
||||
{ .idx = 2, .freq = 8685000, .drMin = 0, .drMax = 5, .dr = 3 },
|
||||
},
|
||||
.numTxSpans = 0,
|
||||
.txSpans = {
|
||||
|
@ -57,14 +57,14 @@ const LoRaWANBand_t EU868 = {
|
|||
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
|
||||
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
|
||||
},
|
||||
.rx2 = { .enabled = true, .idx = 0, .freq = 8695250, .drMin = 0, .drMax = 7, .dr = 0, .available = true },
|
||||
.rx2 = { .idx = 0, .freq = 8695250, .drMin = 0, .drMax = 7, .dr = 0 },
|
||||
.txWoR = {
|
||||
{ .enabled = true, .idx = 0, .freq = 8651000, .drMin = 3, .drMax = 3, .dr = 3, .available = true },
|
||||
{ .enabled = true, .idx = 1, .freq = 8655000, .drMin = 3, .drMax = 3, .dr = 3, .available = true }
|
||||
{ .idx = 0, .freq = 8651000, .drMin = 3, .drMax = 3, .dr = 3 },
|
||||
{ .idx = 1, .freq = 8655000, .drMin = 3, .drMax = 3, .dr = 3 }
|
||||
},
|
||||
.txAck = {
|
||||
{ .enabled = true, .idx = 0, .freq = 8653000, .drMin = 3, .drMax = 3, .dr = 3, .available = true },
|
||||
{ .enabled = true, .idx = 1, .freq = 8659000, .drMin = 3, .drMax = 3, .dr = 3, .available = true }
|
||||
{ .idx = 0, .freq = 8653000, .drMin = 3, .drMax = 3, .dr = 3 },
|
||||
{ .idx = 1, .freq = 8659000, .drMin = 3, .drMax = 3, .dr = 3 }
|
||||
},
|
||||
.dataRates = {
|
||||
RADIOLIB_LORAWAN_DATA_RATE_LORA | RADIOLIB_LORAWAN_DATA_RATE_SF_12 | RADIOLIB_LORAWAN_DATA_RATE_BW_125_KHZ,
|
||||
|
@ -146,14 +146,14 @@ const LoRaWANBand_t US915 = {
|
|||
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
|
||||
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
|
||||
},
|
||||
.rx2 = { .enabled = true, .idx = 0, .freq = 9233000, .drMin = 8, .drMax = 13, .dr = 8, .available = true },
|
||||
.rx2 = { .idx = 0, .freq = 9233000, .drMin = 8, .drMax = 13, .dr = 8 },
|
||||
.txWoR = {
|
||||
{ .enabled = true, .idx = 0, .freq = 9167000, .drMin = 10, .drMax = 10, .dr = 10, .available = true },
|
||||
{ .enabled = true, .idx = 1, .freq = 9199000, .drMin = 10, .drMax = 10, .dr = 10, .available = true }
|
||||
{ .idx = 0, .freq = 9167000, .drMin = 10, .drMax = 10, .dr = 10 },
|
||||
{ .idx = 1, .freq = 9199000, .drMin = 10, .drMax = 10, .dr = 10 }
|
||||
},
|
||||
.txAck = {
|
||||
{ .enabled = true, .idx = 0, .freq = 9183000, .drMin = 10, .drMax = 10, .dr = 10, .available = true },
|
||||
{ .enabled = true, .idx = 1, .freq = 9215000, .drMin = 10, .drMax = 10, .dr = 10, .available = true }
|
||||
{ .idx = 0, .freq = 9183000, .drMin = 10, .drMax = 10, .dr = 10 },
|
||||
{ .idx = 1, .freq = 9215000, .drMin = 10, .drMax = 10, .dr = 10 }
|
||||
},
|
||||
.dataRates = {
|
||||
RADIOLIB_LORAWAN_DATA_RATE_LORA | RADIOLIB_LORAWAN_DATA_RATE_SF_10 | RADIOLIB_LORAWAN_DATA_RATE_BW_125_KHZ,
|
||||
|
@ -187,9 +187,9 @@ const LoRaWANBand_t EU433 = {
|
|||
.dwellTimeDn = 0,
|
||||
.txParamSupported = false,
|
||||
.txFreqs = {
|
||||
{ .enabled = true, .idx = 0, .freq = 4331750, .drMin = 0, .drMax = 5, .dr = 3, .available = true },
|
||||
{ .enabled = true, .idx = 1, .freq = 4333750, .drMin = 0, .drMax = 5, .dr = 3, .available = true },
|
||||
{ .enabled = true, .idx = 2, .freq = 4335750, .drMin = 0, .drMax = 5, .dr = 3, .available = true },
|
||||
{ .idx = 0, .freq = 4331750, .drMin = 0, .drMax = 5, .dr = 3 },
|
||||
{ .idx = 1, .freq = 4333750, .drMin = 0, .drMax = 5, .dr = 3 },
|
||||
{ .idx = 2, .freq = 4335750, .drMin = 0, .drMax = 5, .dr = 3 },
|
||||
},
|
||||
.numTxSpans = 0,
|
||||
.txSpans = {
|
||||
|
@ -214,7 +214,7 @@ const LoRaWANBand_t EU433 = {
|
|||
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
|
||||
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
|
||||
},
|
||||
.rx2 = { .enabled = true, .idx = 0, .freq = 4346650, .drMin = 0, .drMax = 7, .dr = 0, .available = true },
|
||||
.rx2 = { .idx = 0, .freq = 4346650, .drMin = 0, .drMax = 7, .dr = 0 },
|
||||
.txWoR = {
|
||||
RADIOLIB_LORAWAN_CHANNEL_NONE,
|
||||
RADIOLIB_LORAWAN_CHANNEL_NONE
|
||||
|
@ -303,14 +303,14 @@ const LoRaWANBand_t AU915 = {
|
|||
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
|
||||
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
|
||||
},
|
||||
.rx2 = { .enabled = true, .idx = 0, .freq = 9233000, .drMin = 8, .drMax = 13, .dr = 8, .available = true },
|
||||
.rx2 = { .idx = 0, .freq = 9233000, .drMin = 8, .drMax = 13, .dr = 8 },
|
||||
.txWoR = {
|
||||
{ .enabled = true, .idx = 0, .freq = 9167000, .drMin = 10, .drMax = 10, .dr = 10, .available = true },
|
||||
{ .enabled = true, .idx = 1, .freq = 9199000, .drMin = 10, .drMax = 10, .dr = 10, .available = true }
|
||||
{ .idx = 0, .freq = 9167000, .drMin = 10, .drMax = 10, .dr = 10 },
|
||||
{ .idx = 1, .freq = 9199000, .drMin = 10, .drMax = 10, .dr = 10 }
|
||||
},
|
||||
.txAck = {
|
||||
{ .enabled = true, .idx = 0, .freq = 9183000, .drMin = 10, .drMax = 10, .dr = 10, .available = true },
|
||||
{ .enabled = true, .idx = 1, .freq = 9215000, .drMin = 10, .drMax = 10, .dr = 10, .available = true }
|
||||
{ .idx = 0, .freq = 9183000, .drMin = 10, .drMax = 10, .dr = 10 },
|
||||
{ .idx = 1, .freq = 9215000, .drMin = 10, .drMax = 10, .dr = 10 }
|
||||
},
|
||||
.dataRates = {
|
||||
RADIOLIB_LORAWAN_DATA_RATE_LORA | RADIOLIB_LORAWAN_DATA_RATE_SF_12 | RADIOLIB_LORAWAN_DATA_RATE_BW_125_KHZ,
|
||||
|
@ -385,7 +385,7 @@ const LoRaWANBand_t CN470 = {
|
|||
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
|
||||
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
|
||||
},
|
||||
.rx2 = { .enabled = true, .idx = 0, .freq = 5053000, .drMin = 0, .drMax = 5, .dr = 0, .available = true },
|
||||
.rx2 = { .idx = 0, .freq = 5053000, .drMin = 0, .drMax = 5, .dr = 0 },
|
||||
.txWoR = {
|
||||
RADIOLIB_LORAWAN_CHANNEL_NONE,
|
||||
RADIOLIB_LORAWAN_CHANNEL_NONE
|
||||
|
@ -426,8 +426,8 @@ const LoRaWANBand_t AS923 = {
|
|||
.dwellTimeDn = RADIOLIB_LORAWAN_DWELL_TIME,
|
||||
.txParamSupported = true,
|
||||
.txFreqs = {
|
||||
{ .enabled = true, .idx = 0, .freq = 9232000, .drMin = 0, .drMax = 5, .dr = 3, .available = true },
|
||||
{ .enabled = true, .idx = 1, .freq = 9234000, .drMin = 0, .drMax = 5, .dr = 3, .available = true },
|
||||
{ .idx = 0, .freq = 9232000, .drMin = 0, .drMax = 5, .dr = 3 },
|
||||
{ .idx = 1, .freq = 9234000, .drMin = 0, .drMax = 5, .dr = 3 },
|
||||
RADIOLIB_LORAWAN_CHANNEL_NONE
|
||||
},
|
||||
.numTxSpans = 0,
|
||||
|
@ -453,13 +453,13 @@ const LoRaWANBand_t AS923 = {
|
|||
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
|
||||
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
|
||||
},
|
||||
.rx2 = { .enabled = true, .idx = 0, .freq = 9232000, .drMin = 0, .drMax = 7, .dr = 2, .available = true },
|
||||
.rx2 = { .idx = 0, .freq = 9232000, .drMin = 0, .drMax = 7, .dr = 2 },
|
||||
.txWoR = {
|
||||
{ .enabled = true, .idx = 0, .freq = 9236000, .drMin = 3, .drMax = 3, .dr = 3, .available = true },
|
||||
{ .idx = 0, .freq = 9236000, .drMin = 3, .drMax = 3, .dr = 3 },
|
||||
RADIOLIB_LORAWAN_CHANNEL_NONE
|
||||
},
|
||||
.txAck = {
|
||||
{ .enabled = true, .idx = 0, .freq = 9238000, .drMin = 3, .drMax = 3, .dr = 3, .available = true },
|
||||
{ .idx = 0, .freq = 9238000, .drMin = 3, .drMax = 3, .dr = 3 },
|
||||
RADIOLIB_LORAWAN_CHANNEL_NONE
|
||||
},
|
||||
.dataRates = {
|
||||
|
@ -494,8 +494,8 @@ const LoRaWANBand_t AS923_2 = {
|
|||
.dwellTimeDn = RADIOLIB_LORAWAN_DWELL_TIME,
|
||||
.txParamSupported = true,
|
||||
.txFreqs = {
|
||||
{ .enabled = true, .idx = 0, .freq = 9214000, .drMin = 0, .drMax = 5, .dr = 3, .available = true },
|
||||
{ .enabled = true, .idx = 1, .freq = 9216000, .drMin = 0, .drMax = 5, .dr = 3, .available = true },
|
||||
{ .idx = 0, .freq = 9214000, .drMin = 0, .drMax = 5, .dr = 3 },
|
||||
{ .idx = 1, .freq = 9216000, .drMin = 0, .drMax = 5, .dr = 3 },
|
||||
RADIOLIB_LORAWAN_CHANNEL_NONE
|
||||
},
|
||||
.numTxSpans = 0,
|
||||
|
@ -521,13 +521,13 @@ const LoRaWANBand_t AS923_2 = {
|
|||
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
|
||||
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
|
||||
},
|
||||
.rx2 = { .enabled = true, .idx = 0, .freq = 9214000, .drMin = 0, .drMax = 7, .dr = 2, .available = true },
|
||||
.rx2 = { .idx = 0, .freq = 9214000, .drMin = 0, .drMax = 7, .dr = 2 },
|
||||
.txWoR = {
|
||||
{ .enabled = true, .idx = 0, .freq = 9218000, .drMin = 3, .drMax = 3, .dr = 3, .available = true },
|
||||
{ .idx = 0, .freq = 9218000, .drMin = 3, .drMax = 3, .dr = 3 },
|
||||
RADIOLIB_LORAWAN_CHANNEL_NONE
|
||||
},
|
||||
.txAck = {
|
||||
{ .enabled = true, .idx = 0, .freq = 9220000, .drMin = 3, .drMax = 3, .dr = 3, .available = true },
|
||||
{ .idx = 0, .freq = 9220000, .drMin = 3, .drMax = 3, .dr = 3 },
|
||||
RADIOLIB_LORAWAN_CHANNEL_NONE
|
||||
},
|
||||
.dataRates = {
|
||||
|
@ -562,8 +562,8 @@ const LoRaWANBand_t AS923_3 = {
|
|||
.dwellTimeDn = RADIOLIB_LORAWAN_DWELL_TIME,
|
||||
.txParamSupported = true,
|
||||
.txFreqs = {
|
||||
{ .enabled = true, .idx = 0, .freq = 9166000, .drMin = 0, .drMax = 5, .dr = 3, .available = true },
|
||||
{ .enabled = true, .idx = 1, .freq = 9168000, .drMin = 0, .drMax = 5, .dr = 3, .available = true },
|
||||
{ .idx = 0, .freq = 9166000, .drMin = 0, .drMax = 5, .dr = 3 },
|
||||
{ .idx = 1, .freq = 9168000, .drMin = 0, .drMax = 5, .dr = 3 },
|
||||
RADIOLIB_LORAWAN_CHANNEL_NONE
|
||||
},
|
||||
.numTxSpans = 0,
|
||||
|
@ -589,13 +589,13 @@ const LoRaWANBand_t AS923_3 = {
|
|||
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
|
||||
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
|
||||
},
|
||||
.rx2 = { .enabled = true, .idx = 0, .freq = 9166000, .drMin = 0, .drMax = 7, .dr = 2, .available = true },
|
||||
.rx2 = { .idx = 0, .freq = 9166000, .drMin = 0, .drMax = 7, .dr = 2 },
|
||||
.txWoR = {
|
||||
{ .enabled = true, .idx = 0, .freq = 9170000, .drMin = 3, .drMax = 3, .dr = 3, .available = true },
|
||||
{ .idx = 0, .freq = 9170000, .drMin = 3, .drMax = 3, .dr = 3 },
|
||||
RADIOLIB_LORAWAN_CHANNEL_NONE
|
||||
},
|
||||
.txAck = {
|
||||
{ .enabled = true, .idx = 0, .freq = 9172000, .drMin = 3, .drMax = 3, .dr = 3, .available = true },
|
||||
{ .idx = 0, .freq = 9172000, .drMin = 3, .drMax = 3, .dr = 3 },
|
||||
RADIOLIB_LORAWAN_CHANNEL_NONE
|
||||
},
|
||||
.dataRates = {
|
||||
|
@ -630,8 +630,8 @@ const LoRaWANBand_t AS923_4 = {
|
|||
.dwellTimeDn = RADIOLIB_LORAWAN_DWELL_TIME,
|
||||
.txParamSupported = true,
|
||||
.txFreqs = {
|
||||
{ .enabled = true, .idx = 0, .freq = 9173000, .drMin = 0, .drMax = 5, .dr = 3, .available = true },
|
||||
{ .enabled = true, .idx = 1, .freq = 9175000, .drMin = 0, .drMax = 5, .dr = 3, .available = true },
|
||||
{ .idx = 0, .freq = 9173000, .drMin = 0, .drMax = 5, .dr = 3 },
|
||||
{ .idx = 1, .freq = 9175000, .drMin = 0, .drMax = 5, .dr = 3 },
|
||||
RADIOLIB_LORAWAN_CHANNEL_NONE
|
||||
},
|
||||
.numTxSpans = 0,
|
||||
|
@ -657,13 +657,13 @@ const LoRaWANBand_t AS923_4 = {
|
|||
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
|
||||
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
|
||||
},
|
||||
.rx2 = { .enabled = true, .idx = 0, .freq = 9173000, .drMin = 0, .drMax = 7, .dr = 2, .available = true },
|
||||
.rx2 = { .idx = 0, .freq = 9173000, .drMin = 0, .drMax = 7, .dr = 2 },
|
||||
.txWoR = {
|
||||
{ .enabled = true, .idx = 0, .freq = 9177000, .drMin = 3, .drMax = 3, .dr = 3, .available = true },
|
||||
{ .idx = 0, .freq = 9177000, .drMin = 3, .drMax = 3, .dr = 3 },
|
||||
RADIOLIB_LORAWAN_CHANNEL_NONE
|
||||
},
|
||||
.txAck = {
|
||||
{ .enabled = true, .idx = 0, .freq = 9179000, .drMin = 3, .drMax = 3, .dr = 3, .available = true },
|
||||
{ .idx = 0, .freq = 9179000, .drMin = 3, .drMax = 3, .dr = 3 },
|
||||
RADIOLIB_LORAWAN_CHANNEL_NONE
|
||||
},
|
||||
.dataRates = {
|
||||
|
@ -698,9 +698,9 @@ const LoRaWANBand_t KR920 = {
|
|||
.dwellTimeDn = 0,
|
||||
.txParamSupported = false,
|
||||
.txFreqs = {
|
||||
{ .enabled = true, .idx = 0, .freq = 9221000, .drMin = 0, .drMax = 5, .dr = 3, .available = true },
|
||||
{ .enabled = true, .idx = 1, .freq = 9223000, .drMin = 0, .drMax = 5, .dr = 3, .available = true },
|
||||
{ .enabled = true, .idx = 2, .freq = 9225000, .drMin = 0, .drMax = 5, .dr = 3, .available = true }
|
||||
{ .idx = 0, .freq = 9221000, .drMin = 0, .drMax = 5, .dr = 3 },
|
||||
{ .idx = 1, .freq = 9223000, .drMin = 0, .drMax = 5, .dr = 3 },
|
||||
{ .idx = 2, .freq = 9225000, .drMin = 0, .drMax = 5, .dr = 3 }
|
||||
},
|
||||
.numTxSpans = 0,
|
||||
.txSpans = {
|
||||
|
@ -725,14 +725,14 @@ const LoRaWANBand_t KR920 = {
|
|||
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
|
||||
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
|
||||
},
|
||||
.rx2 = { .enabled = true, .idx = 0, .freq = 9219000, .drMin = 0, .drMax = 5, .dr = 0, .available = true },
|
||||
.rx2 = { .idx = 0, .freq = 9219000, .drMin = 0, .drMax = 5, .dr = 0 },
|
||||
.txWoR = {
|
||||
{ .enabled = true, .idx = 0, .freq = 9227000, .drMin = 3, .drMax = 3, .dr = 3, .available = true },
|
||||
{ .enabled = true, .idx = 1, .freq = 9231000, .drMin = 3, .drMax = 3, .dr = 3, .available = true }
|
||||
{ .idx = 0, .freq = 9227000, .drMin = 3, .drMax = 3, .dr = 3 },
|
||||
{ .idx = 1, .freq = 9231000, .drMin = 3, .drMax = 3, .dr = 3 }
|
||||
},
|
||||
.txAck = {
|
||||
{ .enabled = true, .idx = 0, .freq = 9229000, .drMin = 3, .drMax = 3, .dr = 3, .available = true },
|
||||
{ .enabled = true, .idx = 1, .freq = 9231000, .drMin = 3, .drMax = 3, .dr = 3, .available = true }
|
||||
{ .idx = 0, .freq = 9229000, .drMin = 3, .drMax = 3, .dr = 3 },
|
||||
{ .idx = 1, .freq = 9231000, .drMin = 3, .drMax = 3, .dr = 3 }
|
||||
},
|
||||
.dataRates = {
|
||||
RADIOLIB_LORAWAN_DATA_RATE_LORA | RADIOLIB_LORAWAN_DATA_RATE_SF_12 | RADIOLIB_LORAWAN_DATA_RATE_BW_125_KHZ,
|
||||
|
@ -766,9 +766,9 @@ const LoRaWANBand_t IN865 = {
|
|||
.dwellTimeDn = 0,
|
||||
.txParamSupported = false,
|
||||
.txFreqs = {
|
||||
{ .enabled = true, .idx = 0, .freq = 8650625, .drMin = 0, .drMax = 5, .dr = 3, .available = true },
|
||||
{ .enabled = true, .idx = 1, .freq = 8654025, .drMin = 0, .drMax = 5, .dr = 3, .available = true },
|
||||
{ .enabled = true, .idx = 2, .freq = 8659850, .drMin = 0, .drMax = 5, .dr = 3, .available = true }
|
||||
{ .idx = 0, .freq = 8650625, .drMin = 0, .drMax = 5, .dr = 3 },
|
||||
{ .idx = 1, .freq = 8654025, .drMin = 0, .drMax = 5, .dr = 3 },
|
||||
{ .idx = 2, .freq = 8659850, .drMin = 0, .drMax = 5, .dr = 3 }
|
||||
},
|
||||
.numTxSpans = 0,
|
||||
.txSpans = {
|
||||
|
@ -793,14 +793,14 @@ const LoRaWANBand_t IN865 = {
|
|||
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
|
||||
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
|
||||
},
|
||||
.rx2 = { .enabled = true, .idx = 0, .freq = 8665500, .drMin = 0, .drMax = 7, .dr = 2, .available = true },
|
||||
.rx2 = { .idx = 0, .freq = 8665500, .drMin = 0, .drMax = 7, .dr = 2 },
|
||||
.txWoR = {
|
||||
{ .enabled = true, .idx = 0, .freq = 8660000, .drMin = 3, .drMax = 3, .dr = 3, .available = true },
|
||||
{ .enabled = true, .idx = 1, .freq = 8667000, .drMin = 3, .drMax = 3, .dr = 3, .available = true }
|
||||
{ .idx = 0, .freq = 8660000, .drMin = 3, .drMax = 3, .dr = 3 },
|
||||
{ .idx = 1, .freq = 8667000, .drMin = 3, .drMax = 3, .dr = 3 }
|
||||
},
|
||||
.txAck = {
|
||||
{ .enabled = true, .idx = 0, .freq = 8662000, .drMin = 3, .drMax = 3, .dr = 3, .available = true },
|
||||
{ .enabled = true, .idx = 1, .freq = 8669000, .drMin = 3, .drMax = 3, .dr = 3, .available = true }
|
||||
{ .idx = 0, .freq = 8662000, .drMin = 3, .drMax = 3, .dr = 3 },
|
||||
{ .idx = 1, .freq = 8669000, .drMin = 3, .drMax = 3, .dr = 3 }
|
||||
},
|
||||
.dataRates = {
|
||||
RADIOLIB_LORAWAN_DATA_RATE_LORA | RADIOLIB_LORAWAN_DATA_RATE_SF_12 | RADIOLIB_LORAWAN_DATA_RATE_BW_125_KHZ,
|
||||
|
|
Ładowanie…
Reference in New Issue