diff --git a/src/LoRaApp/SimpleLoRaApp.cc b/src/LoRaApp/SimpleLoRaApp.cc index 70fb51e..e7f2fca 100644 --- a/src/LoRaApp/SimpleLoRaApp.cc +++ b/src/LoRaApp/SimpleLoRaApp.cc @@ -195,15 +195,22 @@ void SimpleLoRaApp::sendJoinRequest() if(ADR_ACK_CNT >= ADR_ACK_LIMIT + ADR_ACK_DELAY) { ADR_ACK_CNT = 0; - increaseSFIfPossible(); + increaseTPOrSFIfPossible(); } } emit(LoRa_AppPacketSent, loRaSF); } -void SimpleLoRaApp::increaseSFIfPossible() +void SimpleLoRaApp::increaseTPOrSFIfPossible() { - if(loRaSF < 12) loRaSF++; + if(loRaTP < 14) + { + loRaTP += 3; // at the beginning increase the Transmission Power + } + else if(loRaSF < 12) + { + loRaSF++; // secondly increase Spreading Factor + } } } //end namespace inet diff --git a/src/LoRaApp/SimpleLoRaApp.h b/src/LoRaApp/SimpleLoRaApp.h index f039ac7..4bde377 100644 --- a/src/LoRaApp/SimpleLoRaApp.h +++ b/src/LoRaApp/SimpleLoRaApp.h @@ -67,7 +67,7 @@ class INET_API SimpleLoRaApp : public cSimpleModule, public ILifecycle int ADR_ACK_LIMIT = 64; //64; int ADR_ACK_DELAY = 32; //32; bool sendNextPacketWithADRACKReq = false; - void increaseSFIfPossible(); + void increaseTPOrSFIfPossible(); public: SimpleLoRaApp() {}