[LoRaWAN] Do not accept invalid Rx2 datarate

This commit is contained in:
StevenCellist 2024-09-07 16:00:53 +02:00
parent c0ba1e9901
commit efc06713c9
2 changed files with 14 additions and 12 deletions

View file

@ -1996,7 +1996,9 @@ bool LoRaWANNode::execMacCommand(uint8_t cid, uint8_t* optIn, uint8_t lenIn, uin
rx1DrOsAck = 1;
}
if(this->band->dataRates[macRx2Dr] != RADIOLIB_LORAWAN_DATA_RATE_UNUSED) {
rx2DrAck = 1;
if(macRx2Dr >= this->band->rx2.drMin && macRx2Dr <= this->band->rx2.drMax) {
rx2DrAck = 1;
}
}
if(this->phyLayer->setFrequency(macRx2Freq / 10000.0) == RADIOLIB_ERR_NONE) {
rx2FreqAck = 1;

View file

@ -60,7 +60,7 @@ 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 = 0, .dr = 0, .available = true },
.rx2 = { .enabled = true, .idx = 0, .freq = 8695250, .drMin = 0, .drMax = 7, .dr = 0, .available = true },
.txWoR = {
{ .enabled = true, .idx = 0, .freq = 8651000, .drMin = 2, .drMax = 2, .dr = 2, .available = true },
{ .enabled = true, .idx = 1, .freq = 8655000, .drMin = 2, .drMax = 2, .dr = 2, .available = true }
@ -152,7 +152,7 @@ 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 = 8, .dr = 8, .available = true },
.rx2 = { .enabled = true, .idx = 0, .freq = 9233000, .drMin = 8, .drMax = 13, .dr = 8, .available = true },
.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 }
@ -223,7 +223,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 = 0, .dr = 0, .available = true },
.rx2 = { .enabled = true, .idx = 0, .freq = 4346650, .drMin = 0, .drMax = 7, .dr = 0, .available = true },
.txWoR = {
RADIOLIB_LORAWAN_CHANNEL_NONE,
RADIOLIB_LORAWAN_CHANNEL_NONE
@ -315,7 +315,7 @@ 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 = 8, .dr = 8, .available = true },
.rx2 = { .enabled = true, .idx = 0, .freq = 9233000, .drMin = 8, .drMax = 13, .dr = 8, .available = true },
.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 }
@ -400,7 +400,7 @@ const LoRaWANBand_t CN500 = {
{ 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 = 0, .dr = 0, .available = true },
.rx2 = { .enabled = true, .idx = 0, .freq = 5053000, .drMin = 0, .drMax = 5, .dr = 0, .available = true },
.txWoR = {
RADIOLIB_LORAWAN_CHANNEL_NONE,
RADIOLIB_LORAWAN_CHANNEL_NONE
@ -471,7 +471,7 @@ 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 = 2, .drMax = 2, .dr = 2, .available = true },
.rx2 = { .enabled = true, .idx = 0, .freq = 9232000, .drMin = 0, .drMax = 7, .dr = 2, .available = true },
.txWoR = {
{ .enabled = true, .idx = 0, .freq = 9236000, .drMin = 3, .drMax = 3, .dr = 3, .available = true },
RADIOLIB_LORAWAN_CHANNEL_NONE
@ -542,7 +542,7 @@ 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 = 2, .drMax = 2, .dr = 2, .available = true },
.rx2 = { .enabled = true, .idx = 0, .freq = 9214000, .drMin = 0, .drMax = 7, .dr = 2, .available = true },
.txWoR = {
{ .enabled = true, .idx = 0, .freq = 9218000, .drMin = 3, .drMax = 3, .dr = 3, .available = true },
RADIOLIB_LORAWAN_CHANNEL_NONE
@ -613,7 +613,7 @@ 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 = 2, .drMax = 2, .dr = 2, .available = true },
.rx2 = { .enabled = true, .idx = 0, .freq = 9166000, .drMin = 0, .drMax = 7, .dr = 2, .available = true },
.txWoR = {
{ .enabled = true, .idx = 0, .freq = 9170000, .drMin = 3, .drMax = 3, .dr = 3, .available = true },
RADIOLIB_LORAWAN_CHANNEL_NONE
@ -684,7 +684,7 @@ 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 = 2, .drMax = 2, .dr = 2, .available = true },
.rx2 = { .enabled = true, .idx = 0, .freq = 9173000, .drMin = 0, .drMax = 7, .dr = 2, .available = true },
.txWoR = {
{ .enabled = true, .idx = 0, .freq = 9177000, .drMin = 3, .drMax = 3, .dr = 3, .available = true },
RADIOLIB_LORAWAN_CHANNEL_NONE
@ -755,7 +755,7 @@ 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 = 0, .dr = 0, .available = true },
.rx2 = { .enabled = true, .idx = 0, .freq = 9219000, .drMin = 0, .drMax = 5, .dr = 0, .available = true },
.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 }
@ -826,7 +826,7 @@ 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 = 2, .drMax = 2, .dr = 2, .available = true },
.rx2 = { .enabled = true, .idx = 0, .freq = 8665500, .drMin = 0, .drMax = 7, .dr = 2, .available = true },
.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 }