diff --git a/src/lte/model/lte-spectrum-phy.cc b/src/lte/model/lte-spectrum-phy.cc index 09d930493..7776f6066 100644 --- a/src/lte/model/lte-spectrum-phy.cc +++ b/src/lte/model/lte-spectrum-phy.cc @@ -466,7 +466,7 @@ LteSpectrumPhy::StartTxDataFrame (Ptr pb, std::listctrlMsgList = ctrlMsgList; txParams->cellId = m_cellId; m_channel->StartTx (txParams); - m_endTxEvent = Simulator::Schedule (duration, &LteSpectrumPhy::EndTx, this); + m_endTxEvent = Simulator::Schedule (duration, &LteSpectrumPhy::EndTxData, this); } return false; break; @@ -523,7 +523,7 @@ LteSpectrumPhy::StartTxDlCtrlFrame (std::list > ctrlMsgLi txParams->pss = pss; txParams->ctrlMsgList = ctrlMsgList; m_channel->StartTx (txParams); - m_endTxEvent = Simulator::Schedule (DL_CTRL_DURATION, &LteSpectrumPhy::EndTx, this); + m_endTxEvent = Simulator::Schedule (DL_CTRL_DURATION, &LteSpectrumPhy::EndTxDlCtrl, this); } return false; break; @@ -578,7 +578,7 @@ LteSpectrumPhy::StartTxUlSrsFrame () txParams->psd = m_txPsd; txParams->cellId = m_cellId; m_channel->StartTx (txParams); - m_endTxEvent = Simulator::Schedule (UL_SRS_DURATION, &LteSpectrumPhy::EndTx, this); + m_endTxEvent = Simulator::Schedule (UL_SRS_DURATION, &LteSpectrumPhy::EndTxUlSrs, this); } return false; break; @@ -593,7 +593,7 @@ LteSpectrumPhy::StartTxUlSrsFrame () void -LteSpectrumPhy::EndTx () +LteSpectrumPhy::EndTxData () { NS_LOG_FUNCTION (this); NS_LOG_LOGIC (this << " state: " << m_state); @@ -602,6 +602,8 @@ LteSpectrumPhy::EndTx () m_phyTxEndTrace (m_txPacketBurst); + NS_ASSERT (m_ltePhyTxEndCallback.IsNull () == true); + if (!m_ltePhyTxEndCallback.IsNull ()) { for (std::list >::const_iterator iter = m_txPacketBurst->Begin (); iter @@ -616,6 +618,32 @@ LteSpectrumPhy::EndTx () ChangeState (IDLE); } +void +LteSpectrumPhy::EndTxDlCtrl () +{ + NS_LOG_FUNCTION (this); + NS_LOG_LOGIC (this << " state: " << m_state); + + NS_ASSERT (m_state == TX); + NS_ASSERT (m_txPacketBurst == 0); + NS_ASSERT (m_ltePhyTxEndCallback.IsNull () == true); + ChangeState (IDLE); +} + +void +LteSpectrumPhy::EndTxUlSrs () +{ + NS_LOG_FUNCTION (this); + NS_LOG_LOGIC (this << " state: " << m_state); + + NS_ASSERT (m_state == TX); + NS_ASSERT (m_txPacketBurst == 0); + NS_ASSERT (m_ltePhyTxEndCallback.IsNull () == true); + ChangeState (IDLE); +} + + + void LteSpectrumPhy::StartRx (Ptr spectrumRxParams) diff --git a/src/lte/model/lte-spectrum-phy.h b/src/lte/model/lte-spectrum-phy.h index 4e09638f7..bdf0c70e3 100644 --- a/src/lte/model/lte-spectrum-phy.h +++ b/src/lte/model/lte-spectrum-phy.h @@ -420,7 +420,9 @@ public: private: void ChangeState (State newState); - void EndTx (); + void EndTxData (); + void EndTxDlCtrl (); + void EndTxUlSrs (); void EndRxData (); void EndRxDlCtrl (); void EndRxUlSrs ();