lorawan.cpp: TTN SF9 RX2 patch
This commit is contained in:
parent
b796fd79af
commit
921d377cd2
@ -486,6 +486,19 @@ void lmictask(void *pvParameters) {
|
|||||||
LMIC_reset(); // initialize lmic MAC
|
LMIC_reset(); // initialize lmic MAC
|
||||||
LMIC_setLinkCheckMode(0);
|
LMIC_setLinkCheckMode(0);
|
||||||
|
|
||||||
|
#if defined(CFG_eu868)
|
||||||
|
// Note that The Things Network uses the non-standard SF9BW125 data rate for
|
||||||
|
// RX2 in Europe and switches between RX1 and RX2 based on network congestion.
|
||||||
|
// Thus, to avoid occasionally join failures, we set datarate to SF9 and
|
||||||
|
// bypass the LORAWAN spec-compliant RX2 == SF12 setting
|
||||||
|
LMIC_setDrTxpow(EU868_DR_SF9, KEEP_TXPOW);
|
||||||
|
#else
|
||||||
|
// Set the data rate to Spreading Factor 7. This is the fastest supported
|
||||||
|
// rate for 125 kHz channels, and it minimizes air time and battery power.
|
||||||
|
// Set the transmission power to 14 dBi (25 mW).
|
||||||
|
LMIC_setDrTxpow(DR_SF7, 14);
|
||||||
|
#endif
|
||||||
|
|
||||||
// This tells LMIC to make the receive windows bigger, in case your clock is
|
// This tells LMIC to make the receive windows bigger, in case your clock is
|
||||||
// faster or slower. This causes the transceiver to be earlier switched on,
|
// faster or slower. This causes the transceiver to be earlier switched on,
|
||||||
// so consuming more power. You may sharpen (reduce) CLOCK_ERROR_PERCENTAGE
|
// so consuming more power. You may sharpen (reduce) CLOCK_ERROR_PERCENTAGE
|
||||||
@ -503,11 +516,6 @@ void lmictask(void *pvParameters) {
|
|||||||
LMIC_selectSubBand(1);
|
LMIC_selectSubBand(1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Set the data rate to Spreading Factor 7. This is the fastest supported
|
|
||||||
// rate for 125 kHz channels, and it minimizes air time and battery power.
|
|
||||||
// Set the transmission power to 14 dBi (25 mW).
|
|
||||||
LMIC_setDrTxpow(DR_SF7, 14);
|
|
||||||
|
|
||||||
// register a callback for downlink messages. We aren't trying to write
|
// register a callback for downlink messages. We aren't trying to write
|
||||||
// reentrant code, so pUserData is NULL.
|
// reentrant code, so pUserData is NULL.
|
||||||
LMIC_registerRxMessageCb(myRxCallback, NULL);
|
LMIC_registerRxMessageCb(myRxCallback, NULL);
|
||||||
@ -645,7 +653,7 @@ uint8_t getBattLevel() {
|
|||||||
// u1_t os_getBattLevel(void) { return getBattLevel(); };
|
// u1_t os_getBattLevel(void) { return getBattLevel(); };
|
||||||
|
|
||||||
const char *getSfName(rps_t rps) {
|
const char *getSfName(rps_t rps) {
|
||||||
const char *const t[] = {"FSK", "SF7", "SF8", "SF9",
|
const char *const t[] = {"FSK", "SF7", "SF8", "SF9",
|
||||||
"SF10", "SF11", "SF12", "SF?"};
|
"SF10", "SF11", "SF12", "SF?"};
|
||||||
return t[getSf(rps)];
|
return t[getSf(rps)];
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user