diff --git a/src/lte/bindings/modulegen__gcc_ILP32.py b/src/lte/bindings/modulegen__gcc_ILP32.py index b8575ddb6..fd98e0c73 100644 --- a/src/lte/bindings/modulegen__gcc_ILP32.py +++ b/src/lte/bindings/modulegen__gcc_ILP32.py @@ -12845,9 +12845,9 @@ def register_Ns3EpcHelper_methods(root_module, cls): cls.add_constructor([param('ns3::EpcHelper const &', 'arg0')]) ## epc-helper.h (module 'lte'): ns3::EpcHelper::EpcHelper() [constructor] cls.add_constructor([]) - ## epc-helper.h (module 'lte'): void ns3::EpcHelper::ActivateEpsBearer(ns3::Ptr ueLteDevice, uint64_t imsi, ns3::Ptr tft, ns3::EpsBearer bearer) [member function] + ## epc-helper.h (module 'lte'): uint8_t ns3::EpcHelper::ActivateEpsBearer(ns3::Ptr ueLteDevice, uint64_t imsi, ns3::Ptr tft, ns3::EpsBearer bearer) [member function] cls.add_method('ActivateEpsBearer', - 'void', + 'uint8_t', [param('ns3::Ptr< ns3::NetDevice >', 'ueLteDevice'), param('uint64_t', 'imsi'), param('ns3::Ptr< ns3::EpcTft >', 'tft'), param('ns3::EpsBearer', 'bearer')], is_pure_virtual=True, is_virtual=True) ## epc-helper.h (module 'lte'): void ns3::EpcHelper::AddEnb(ns3::Ptr enbNode, ns3::Ptr lteEnbNetDevice, uint16_t cellId) [member function] @@ -15979,13 +15979,13 @@ def register_Ns3LteHelper_methods(root_module, cls): cls.add_method('ActivateDataRadioBearer', 'void', [param('ns3::Ptr< ns3::NetDevice >', 'ueDevice'), param('ns3::EpsBearer', 'bearer')]) - ## lte-helper.h (module 'lte'): void ns3::LteHelper::ActivateDedicatedEpsBearer(ns3::NetDeviceContainer ueDevices, ns3::EpsBearer bearer, ns3::Ptr tft) [member function] + ## lte-helper.h (module 'lte'): uint8_t ns3::LteHelper::ActivateDedicatedEpsBearer(ns3::NetDeviceContainer ueDevices, ns3::EpsBearer bearer, ns3::Ptr tft) [member function] cls.add_method('ActivateDedicatedEpsBearer', - 'void', + 'uint8_t', [param('ns3::NetDeviceContainer', 'ueDevices'), param('ns3::EpsBearer', 'bearer'), param('ns3::Ptr< ns3::EpcTft >', 'tft')]) - ## lte-helper.h (module 'lte'): void ns3::LteHelper::ActivateDedicatedEpsBearer(ns3::Ptr ueDevice, ns3::EpsBearer bearer, ns3::Ptr tft) [member function] + ## lte-helper.h (module 'lte'): uint8_t ns3::LteHelper::ActivateDedicatedEpsBearer(ns3::Ptr ueDevice, ns3::EpsBearer bearer, ns3::Ptr tft) [member function] cls.add_method('ActivateDedicatedEpsBearer', - 'void', + 'uint8_t', [param('ns3::Ptr< ns3::NetDevice >', 'ueDevice'), param('ns3::EpsBearer', 'bearer'), param('ns3::Ptr< ns3::EpcTft >', 'tft')]) ## lte-helper.h (module 'lte'): void ns3::LteHelper::AddX2Interface(ns3::NodeContainer enbNodes) [member function] cls.add_method('AddX2Interface', @@ -18512,9 +18512,9 @@ def register_Ns3PointToPointEpcHelper_methods(root_module, cls): cls.add_constructor([param('ns3::PointToPointEpcHelper const &', 'arg0')]) ## point-to-point-epc-helper.h (module 'lte'): ns3::PointToPointEpcHelper::PointToPointEpcHelper() [constructor] cls.add_constructor([]) - ## point-to-point-epc-helper.h (module 'lte'): void ns3::PointToPointEpcHelper::ActivateEpsBearer(ns3::Ptr ueLteDevice, uint64_t imsi, ns3::Ptr tft, ns3::EpsBearer bearer) [member function] + ## point-to-point-epc-helper.h (module 'lte'): uint8_t ns3::PointToPointEpcHelper::ActivateEpsBearer(ns3::Ptr ueLteDevice, uint64_t imsi, ns3::Ptr tft, ns3::EpsBearer bearer) [member function] cls.add_method('ActivateEpsBearer', - 'void', + 'uint8_t', [param('ns3::Ptr< ns3::NetDevice >', 'ueLteDevice'), param('uint64_t', 'imsi'), param('ns3::Ptr< ns3::EpcTft >', 'tft'), param('ns3::EpsBearer', 'bearer')], is_virtual=True) ## point-to-point-epc-helper.h (module 'lte'): void ns3::PointToPointEpcHelper::AddEnb(ns3::Ptr enbNode, ns3::Ptr lteEnbNetDevice, uint16_t cellId) [member function] @@ -20202,9 +20202,9 @@ def register_Ns3EmuEpcHelper_methods(root_module, cls): cls.add_constructor([param('ns3::EmuEpcHelper const &', 'arg0')]) ## emu-epc-helper.h (module 'lte'): ns3::EmuEpcHelper::EmuEpcHelper() [constructor] cls.add_constructor([]) - ## emu-epc-helper.h (module 'lte'): void ns3::EmuEpcHelper::ActivateEpsBearer(ns3::Ptr ueLteDevice, uint64_t imsi, ns3::Ptr tft, ns3::EpsBearer bearer) [member function] + ## emu-epc-helper.h (module 'lte'): uint8_t ns3::EmuEpcHelper::ActivateEpsBearer(ns3::Ptr ueLteDevice, uint64_t imsi, ns3::Ptr tft, ns3::EpsBearer bearer) [member function] cls.add_method('ActivateEpsBearer', - 'void', + 'uint8_t', [param('ns3::Ptr< ns3::NetDevice >', 'ueLteDevice'), param('uint64_t', 'imsi'), param('ns3::Ptr< ns3::EpcTft >', 'tft'), param('ns3::EpsBearer', 'bearer')], is_virtual=True) ## emu-epc-helper.h (module 'lte'): void ns3::EmuEpcHelper::AddEnb(ns3::Ptr enbNode, ns3::Ptr lteEnbNetDevice, uint16_t cellId) [member function] diff --git a/src/lte/doc/source/lte-testing.rst b/src/lte/doc/source/lte-testing.rst index db79d0d28..da70b1239 100644 --- a/src/lte/doc/source/lte-testing.rst +++ b/src/lte/doc/source/lte-testing.rst @@ -122,6 +122,34 @@ each element in the test vector. System Tests ~~~~~~~~~~~~ +Dedicated Bearer Deactivation Tests +----------------------------------- +The test suite ‘lte-test-deactivate-bearer’ creates test case with single EnodeB and Three UE’s. +Each UE consists of one Default and one Dedicated EPS bearer with same bearer specification but with different ARP. +Test Case Flow is as follows: +Attach UE -> Create Default+Dedicated Bearer -> Deactivate one of the Dedicated bearer + +Test case further deactivates dedicated bearer having bearer ID 2(LCID=BearerId+2) of First UE (UE_ID=1) +User can schedule bearer deactivation after specific time delay using Simulator::Schedule () method. + +Once the test case execution ends it will create DlRlcStats.txt and UlRlcStats.txt. +Key fields that need to be checked in statistics are: +|Start | end | Cell ID | IMSI | RNTI | LCID | TxBytes | RxBytes | + +Test case executes in three epoch’s. +1) In first Epoch (0.04s-1.04s) All UE’s and corresponding bearers gets attached + and packet flow over the dedicated bearers activated. +2) In second Epoch (1.04s-2.04s), bearer deactivation is instantiated, hence User can see + relatively less number of TxBytes on UE_ID=1 and LCID=4 as compared to other bearers. +3) In third Epoch (2.04s-3.04s) since bearer deactivation of UE_ID=1 and LCID=4 is completed, + user will not see any logging related to LCID=4. + +Test case passes if and only if +1) IMSI=1 and LCID=4 completely removed in third epoch +2) No packets seen in TxBytes and RxBytes corresponding to IMSI=1 and LCID=4 +If above criterion does not match test case considered to be failed + + .. _sec-lte-amc-tests: Adaptive Modulation and Coding Tests diff --git a/src/lte/examples/lena-deactivate-bearer.cc b/src/lte/examples/lena-deactivate-bearer.cc index ef6d5ed54..03256ea4d 100644 --- a/src/lte/examples/lena-deactivate-bearer.cc +++ b/src/lte/examples/lena-deactivate-bearer.cc @@ -213,12 +213,16 @@ main (int argc, char *argv[]) rlcStats->SetAttribute ("StartTime", TimeValue (Seconds (statsStartTime))); rlcStats->SetAttribute ("EpochDuration", TimeValue (Seconds (statsDuration))); + //get ue device pointer for UE-ID 0 IMSI 1 and enb device pointer + Ptr ueDevice = ueLteDevs.Get (0); + Ptr enbDevice = enbLteDevs.Get (0); + /* - * Schedule dedicated bearer de-activation at 'deActivateTime' - * Instantiate De-activation in sequence (Time deActivateTime, Ptr ueDevice, Ptr enbDevice, uint8_t bearerId) + * Instantiate De-activation using Simulator::Schedule() method which will initiate bearer de-activation after deActivateTime + * Instantiate De-activation in sequence (Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3) */ Time deActivateTime (Seconds (1.5)); - lteHelper->DeActivateDedicatedEpsBearer (deActivateTime,ueLteDevs.Get (0),enbLteDevs.Get (0), 2); + Simulator::Schedule (deActivateTime, &LteHelper::DeActivateDedicatedEpsBearer, lteHelper, ueDevice, enbDevice, 2); //stop simulation after 3 seconds Simulator::Stop (Seconds (3.0)); diff --git a/src/lte/helper/emu-epc-helper.cc b/src/lte/helper/emu-epc-helper.cc index ce5ef0f98..26b770cdc 100644 --- a/src/lte/helper/emu-epc-helper.cc +++ b/src/lte/helper/emu-epc-helper.cc @@ -311,7 +311,7 @@ EmuEpcHelper::AddUe (Ptr ueDevice, uint64_t imsi) } -void +uint8_t EmuEpcHelper::ActivateEpsBearer (Ptr ueDevice, uint64_t imsi, Ptr tft, EpsBearer bearer) { NS_LOG_FUNCTION (this << ueDevice << imsi); @@ -328,12 +328,13 @@ EmuEpcHelper::ActivateEpsBearer (Ptr ueDevice, uint64_t imsi, PtrGetAddress (interface, 0).GetLocal (); NS_LOG_LOGIC (" UE IP address: " << ueAddr); m_sgwPgwApp->SetUeAddress (imsi, ueAddr); - m_mme->AddBearer (imsi, tft, bearer); + uint8_t bearerId = m_mme->AddBearer (imsi, tft, bearer); Ptr ueLteDevice = ueDevice->GetObject (); if (ueLteDevice) { Simulator::ScheduleNow (&EpcUeNas::ActivateEpsBearer, ueLteDevice->GetNas (), bearer, tft); } + return bearerId; } diff --git a/src/lte/helper/emu-epc-helper.h b/src/lte/helper/emu-epc-helper.h index 5dc5a75fb..77f1638ae 100644 --- a/src/lte/helper/emu-epc-helper.h +++ b/src/lte/helper/emu-epc-helper.h @@ -71,7 +71,7 @@ public: virtual void AddEnb (Ptr enbNode, Ptr lteEnbNetDevice, uint16_t cellId); virtual void AddUe (Ptr ueLteDevice, uint64_t imsi); virtual void AddX2Interface (Ptr enbNode1, Ptr enbNode2); - virtual void ActivateEpsBearer (Ptr ueLteDevice, uint64_t imsi, Ptr tft, EpsBearer bearer); + virtual uint8_t ActivateEpsBearer (Ptr ueLteDevice, uint64_t imsi, Ptr tft, EpsBearer bearer); virtual Ptr GetPgwNode (); virtual Ipv4InterfaceContainer AssignUeIpv4Address (NetDeviceContainer ueDevices); virtual Ipv4Address GetUeDefaultGatewayAddress (); diff --git a/src/lte/helper/epc-helper.h b/src/lte/helper/epc-helper.h index 4afd46d11..3685f74c9 100644 --- a/src/lte/helper/epc-helper.h +++ b/src/lte/helper/epc-helper.h @@ -101,7 +101,7 @@ public: * \param tft the Traffic Flow Template of the new bearer * \param bearer struct describing the characteristics of the EPS bearer to be activated */ - virtual void ActivateEpsBearer (Ptr ueLteDevice, uint64_t imsi, Ptr tft, EpsBearer bearer) = 0; + virtual uint8_t ActivateEpsBearer (Ptr ueLteDevice, uint64_t imsi, Ptr tft, EpsBearer bearer) = 0; /** diff --git a/src/lte/helper/lte-helper.cc b/src/lte/helper/lte-helper.cc index a12283037..cd9701dac 100644 --- a/src/lte/helper/lte-helper.cc +++ b/src/lte/helper/lte-helper.cc @@ -813,18 +813,20 @@ LteHelper::AttachToClosestEnb (Ptr ueDevice, NetDeviceContainer enbDe Attach (ueDevice, closestEnbDevice); } -void +uint8_t LteHelper::ActivateDedicatedEpsBearer (NetDeviceContainer ueDevices, EpsBearer bearer, Ptr tft) { NS_LOG_FUNCTION (this); for (NetDeviceContainer::Iterator i = ueDevices.Begin (); i != ueDevices.End (); ++i) { - ActivateDedicatedEpsBearer (*i, bearer, tft); + uint8_t bearerId = ActivateDedicatedEpsBearer (*i, bearer, tft); + return bearerId; } + return 0; } -void +uint8_t LteHelper::ActivateDedicatedEpsBearer (Ptr ueDevice, EpsBearer bearer, Ptr tft) { NS_LOG_FUNCTION (this); @@ -832,7 +834,8 @@ LteHelper::ActivateDedicatedEpsBearer (Ptr ueDevice, EpsBearer bearer NS_ASSERT_MSG (m_epcHelper != 0, "dedicated EPS bearers cannot be set up when the EPC is not used"); uint64_t imsi = ueDevice->GetObject ()->GetImsi (); - m_epcHelper->ActivateEpsBearer (ueDevice, imsi, tft, bearer); + uint8_t bearerId = m_epcHelper->ActivateEpsBearer (ueDevice, imsi, tft, bearer); + return bearerId; } class DrbActivator : public SimpleRefCount @@ -956,13 +959,13 @@ LteHelper::DoHandoverRequest (Ptr ueDev, Ptr sourceEnbDev, } void -LteHelper::DeActivateDedicatedEpsBearer (Time deActivateTime, Ptr ueDevice,Ptr enbDevice, uint8_t bearerId) +LteHelper::DeActivateDedicatedEpsBearer (Ptr ueDevice,Ptr enbDevice, uint8_t bearerId) { NS_LOG_FUNCTION (this << ueDevice << bearerId); NS_ASSERT_MSG (m_epcHelper != 0, "Dedicated EPS bearers cannot be de-activated when the EPC is not used"); NS_ASSERT_MSG (bearerId != 1, "Default bearer cannot be de-activated until and unless and UE is released"); - Simulator::Schedule (deActivateTime, &LteHelper::DoDeActivateDedicatedEpsBearer, this, ueDevice, enbDevice, bearerId); + DoDeActivateDedicatedEpsBearer (ueDevice, enbDevice, bearerId); } void diff --git a/src/lte/helper/lte-helper.h b/src/lte/helper/lte-helper.h index 658f86d35..6be078fa0 100644 --- a/src/lte/helper/lte-helper.h +++ b/src/lte/helper/lte-helper.h @@ -397,7 +397,7 @@ public: * \param bearer the characteristics of the bearer to be activated * \param tft the Traffic Flow Template that identifies the traffic to go on this bearer */ - void ActivateDedicatedEpsBearer (NetDeviceContainer ueDevices, EpsBearer bearer, Ptr tft); + uint8_t ActivateDedicatedEpsBearer (NetDeviceContainer ueDevices, EpsBearer bearer, Ptr tft); /** * Activate a dedicated EPS bearer on a given UE device. @@ -406,11 +406,10 @@ public: * \param bearer the characteristics of the bearer to be activated * \param tft the Traffic Flow Template that identifies the traffic to go on this bearer. */ - void ActivateDedicatedEpsBearer (Ptr ueDevice, EpsBearer bearer, Ptr tft); + uint8_t ActivateDedicatedEpsBearer (Ptr ueDevice, EpsBearer bearer, Ptr tft); /** * \brief Manually trigger dedicated bearer de-activation at specific simulation time - * \param deActivateTime when the dedicated bearer de-activation to be initiated * \param ueDevice the UE on which dedicated bearer to be de-activated must be of the type LteUeNetDevice * \param enbDevice eNB, must be of the type LteEnbNetDevice * \param bearerId Bearer Identity which is to be de-activated @@ -418,7 +417,7 @@ public: * \warning Requires the use of EPC mode. See SetEpcHelper() method. */ - void DeActivateDedicatedEpsBearer (Time deActivateTime, Ptr ueDevice, Ptr enbDevice, uint8_t bearerId); + void DeActivateDedicatedEpsBearer (Ptr ueDevice, Ptr enbDevice, uint8_t bearerId); /** * Create an X2 interface between all the eNBs in a given set. * diff --git a/src/lte/helper/point-to-point-epc-helper.cc b/src/lte/helper/point-to-point-epc-helper.cc index 7933bf526..9c9ff3cfa 100644 --- a/src/lte/helper/point-to-point-epc-helper.cc +++ b/src/lte/helper/point-to-point-epc-helper.cc @@ -292,7 +292,7 @@ PointToPointEpcHelper::AddUe (Ptr ueDevice, uint64_t imsi) } -void +uint8_t PointToPointEpcHelper::ActivateEpsBearer (Ptr ueDevice, uint64_t imsi, Ptr tft, EpsBearer bearer) { NS_LOG_FUNCTION (this << ueDevice << imsi); @@ -309,12 +309,13 @@ PointToPointEpcHelper::ActivateEpsBearer (Ptr ueDevice, uint64_t imsi Ipv4Address ueAddr = ueIpv4->GetAddress (interface, 0).GetLocal (); NS_LOG_LOGIC (" UE IP address: " << ueAddr); m_sgwPgwApp->SetUeAddress (imsi, ueAddr); - m_mme->AddBearer (imsi, tft, bearer); + uint8_t bearerId = m_mme->AddBearer (imsi, tft, bearer); Ptr ueLteDevice = ueDevice->GetObject (); if (ueLteDevice) { ueLteDevice->GetNas ()->ActivateEpsBearer (bearer, tft); } + return bearerId; } diff --git a/src/lte/helper/point-to-point-epc-helper.h b/src/lte/helper/point-to-point-epc-helper.h index 7e5deaeb6..4cd98d198 100644 --- a/src/lte/helper/point-to-point-epc-helper.h +++ b/src/lte/helper/point-to-point-epc-helper.h @@ -69,7 +69,7 @@ public: virtual void AddEnb (Ptr enbNode, Ptr lteEnbNetDevice, uint16_t cellId); virtual void AddUe (Ptr ueLteDevice, uint64_t imsi); virtual void AddX2Interface (Ptr enbNode1, Ptr enbNode2); - virtual void ActivateEpsBearer (Ptr ueLteDevice, uint64_t imsi, Ptr tft, EpsBearer bearer); + virtual uint8_t ActivateEpsBearer (Ptr ueLteDevice, uint64_t imsi, Ptr tft, EpsBearer bearer); virtual Ptr GetPgwNode (); virtual Ipv4InterfaceContainer AssignUeIpv4Address (NetDeviceContainer ueDevices); virtual Ipv4Address GetUeDefaultGatewayAddress (); diff --git a/src/lte/model/epc-mme.cc b/src/lte/model/epc-mme.cc index 7fa73f436..32f2e06c8 100644 --- a/src/lte/model/epc-mme.cc +++ b/src/lte/model/epc-mme.cc @@ -104,7 +104,7 @@ EpcMme::AddUe (uint64_t imsi) ueInfo->bearerCounter = 0; } -void +uint8_t EpcMme::AddBearer (uint64_t imsi, Ptr tft, EpsBearer bearer) { NS_LOG_FUNCTION (this << imsi); @@ -116,6 +116,7 @@ EpcMme::AddBearer (uint64_t imsi, Ptr tft, EpsBearer bearer) bearerInfo.tft = tft; bearerInfo.bearer = bearer; it->second->bearersToBeActivated.push_back (bearerInfo); + return bearerInfo.bearerId; } diff --git a/src/lte/model/epc-mme.h b/src/lte/model/epc-mme.h index 99085bfbd..1b71b0979 100644 --- a/src/lte/model/epc-mme.h +++ b/src/lte/model/epc-mme.h @@ -106,7 +106,7 @@ public: * \param tft traffic flow template of the bearer * \param bearer QoS characteristics of the bearer */ - void AddBearer (uint64_t imsi, Ptr tft, EpsBearer bearer); + uint8_t AddBearer (uint64_t imsi, Ptr tft, EpsBearer bearer); private: diff --git a/src/lte/model/epc-s1ap-sap.h b/src/lte/model/epc-s1ap-sap.h index a82d80d03..fa422570c 100644 --- a/src/lte/model/epc-s1ap-sap.h +++ b/src/lte/model/epc-s1ap-sap.h @@ -71,6 +71,7 @@ public: /** * \brief As per 3GPP TS 23.401 Release 9 V9.5.0 Figure 5.4.4.2-1 eNB sends indication of Bearer Release to MME + * \brief As per 3GPP TS version 9.8.0 section 8.2.3.2.2, the eNB initiates the procedure by sending an E-RAB RELEASE INDICATION message towards MME * \param mmeUeS1Id in practice, we use the IMSI * \param enbUeS1Id in practice, we use the RNTI * \param erabToBeReleaseIndication, List of bearers to be deactivated diff --git a/src/lte/test/lte-test-deactivate-bearer.cc b/src/lte/test/lte-test-deactivate-bearer.cc index 46438bb42..6c9296590 100644 --- a/src/lte/test/lte-test-deactivate-bearer.cc +++ b/src/lte/test/lte-test-deactivate-bearer.cc @@ -91,7 +91,7 @@ LenaTestBearerDeactivateSuite::LenaTestBearerDeactivateSuite () estThrPssDl_1.push_back (132000); // User 1 estimated TTI throughput from PSS estThrPssDl_1.push_back (132000); // User 2 estimated TTI throughput from PSS - AddTestCase (new LenaDeactivateBearerTestCase (dist_1,estThrPssDl_1,packetSize_1,1,errorModel), TestCase::QUICK); + AddTestCase (new LenaDeactivateBearerTestCase (dist_1,estThrPssDl_1,packetSize_1,1,errorModel,true), TestCase::QUICK); } static LenaTestBearerDeactivateSuite lenaTestBearerDeactivateSuite; @@ -110,14 +110,15 @@ LenaDeactivateBearerTestCase::BuildNameString (uint16_t nUser, std::vector dist, std::vector estThrPssDl, std::vector packetSize, uint16_t interval,bool errorModelEnabled) +LenaDeactivateBearerTestCase::LenaDeactivateBearerTestCase (std::vector dist, std::vector estThrPssDl, std::vector packetSize, uint16_t interval,bool errorModelEnabled, bool useIdealRrc) : TestCase (BuildNameString (dist.size (), dist)), m_nUser (dist.size ()), m_dist (dist), m_packetSize (packetSize), m_interval (interval), m_estThrPssDl (estThrPssDl), - m_errorModelEnabled (errorModelEnabled) + m_errorModelEnabled (errorModelEnabled), + m_useIdealRrc (useIdealRrc) { } @@ -292,16 +293,16 @@ LenaDeactivateBearerTestCase::DoRun (void) rlcStats->SetAttribute ("EpochDuration", TimeValue (Seconds (statsDuration))); - //get ue device pointer for UE-ID 0 IMSI 1 + //get ue device pointer for UE-ID 0 IMSI 1 and enb device pointer Ptr ueDevice = ueDevs.Get (0); - Time deActivateTime (Seconds (1.5)); + Ptr enbDevice = enbDevs.Get (0); /* - * Schedule dedicated bearer de-activation at 'deActivateTime' - * Instantiate De-activation in sequence (Time deActivateTime, Ptr ueDevice, Ptr enbDevice, uint8_t bearerId) + * Instantiate De-activation using Simulator::Schedule() method which will initiate bearer de-activation after deActivateTime + * Instantiate De-activation in sequence (Time const &time, MEM mem_ptr, OBJ obj, T1 a1, T2 a2, T3 a3) */ - - lteHelper->DeActivateDedicatedEpsBearer (deActivateTime,ueDevice,enbDevs.Get (0), 2); + Time deActivateTime (Seconds (1.5)); + Simulator::Schedule (deActivateTime, &LteHelper::DeActivateDedicatedEpsBearer, lteHelper, ueDevice, enbDevice, 2); //stop simulation after 3 seconds Simulator::Stop (Seconds (3.0)); diff --git a/src/lte/test/lte-test-deactivate-bearer.h b/src/lte/test/lte-test-deactivate-bearer.h index cf201584e..ea5373999 100644 --- a/src/lte/test/lte-test-deactivate-bearer.h +++ b/src/lte/test/lte-test-deactivate-bearer.h @@ -10,7 +10,7 @@ namespace ns3 { class LenaDeactivateBearerTestCase : public TestCase { public: - LenaDeactivateBearerTestCase (std::vector dist, std::vector estThrPssDl, std::vector packetSize, uint16_t interval, bool errorModelEnabled); + LenaDeactivateBearerTestCase (std::vector dist, std::vector estThrPssDl, std::vector packetSize, uint16_t interval, bool errorModelEnabled, bool useIdealRrc); virtual ~LenaDeactivateBearerTestCase (); private: @@ -22,6 +22,7 @@ private: uint16_t m_interval; // ms std::vector m_estThrPssDl; bool m_errorModelEnabled; + bool m_useIdealRrc; };