From c9162a66973ea46c679de7950754d02888294324 Mon Sep 17 00:00:00 2001 From: Manuel Requena Date: Mon, 17 Dec 2012 15:51:26 +0100 Subject: [PATCH] Add attribute for PollRetransmit timer --- src/lte/model/lte-rlc-am.cc | 30 +++++++++++++++++++++--------- src/lte/model/lte-rlc-am.h | 1 + 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/lte/model/lte-rlc-am.cc b/src/lte/model/lte-rlc-am.cc index b2ff53336..11d08aa72 100644 --- a/src/lte/model/lte-rlc-am.cc +++ b/src/lte/model/lte-rlc-am.cc @@ -72,6 +72,9 @@ LteRlcAm::LteRlcAm () // SDU reassembling process m_reassemblingState = WAITING_S0_FULL; m_expectedSeqNumber = 0; + + // Timers + m_pollRetransmitTimerValue = MilliSeconds (100); } LteRlcAm::~LteRlcAm () @@ -84,6 +87,11 @@ LteRlcAm::GetTypeId (void) static TypeId tid = TypeId ("ns3::LteRlcAm") .SetParent () .AddConstructor () + .AddAttribute ("PollRetransmitTimer", + "Value of the t-PollRetransmit (See section 7.3 of 3GPP TS 36.322)", + TimeValue (MilliSeconds (100)), + MakeTimeAccessor (&LteRlcAm::m_pollRetransmitTimerValue), + MakeTimeChecker ()) ; return tid; } @@ -526,7 +534,7 @@ LteRlcAm::DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId) { NS_LOG_LOGIC ("Start PollRetransmit timer"); - m_pollRetransmitTimer = Simulator::Schedule (Time ("0.01s"), + m_pollRetransmitTimer = Simulator::Schedule (m_pollRetransmitTimerValue, &LteRlcAm::ExpirePollRetransmitTimer, this); } else @@ -534,7 +542,7 @@ LteRlcAm::DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId) NS_LOG_LOGIC ("Restart PollRetransmit timer"); m_pollRetransmitTimer.Cancel (); - m_pollRetransmitTimer = Simulator::Schedule (Time ("0.01s"), + m_pollRetransmitTimer = Simulator::Schedule (m_pollRetransmitTimerValue, &LteRlcAm::ExpirePollRetransmitTimer, this); } } @@ -1533,13 +1541,17 @@ LteRlcAm::DoReportBufferStatus (void) r.statusPduSize = 0; } - NS_LOG_INFO ("Send ReportBufferStatus: " << r.txQueueSize << ", " << r.txQueueHolDelay << ", " - << r.retxQueueSize << ", " << r.retxQueueHolDelay << ", " - << r.statusPduSize); - m_macSapProvider->ReportBufferStatus (r); - -// m_statusPduRequested = false; -// m_statusPduBufferSize = 0; + if ( r.txQueueSize != 0 || r.retxQueueSize != 0 || r.statusPduSize != 0 ) + { + NS_LOG_INFO ("Send ReportBufferStatus: " << r.txQueueSize << ", " << r.txQueueHolDelay << ", " + << r.retxQueueSize << ", " << r.retxQueueHolDelay << ", " + << r.statusPduSize); + m_macSapProvider->ReportBufferStatus (r); + } + else + { + NS_LOG_INFO ("ReportBufferStatus don't needed"); + } } diff --git a/src/lte/model/lte-rlc-am.h b/src/lte/model/lte-rlc-am.h index cdb98a4bd..e4ed2bdd6 100644 --- a/src/lte/model/lte-rlc-am.h +++ b/src/lte/model/lte-rlc-am.h @@ -140,6 +140,7 @@ private: * Timers. See section 7.3 in TS 36.322 */ EventId m_pollRetransmitTimer; + Time m_pollRetransmitTimerValue; EventId m_reorderingTimer; EventId m_statusProhibitTimer;