Fork of Semtech LoRaWAN stack
Fork of LoRaWAN-lib by
Diff: LoRaMac.cpp
- Branch:
- v4.2.0
- Revision:
- 30:0926a366a2c5
- Parent:
- 29:c7583fcfad8c
- Child:
- 31:930f949fdd9e
diff -r c7583fcfad8c -r 0926a366a2c5 LoRaMac.cpp --- a/LoRaMac.cpp Thu Nov 17 14:12:24 2016 +0000 +++ b/LoRaMac.cpp Tue Dec 13 21:44:00 2016 +0000 @@ -1548,7 +1548,7 @@ if( ( AckTimeoutRetriesCounter < AckTimeoutRetries ) && ( AckTimeoutRetriesCounter <= MAX_ACK_RETRIES ) ) { AckTimeoutRetriesCounter++; - + if( ( AckTimeoutRetriesCounter % 2 ) == 1 ) { ChannelsDatarate = MAX( ChannelsDatarate - 1, LORAMAC_TX_MIN_DATARATE ); @@ -1683,36 +1683,36 @@ datarate = DR_0; } // For higher datarates, we increase the number of symbols generating a Rx Timeout - switch( datarate ) + + + symbTimeout = 10; + // For low SF, we increase the number of symbols generating a Rx Timeout + switch ( datarate ) { - case DR_0: // SF10 - BW125 - symbTimeout = 5; - break; - - case DR_1: // SF9 - BW125 - case DR_2: // SF8 - BW125 - case DR_8: // SF12 - BW500 - case DR_9: // SF11 - BW500 - case DR_10: // SF10 - BW500 - symbTimeout = 8; + case DR_0: + case DR_8: + case DR_9: + case DR_10: + symbTimeout += 5; + break; + case DR_1: + case DR_11: + symbTimeout += 8; break; - - case DR_3: // SF7 - BW125 - case DR_11: // SF9 - BW500 - symbTimeout = 10; + case DR_2: + case DR_4: + case DR_12: + symbTimeout += 9; break; - - case DR_4: // SF8 - BW500 - case DR_12: // SF8 - BW500 - symbTimeout = 14; - break; - - case DR_13: // SF7 - BW500 - symbTimeout = 16; + case DR_3: + case DR_13: + symbTimeout += 10; break; default: - break; + symbTimeout += 5; + break; } + if( datarate >= DR_4 ) {// LoRa 500 kHz bandwidth = 2;