From 87edd3a099deed2f9215984981c4f2821b34a6c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Konrad=20Po=C5=82ys?= Date: Wed, 11 Apr 2018 14:13:30 +0200 Subject: [PATCH] Update LoRaTransmitter.cc Added the Low Data Rate Optimization according to "SX1272/3/6/7/8: LoRa Modem Designer's Guide AN1200.13" document by Semtech Corp. --- src/LoRaPhy/LoRaTransmitter.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/LoRaPhy/LoRaTransmitter.cc b/src/LoRaPhy/LoRaTransmitter.cc index 2d609b2..865e733 100644 --- a/src/LoRaPhy/LoRaTransmitter.cc +++ b/src/LoRaPhy/LoRaTransmitter.cc @@ -73,7 +73,9 @@ const ITransmission *LoRaTransmitter::createTransmission(const IRadio *transmitt int payloadBytes = 0; if(iAmGateway) payloadBytes = 15; else payloadBytes = 20; - int payloadSymbNb = 8 + math::max(ceil((8*payloadBytes - 4*frame->getLoRaSF() + 28 + 16 - 20*0)/(4*(frame->getLoRaSF()-2*0)))*(frame->getLoRaCR() + 4), 0); + short de = 0; + if ((frame->getLoRaSF() == 11) || (frame->getLoRaSF() == 12)) de = 1; + int payloadSymbNb = 8 + math::max(ceil((8*payloadBytes - 4*frame->getLoRaSF() + 28 + 16 - 20*0)/(4*(frame->getLoRaSF()-2*de)))*(frame->getLoRaCR() + 4), 0); simtime_t Theader = 0.5 * (8+payloadSymbNb) * Tsym / 1000; simtime_t Tpayload = 0.5 * (8+payloadSymbNb) * Tsym / 1000;