Skip to content

Commit 96184db

Browse files
committed
Fix #841: refer to bandplan for max Rx1DrOffset value
1 parent 2af14c9 commit 96184db

9 files changed

+42
-1
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1247,6 +1247,7 @@ function uflt12f(rawUflt12)
12471247
- HEAD has the following changes.
12481248

12491249
- Enable device time request by default in config file ([#840](https://github.com/mcci-catena/arduino-lmic/issues/840)).
1250+
- Correct bug in MAC Rx1DrOffset error checking for regions other than US ([#841](https://github.com/mcci-catena/arduino-lmic/issues/840)). Thanks to @GitTibbe for finding this.
12501251
- Refactor the LMIC to enable secure element support ([#578](https://github.com/mcci-catena/arduino-lmic/issues/840)).
12511252
- Start resurrecting Doxygen support.
12521253

src/lmic/lmic.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -886,7 +886,7 @@ scan_mac_cmds(
886886
LMIC.dn2Ans |= MCMD_RXParamSetupAns_RX2DataRateACK;
887887
if( freq != 0 )
888888
LMIC.dn2Ans |= MCMD_RXParamSetupAns_ChannelACK;
889-
if (rx1DrOffset <= 3)
889+
if ( rx1DrOffset <= LMICbandplan_queryMaxRx1DrOffset() )
890890
LMIC.dn2Ans |= MCMD_RXParamSetupAns_RX1DrOffsetAck;
891891

892892
if( LMIC.dn2Ans == (0xC0|MCMD_RXParamSetupAns_RX2DataRateACK|MCMD_RXParamSetupAns_ChannelACK| MCMD_RXParamSetupAns_RX1DrOffsetAck) ) {

src/lmic/lmic_bandplan.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,10 @@
118118
# error "LMICbandplan_convFreq() not defined by bandplan"
119119
#endif
120120

121+
#if !defined(LMICbandplan_queryMaxRx1DrOffset)
122+
# error "LMICbandplan_queryMaxRx1DrOffset() not defined by bandplan"
123+
#endif
124+
121125
#if !defined(LMICbandplan_setRx1Params)
122126
# error "LMICbandplan_setRx1Params() not defined by bandplan"
123127
#endif

src/lmic/lmic_bandplan_as923.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,12 @@ void LMICas923_setBcnRxParams(void);
8282
u4_t LMICas923_convFreq(xref2cu1_t ptr);
8383
#define LMICbandplan_convFreq(ptr) LMICas923_convFreq(ptr)
8484

85+
static inline u1_t
86+
LMICas923_queryMaxRx1DrOffset(void) {
87+
return 7;
88+
}
89+
#define LMICbandplan_queryMaxRx1DrOffset() LMICas923_queryMaxRx1DrOffset()
90+
8591
void LMICas923_initJoinLoop(void);
8692
#define LMICbandplan_initJoinLoop() LMICas923_initJoinLoop()
8793

src/lmic/lmic_bandplan_au915.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,12 @@ void LMICau915_setBcnRxParams(void);
6060
u4_t LMICau915_convFreq(xref2cu1_t ptr);
6161
#define LMICbandplan_convFreq(ptr) LMICau915_convFreq(ptr)
6262

63+
static inline u1_t
64+
LMICau915_queryMaxRx1DrOffset(void) {
65+
return 5;
66+
}
67+
#define LMICbandplan_queryMaxRx1DrOffset() LMICau915_queryMaxRx1DrOffset()
68+
6369
void LMICau915_setRx1Params(void);
6470
#define LMICbandplan_setRx1Params() LMICau915_setRx1Params()
6571

src/lmic/lmic_bandplan_eu868.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,12 @@ void LMICeu868_setBcnRxParams(void);
6969
u4_t LMICeu868_convFreq(xref2cu1_t ptr);
7070
#define LMICbandplan_convFreq(ptr) LMICeu868_convFreq(ptr)
7171

72+
static inline u1_t
73+
LMICeu868_queryMaxRx1DrOffset(void) {
74+
return 5;
75+
}
76+
#define LMICbandplan_queryMaxRx1DrOffset() LMICeu868_queryMaxRx1DrOffset()
77+
7278
void LMICeu868_initJoinLoop(void);
7379
#define LMICbandplan_initJoinLoop() LMICeu868_initJoinLoop()
7480

src/lmic/lmic_bandplan_in866.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,12 @@ void LMICin866_setBcnRxParams(void);
6666
u4_t LMICin866_convFreq(xref2cu1_t ptr);
6767
#define LMICbandplan_convFreq(ptr) LMICin866_convFreq(ptr)
6868

69+
static inline u1_t
70+
LMICin866_queryMaxRx1DrOffset(void) {
71+
return 7;
72+
}
73+
#define LMICbandplan_queryMaxRx1DrOffset() LMICin866_queryMaxRx1DrOffset()
74+
6975
void LMICin866_initJoinLoop(void);
7076
#define LMICbandplan_initJoinLoop() LMICin866_initJoinLoop()
7177

src/lmic/lmic_bandplan_kr920.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,12 @@ void LMICkr920_setBcnRxParams(void);
6969
u4_t LMICkr920_convFreq(xref2cu1_t ptr);
7070
#define LMICbandplan_convFreq(ptr) LMICkr920_convFreq(ptr)
7171

72+
static inline u1_t
73+
LMICkr920_queryMaxRx1DrOffset(void) {
74+
return 5;
75+
}
76+
#define LMICbandplan_queryMaxRx1DrOffset() LMICkr920_queryMaxRx1DrOffset()
77+
7278
void LMICkr920_initJoinLoop(void);
7379
#define LMICbandplan_initJoinLoop() LMICkr920_initJoinLoop()
7480

src/lmic/lmic_bandplan_us915.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,12 @@ void LMICus915_setBcnRxParams(void);
5757
u4_t LMICus915_convFreq(xref2cu1_t ptr);
5858
#define LMICbandplan_convFreq(ptr) LMICus915_convFreq(ptr)
5959

60+
static inline u1_t
61+
LMICus915_queryMaxRx1DrOffset(void) {
62+
return 3;
63+
}
64+
#define LMICbandplan_queryMaxRx1DrOffset() LMICus915_queryMaxRx1DrOffset()
65+
6066
void LMICus915_initJoinLoop(void);
6167
#define LMICbandplan_initJoinLoop() LMICus915_initJoinLoop()
6268

0 commit comments

Comments
 (0)