From 758c0a67865f6b4522a2cdebf6dcb4be4d017498 Mon Sep 17 00:00:00 2001 From: Nicola Baldo Date: Tue, 18 Dec 2012 16:13:03 +0100 Subject: [PATCH] added method LteSpectrumPhy::Reset () --- src/lte/model/lte-spectrum-phy.cc | 27 +++++++++++++++++++++------ src/lte/model/lte-spectrum-phy.h | 12 ++++++++++++ src/lte/model/lte-ue-phy.cc | 4 +++- 3 files changed, 36 insertions(+), 7 deletions(-) diff --git a/src/lte/model/lte-spectrum-phy.cc b/src/lte/model/lte-spectrum-phy.cc index f73236811..019f94a0a 100644 --- a/src/lte/model/lte-spectrum-phy.cc +++ b/src/lte/model/lte-spectrum-phy.cc @@ -294,6 +294,21 @@ LteSpectrumPhy::SetNoisePowerSpectralDensity (Ptr noisePsd) m_interferenceCtrl->SetNoisePowerSpectralDensity (noisePsd); } + +void +LteSpectrumPhy::Reset () +{ + NS_LOG_FUNCTION (this); + m_cellId = 0; + m_state = IDLE; + m_transmissionMode = 0; + m_layersNum = 1; + m_endTxEvent.Cancel (); + m_endRxDataEvent.Cancel (); + m_endRxDlCtrlEvent.Cancel (); + m_endRxUlSrsEvent.Cancel (); +} + void @@ -429,7 +444,7 @@ LteSpectrumPhy::StartTxDataFrame (Ptr pb, std::listctrlMsgList = ctrlMsgList; txParams->cellId = m_cellId; m_channel->StartTx (txParams); - Simulator::Schedule (duration, &LteSpectrumPhy::EndTx, this); + m_endTxEvent = Simulator::Schedule (duration, &LteSpectrumPhy::EndTx, this); } return false; break; @@ -484,7 +499,7 @@ LteSpectrumPhy::StartTxDlCtrlFrame (std::list > ctrlMsgLi txParams->cellId = m_cellId; txParams->ctrlMsgList = ctrlMsgList; m_channel->StartTx (txParams); - Simulator::Schedule (DL_CTRL_DURATION, &LteSpectrumPhy::EndTx, this); + m_endTxEvent = Simulator::Schedule (DL_CTRL_DURATION, &LteSpectrumPhy::EndTx, this); } return false; break; @@ -539,7 +554,7 @@ LteSpectrumPhy::StartTxUlSrsFrame () txParams->psd = m_txPsd; txParams->cellId = m_cellId; m_channel->StartTx (txParams); - Simulator::Schedule (UL_SRS_DURATION, &LteSpectrumPhy::EndTx, this); + m_endTxEvent = Simulator::Schedule (UL_SRS_DURATION, &LteSpectrumPhy::EndTx, this); } return false; break; @@ -646,7 +661,7 @@ LteSpectrumPhy::StartRxData (Ptr params) m_firstRxStart = Simulator::Now (); m_firstRxDuration = params->duration; NS_LOG_LOGIC (this << " scheduling EndRx with delay " << params->duration.GetSeconds () << "s"); - Simulator::Schedule (params->duration, &LteSpectrumPhy::EndRxData, this); + m_endRxDataEvent = Simulator::Schedule (params->duration, &LteSpectrumPhy::EndRxData, this); } else { @@ -740,11 +755,11 @@ LteSpectrumPhy::StartRxCtrl (Ptr params) { // store the DCIs m_rxControlMessageList = lteDlCtrlRxParams->ctrlMsgList; - Simulator::Schedule (params->duration, &LteSpectrumPhy::EndRxDlCtrl, this); + m_endRxDlCtrlEvent = Simulator::Schedule (params->duration, &LteSpectrumPhy::EndRxDlCtrl, this); } else { - Simulator::Schedule (params->duration, &LteSpectrumPhy::EndRxUlSrs, this); + m_endRxUlSrsEvent = Simulator::Schedule (params->duration, &LteSpectrumPhy::EndRxUlSrs, this); } } else if (m_state == RX_CTRL) diff --git a/src/lte/model/lte-spectrum-phy.h b/src/lte/model/lte-spectrum-phy.h index 93e00d80a..d683f707e 100644 --- a/src/lte/model/lte-spectrum-phy.h +++ b/src/lte/model/lte-spectrum-phy.h @@ -188,6 +188,12 @@ public: * (Watt, Pascal...) per Hz. */ void SetNoisePowerSpectralDensity (Ptr noisePsd); + + /** + * reset the internal state + * + */ + void Reset (); /** * set the AntennaModel to be used @@ -460,6 +466,12 @@ private: */ TracedCallback m_ulPhyReception; + EventId m_endTxEvent; + EventId m_endRxDataEvent; + EventId m_endRxDlCtrlEvent; + EventId m_endRxUlSrsEvent; + + }; diff --git a/src/lte/model/lte-ue-phy.cc b/src/lte/model/lte-ue-phy.cc index 93fcee068..b80f6837f 100644 --- a/src/lte/model/lte-ue-phy.cc +++ b/src/lte/model/lte-ue-phy.cc @@ -755,7 +755,7 @@ LteUePhy::SubframeIndication (uint32_t frameNo, uint32_t subframeNo) std::list > ctrlMsg = GetControlMessages (); // send packets in queue - NS_LOG_LOGIC (this << " UE - start slot for PUSCH + PUCCH - RNTI " << m_rnti); + NS_LOG_LOGIC (this << " UE - start slot for PUSCH + PUCCH - RNTI " << m_rnti << " CELLID " << m_cellId); // send the current burts of packets Ptr pb = GetPacketBurst (); if (pb) @@ -841,6 +841,8 @@ LteUePhy::DoReset () m_subChannelsForTransmissionQueue.resize (m_macChTtiDelay, ulRb); m_sendSrsEvent.Cancel (); + m_downlinkSpectrumPhy->Reset (); + m_uplinkSpectrumPhy->Reset (); } void