diff --git a/src/lte/model/epc-enb-application.cc b/src/lte/model/epc-enb-application.cc index dc31d3f97..59aa4e44a 100644 --- a/src/lte/model/epc-enb-application.cc +++ b/src/lte/model/epc-enb-application.cc @@ -254,11 +254,17 @@ EpcEnbApplication::RecvFromLteSocket (Ptr socket) uint8_t bid = tag.GetBid (); NS_LOG_LOGIC ("received packet with RNTI=" << (uint32_t) rnti << ", BID=" << (uint32_t) bid); std::map >::iterator rntiIt = m_rbidTeidMap.find (rnti); - NS_ASSERT (rntiIt != m_rbidTeidMap.end ()); - std::map::iterator bidIt = rntiIt->second.find (bid); - NS_ASSERT (bidIt != rntiIt->second.end ()); - uint32_t teid = bidIt->second; - SendToS1uSocket (packet, teid); + if (rntiIt == m_rbidTeidMap.end ()) + { + NS_LOG_WARN ("UE context not found, discarding packet"); + } + else + { + std::map::iterator bidIt = rntiIt->second.find (bid); + NS_ASSERT (bidIt != rntiIt->second.end ()); + uint32_t teid = bidIt->second; + SendToS1uSocket (packet, teid); + } } void diff --git a/src/lte/model/lte-rrc-sap.h b/src/lte/model/lte-rrc-sap.h index 81eca795f..1ea0cd298 100644 --- a/src/lte/model/lte-rrc-sap.h +++ b/src/lte/model/lte-rrc-sap.h @@ -26,6 +26,7 @@ #include #include +#include namespace ns3 { @@ -594,63 +595,63 @@ template void MemberLteUeRrcSapProvider::RecvMasterInformationBlock (MasterInformationBlock msg) { - m_owner->DoRecvMasterInformationBlock (msg); + Simulator::ScheduleNow (&C::DoRecvMasterInformationBlock, m_owner, msg); } template void MemberLteUeRrcSapProvider::RecvSystemInformationBlockType1 (SystemInformationBlockType1 msg) { - m_owner->DoRecvSystemInformationBlockType1 (msg); + Simulator::ScheduleNow (&C::DoRecvSystemInformationBlockType1, m_owner, msg); } template void MemberLteUeRrcSapProvider::RecvSystemInformation (SystemInformation msg) { - m_owner->DoRecvSystemInformation (msg); + Simulator::ScheduleNow (&C::DoRecvSystemInformation, m_owner, msg); } template void MemberLteUeRrcSapProvider::RecvRrcConnectionSetup (RrcConnectionSetup msg) { - m_owner->DoRecvRrcConnectionSetup (msg); + Simulator::ScheduleNow (&C::DoRecvRrcConnectionSetup, m_owner, msg); } template void MemberLteUeRrcSapProvider::RecvRrcConnectionReconfiguration (RrcConnectionReconfiguration msg) { - m_owner->DoRecvRrcConnectionReconfiguration (msg); + Simulator::ScheduleNow (&C::DoRecvRrcConnectionReconfiguration, m_owner, msg); } template void MemberLteUeRrcSapProvider::RecvRrcConnectionReestablishment (RrcConnectionReestablishment msg) { - m_owner->DoRecvRrcConnectionReestablishment (msg); + Simulator::ScheduleNow (&C::DoRecvRrcConnectionReestablishment, m_owner, msg); } template void MemberLteUeRrcSapProvider::RecvRrcConnectionReestablishmentReject (RrcConnectionReestablishmentReject msg) { - m_owner->DoRecvRrcConnectionReestablishmentReject (msg); + Simulator::ScheduleNow (&C::DoRecvRrcConnectionReestablishmentReject, m_owner, msg); } template void MemberLteUeRrcSapProvider::RecvRrcConnectionRelease (RrcConnectionRelease msg) { - m_owner->DoRecvRrcConnectionRelease (msg); + Simulator::ScheduleNow (&C::DoRecvRrcConnectionRelease, m_owner, msg); } template void MemberLteUeRrcSapProvider::RecvRrcConnectionReject (RrcConnectionReject msg) { - m_owner->DoRecvRrcConnectionReject (msg); + Simulator::ScheduleNow (&C::DoRecvRrcConnectionReject, m_owner, msg); } @@ -852,35 +853,35 @@ template void MemberLteEnbRrcSapProvider::RecvRrcConnectionRequest (uint16_t rnti, RrcConnectionRequest msg) { - m_owner->DoRecvRrcConnectionRequest (rnti, msg); + Simulator::ScheduleNow (&C::DoRecvRrcConnectionRequest, m_owner, rnti, msg); } template void MemberLteEnbRrcSapProvider::RecvRrcConnectionSetupCompleted (uint16_t rnti, RrcConnectionSetupCompleted msg) { - m_owner->DoRecvRrcConnectionSetupCompleted (rnti, msg); + Simulator::ScheduleNow (&C::DoRecvRrcConnectionSetupCompleted, m_owner, rnti, msg); } template void MemberLteEnbRrcSapProvider::RecvRrcConnectionReconfigurationCompleted (uint16_t rnti, RrcConnectionReconfigurationCompleted msg) { - m_owner->DoRecvRrcConnectionReconfigurationCompleted (rnti, msg); + Simulator::ScheduleNow (&C::DoRecvRrcConnectionReconfigurationCompleted, m_owner, rnti, msg); } template void MemberLteEnbRrcSapProvider::RecvRrcConnectionReestablishmentRequest (uint16_t rnti, RrcConnectionReestablishmentRequest msg) { - m_owner->DoRecvRrcConnectionReestablishmentRequest (rnti, msg); + Simulator::ScheduleNow (&C::DoRecvRrcConnectionReestablishmentRequest, m_owner, rnti, msg); } template void MemberLteEnbRrcSapProvider::RecvRrcConnectionReestablishmentComplete (uint16_t rnti, RrcConnectionReestablishmentComplete msg) { - m_owner->DoRecvRrcConnectionReestablishmentComplete (rnti, msg); + Simulator::ScheduleNow (&C::DoRecvRrcConnectionReestablishmentComplete, m_owner, rnti, msg); } diff --git a/src/lte/model/lte-spectrum-phy.cc b/src/lte/model/lte-spectrum-phy.cc index 019f94a0a..c0cb73365 100644 --- a/src/lte/model/lte-spectrum-phy.cc +++ b/src/lte/model/lte-spectrum-phy.cc @@ -307,6 +307,12 @@ LteSpectrumPhy::Reset () m_endRxDataEvent.Cancel (); m_endRxDlCtrlEvent.Cancel (); m_endRxUlSrsEvent.Cancel (); + m_rxControlMessageList.clear (); + m_expectedTbs.clear (); + m_txControlMessageList.clear (); + m_rxPacketBurstList.clear (); + m_txPacketBurst = 0; + m_rxSpectrumModel = 0; } diff --git a/src/lte/test/lte-test-link-adaptation.cc b/src/lte/test/lte-test-link-adaptation.cc index b01ca5b14..bc37e45df 100644 --- a/src/lte/test/lte-test-link-adaptation.cc +++ b/src/lte/test/lte-test-link-adaptation.cc @@ -155,9 +155,11 @@ LteLinkAdaptationTestCase::~LteLinkAdaptationTestCase () void LteLinkAdaptationTestCase::DoRun (void) { - + Config::Reset (); Config::SetDefault ("ns3::LteAmc::AmcModel", EnumValue (LteAmc::PiroEW2010)); Config::SetDefault ("ns3::LteAmc::Ber", DoubleValue (0.00005)); + Config::SetDefault ("ns3::LteEnbRrc::SrsPeriodicity", UintegerValue (2)); + /** * Simulation Topology */ @@ -206,7 +208,7 @@ LteLinkAdaptationTestCase::DoRun (void) Config::Connect ("/NodeList/0/DeviceList/0/LteEnbMac/DlScheduling", MakeBoundCallback (&LteTestDlSchedulingCallback, this)); - Simulator::Stop (Seconds (0.026)); + Simulator::Stop (Seconds (0.040)); Simulator::Run (); double calculatedSinrDb = 10.0 * log10 (testSinr->GetSinr ()->operator[] (0)); @@ -233,7 +235,7 @@ LteLinkAdaptationTestCase::DlScheduling (uint32_t frameNo, uint32_t subframeNo, * RRC connection has been completed and * CQI feedback is available at the eNB. */ - if (Simulator::Now ().GetSeconds () > 0.024) + if (Simulator::Now ().GetSeconds () > 0.030) { NS_LOG_INFO (m_snrDb << "\t" << m_mcsIndex << "\t" << (uint16_t)mcsTb1); diff --git a/src/lte/test/test-lte-x2-handover.cc b/src/lte/test/test-lte-x2-handover.cc index 663468bcd..476382c85 100644 --- a/src/lte/test/test-lte-x2-handover.cc +++ b/src/lte/test/test-lte-x2-handover.cc @@ -432,7 +432,6 @@ LteX2HandoverTestCase::DoRun () void LteX2HandoverTestCase::CheckConnected (Ptr ueDevice, Ptr enbDevice) { - NS_LOG_FUNCTION (this); Ptr ueLteDevice = ueDevice->GetObject (); Ptr ueRrc = ueLteDevice->GetRrc (); NS_TEST_ASSERT_MSG_EQ (ueRrc->GetState (), LteUeRrc::CONNECTED_NORMALLY, "Wrong LteUeRrc state!"); @@ -500,7 +499,6 @@ LteX2HandoverTestCase::CheckConnected (Ptr ueDevice, Ptr e void LteX2HandoverTestCase::SaveStatsAfterHandover (uint32_t ueIndex) { - NS_LOG_FUNCTION (this << ueIndex); for (std::list::iterator it = m_ueDataVector.at (ueIndex).bearerDataList.begin (); it != m_ueDataVector.at (ueIndex).bearerDataList.end (); ++it) @@ -512,8 +510,7 @@ LteX2HandoverTestCase::SaveStatsAfterHandover (uint32_t ueIndex) void LteX2HandoverTestCase::CheckStatsAWhileAfterHandover (uint32_t ueIndex) -{ - NS_LOG_FUNCTION (this << ueIndex); +{ uint32_t b = 1; for (std::list::iterator it = m_ueDataVector.at (ueIndex).bearerDataList.begin (); it != m_ueDataVector.at (ueIndex).bearerDataList.end (); @@ -541,8 +538,6 @@ public: LteX2HandoverTestSuite::LteX2HandoverTestSuite () : TestSuite ("lte-x2-handover", SYSTEM) { - NS_LOG_FUNCTION (this); - // in the following: // fwd means handover from enb 0 to enb 1 // bwd means handover from enb 1 to enb 0 @@ -616,11 +611,9 @@ LteX2HandoverTestSuite::LteX2HandoverTestSuite () hel7.push_back (ue2fwd); hel7.push_back (ue2bwd); - AddTestCase (new LteX2HandoverTestCase ( 2, 0, hel1, hel1name, true, "ns3::RrFfMacScheduler", true, false)); - std::vector schedulers; schedulers.push_back ("ns3::RrFfMacScheduler"); - schedulers.push_back ("ns3::PfrFfMacScheduler"); + schedulers.push_back ("ns3::PfFfMacScheduler"); for (std::vector::iterator schedIt = schedulers.begin (); schedIt != schedulers.end (); ++schedIt) { for (int32_t useIdealRrc = 1; useIdealRrc >= 0; --useIdealRrc)