diff --git a/src/lte/model/lte-enb-rrc.cc b/src/lte/model/lte-enb-rrc.cc index 3aec3d99d..0d0bac90d 100644 --- a/src/lte/model/lte-enb-rrc.cc +++ b/src/lte/model/lte-enb-rrc.cc @@ -141,7 +141,7 @@ UeManager::UeManager (Ptr rrc, uint16_t rnti, State s) { NS_LOG_FUNCTION (this); - m_pdcpSapUser = new LtePdcpSpecificLtePdcpSapUser (this); + m_drbPdcpSapUser = new LtePdcpSpecificLtePdcpSapUser (this); m_physicalConfigDedicated.haveAntennaInfoDedicated = true; m_physicalConfigDedicated.antennaInfo.transmissionMode = m_rrc->m_defaultTransmissionMode; @@ -185,7 +185,7 @@ UeManager::UeManager (Ptr rrc, uint16_t rnti, State s) Ptr pdcp = CreateObject (); pdcp->SetRnti (m_rnti); pdcp->SetLcId (lcid); - pdcp->SetLtePdcpSapUser (m_pdcpSapUser); + pdcp->SetLtePdcpSapUser (m_drbPdcpSapUser); pdcp->SetLteRlcSapProvider (rlc->GetLteRlcSapProvider ()); rlc->SetLteRlcSapUser (pdcp->GetLteRlcSapUser ()); @@ -235,7 +235,7 @@ UeManager::~UeManager (void) void UeManager::DoDispose () { - delete m_pdcpSapUser; + delete m_drbPdcpSapUser; m_rrc->m_cmacSapProvider->RemoveUe (m_rnti); m_rrc->m_cphySapProvider->RemoveUe (m_rnti); @@ -305,7 +305,7 @@ UeManager::SetupDataRadioBearer (EpsBearer bearer, uint32_t gtpTeid, Ipv4Address Ptr pdcp = CreateObject (); pdcp->SetRnti (m_rnti); pdcp->SetLcId (lcid); - pdcp->SetLtePdcpSapUser (m_pdcpSapUser); + pdcp->SetLtePdcpSapUser (m_drbPdcpSapUser); pdcp->SetLteRlcSapProvider (rlc->GetLteRlcSapProvider ()); rlc->SetLteRlcSapUser (pdcp->GetLteRlcSapUser ()); drbInfo->m_pdcp = pdcp; diff --git a/src/lte/model/lte-enb-rrc.h b/src/lte/model/lte-enb-rrc.h index 6807493e0..65c0b5a68 100644 --- a/src/lte/model/lte-enb-rrc.h +++ b/src/lte/model/lte-enb-rrc.h @@ -346,7 +346,7 @@ private: LteRrcSap::PhysicalConfigDedicated m_physicalConfigDedicated; Ptr m_rrc; State m_state; - LtePdcpSapUser* m_pdcpSapUser; + LtePdcpSapUser* m_drbPdcpSapUser; bool m_pendingRrcConnectionReconfiguration; TracedCallback m_stateTransitionCallback; uint16_t m_sourceX2apId; diff --git a/src/lte/model/lte-rrc-sap.h b/src/lte/model/lte-rrc-sap.h index d0d6d86b9..4ba1af1d6 100644 --- a/src/lte/model/lte-rrc-sap.h +++ b/src/lte/model/lte-rrc-sap.h @@ -363,6 +363,13 @@ class LteUeRrcSapProvider : public LteRrcSap { public: + struct CompleteSetupParameters + { + LteRlcSapUser* srb0SapUser; + LtePdcpSapUser* srb1SapUser; + }; + + virtual void CompleteSetup (CompleteSetupParameters params) = 0; virtual void RecvMasterInformationBlock (MasterInformationBlock msg) = 0; virtual void RecvSystemInformationBlockType1 (SystemInformationBlockType1 msg) = 0; virtual void RecvSystemInformation (SystemInformation msg) = 0; @@ -541,6 +548,7 @@ public: MemberLteUeRrcSapProvider (C* owner); // methods inherited from LteUeRrcSapProvider go here + virtual void CompleteSetup (CompleteSetupParameters params); virtual void RecvMasterInformationBlock (MasterInformationBlock msg); virtual void RecvSystemInformationBlockType1 (SystemInformationBlockType1 msg); virtual void RecvSystemInformation (SystemInformation msg); @@ -566,6 +574,13 @@ MemberLteUeRrcSapProvider::MemberLteUeRrcSapProvider () { } +template +void +MemberLteUeRrcSapProvider::CompleteSetup (CompleteSetupParameters params) +{ + m_owner->DoCompleteSetup (params); +} + template void MemberLteUeRrcSapProvider::RecvMasterInformationBlock (MasterInformationBlock msg) diff --git a/src/lte/model/lte-ue-rrc.cc b/src/lte/model/lte-ue-rrc.cc index 2c0a726be..fb31e0ac8 100644 --- a/src/lte/model/lte-ue-rrc.cc +++ b/src/lte/model/lte-ue-rrc.cc @@ -135,7 +135,7 @@ LteUeRrc::LteUeRrc () m_cphySapUser = new MemberLteUeCphySapUser (this); m_cmacSapUser = new UeMemberLteUeCmacSapUser (this); m_rrcSapProvider = new MemberLteUeRrcSapProvider (this); - m_pdcpSapUser = new LtePdcpSpecificLtePdcpSapUser (this); + m_drbPdcpSapUser = new LtePdcpSpecificLtePdcpSapUser (this); m_asSapProvider = new MemberLteAsSapProvider (this); } @@ -151,7 +151,7 @@ LteUeRrc::DoDispose () NS_LOG_FUNCTION (this); delete m_cphySapUser; delete m_cmacSapUser; - delete m_pdcpSapUser; + delete m_drbPdcpSapUser; delete m_asSapProvider; m_drbMap.clear (); } @@ -510,6 +510,15 @@ LteUeRrc::DoRecvMasterInformationBlock (LteRrcSap::MasterInformationBlock msg) // RRC SAP methods +void +LteUeRrc::DoCompleteSetup (LteUeRrcSapProvider::CompleteSetupParameters params) +{ + NS_LOG_FUNCTION (this); + m_srb0->m_rlc->SetLteRlcSapUser (params.srb0SapUser); + m_srb1->m_pdcp->SetLtePdcpSapUser (params.srb1SapUser); +} + + void LteUeRrc::DoRecvSystemInformationBlockType1 (LteRrcSap::SystemInformationBlockType1 msg) { @@ -686,7 +695,7 @@ LteUeRrc::ApplyRadioResourceConfigDedicated (LteRrcSap::RadioResourceConfigDedic Ptr pdcp = CreateObject (); pdcp->SetRnti (m_rnti); pdcp->SetLcId (lcid); - pdcp->SetLtePdcpSapUser (m_pdcpSapUser); + pdcp->SetLtePdcpSapUser (m_drbPdcpSapUser); pdcp->SetLteRlcSapProvider (rlc->GetLteRlcSapProvider ()); rlc->SetLteRlcSapUser (pdcp->GetLteRlcSapUser ()); @@ -775,7 +784,7 @@ LteUeRrc::ApplyRadioResourceConfigDedicated (LteRrcSap::RadioResourceConfigDedic Ptr pdcp = CreateObject (); pdcp->SetRnti (m_rnti); pdcp->SetLcId (dtamIt->logicalChannelIdentity); - pdcp->SetLtePdcpSapUser (m_pdcpSapUser); + pdcp->SetLtePdcpSapUser (m_drbPdcpSapUser); pdcp->SetLteRlcSapProvider (rlc->GetLteRlcSapProvider ()); rlc->SetLteRlcSapUser (pdcp->GetLteRlcSapUser ()); drbInfo->m_pdcp = pdcp; diff --git a/src/lte/model/lte-ue-rrc.h b/src/lte/model/lte-ue-rrc.h index feb65d161..808e6a3a2 100644 --- a/src/lte/model/lte-ue-rrc.h +++ b/src/lte/model/lte-ue-rrc.h @@ -239,6 +239,7 @@ private: void DoRecvMasterInformationBlock (LteRrcSap::MasterInformationBlock msg); // RRC SAP methods + void DoCompleteSetup (LteUeRrcSapProvider::CompleteSetupParameters params); void DoRecvSystemInformationBlockType1 (LteRrcSap::SystemInformationBlockType1 msg); void DoRecvSystemInformation (LteRrcSap::SystemInformation msg); void DoRecvRrcConnectionSetup (LteRrcSap::RrcConnectionSetup msg); @@ -267,7 +268,7 @@ private: LteUeRrcSapProvider* m_rrcSapProvider; LteMacSapProvider* m_macSapProvider; - LtePdcpSapUser* m_pdcpSapUser; + LtePdcpSapUser* m_drbPdcpSapUser; LteAsSapProvider* m_asSapProvider; LteAsSapUser* m_asSapUser;