From 5962ee0c9ee8e044ba42fa8f9d2f1cc8543c7cd3 Mon Sep 17 00:00:00 2001 From: Lluis Parcerisa Date: Fri, 7 Dec 2012 13:25:32 +0100 Subject: [PATCH] Create RealProtocolRlcSapUser to store RNTI as a member when constructing the object. --- src/lte/model/lte-rrc-protocol-real.cc | 34 +++++++++++++++++--------- src/lte/model/lte-rrc-protocol-real.h | 18 +++++++++++++- 2 files changed, 40 insertions(+), 12 deletions(-) diff --git a/src/lte/model/lte-rrc-protocol-real.cc b/src/lte/model/lte-rrc-protocol-real.cc index 16675b565..0154d87d9 100644 --- a/src/lte/model/lte-rrc-protocol-real.cc +++ b/src/lte/model/lte-rrc-protocol-real.cc @@ -141,7 +141,7 @@ LteUeRrcProtocolReal::DoSendRrcConnectionRequest (LteRrcSap::RrcConnectionReques m_rnti = m_rrc->GetRnti (); SetEnbRrcSapProvider (); - /*Ptr packet = Create (); + Ptr packet = Create (); RrcConnectionRequestHeader rrcConnectionRequestHeader; rrcConnectionRequestHeader.SetMessage (msg); @@ -154,12 +154,6 @@ LteUeRrcProtocolReal::DoSendRrcConnectionRequest (LteRrcSap::RrcConnectionReques transmitPdcpPduParameters.lcid = 0; m_setupParameters.srb0SapProvider->TransmitPdcpPdu(transmitPdcpPduParameters); - */ - Simulator::Schedule (RRC_REAL_MSG_DELAY, - &LteEnbRrcSapProvider::RecvRrcConnectionRequest, - m_enbRrcSapProvider, - m_rnti, - msg); } void @@ -457,7 +451,7 @@ LteEnbRrcProtocolReal::DoSetupUe (uint16_t rnti, LteEnbRrcSapUser::SetupUeParame m_setupUeParametersMap[rnti] = params; // Create LteRlcSapUser, LtePdcpSapUser - LteRlcSapUser* srb0SapUser = new LteRlcSpecificLteRlcSapUser (this); + LteRlcSapUser* srb0SapUser = new RealProtocolRlcSapUser (this,rnti); LtePdcpSapUser* srb1SapUser = new LtePdcpSpecificLtePdcpSapUser (this); LteEnbRrcSapProvider::CompleteSetupUeParameters completeSetupUeParameters; completeSetupUeParameters.srb0SapUser = srb0SapUser; @@ -633,7 +627,7 @@ LteEnbRrcProtocolReal::DoSendRrcConnectionRelease (uint16_t rnti, LteRrcSap::Rrc } void -LteEnbRrcProtocolReal::DoReceivePdcpPdu (Ptr p) +LteEnbRrcProtocolReal::DoReceivePdcpPdu (uint16_t rnti, Ptr p) { // Get type of message received RrcUlCcchMessage rrcUlCcchMessage; @@ -650,13 +644,13 @@ LteEnbRrcProtocolReal::DoReceivePdcpPdu (Ptr p) p->RemoveHeader (rrcConnectionReestablishmentRequestHeader); LteRrcSap::RrcConnectionReestablishmentRequest rrcConnectionReestablishmentRequestMsg; rrcConnectionReestablishmentRequestMsg = rrcConnectionReestablishmentRequestHeader.GetMessage (); - m_enbRrcSapProvider->RecvRrcConnectionReestablishmentRequest (m_rnti,rrcConnectionReestablishmentRequestMsg); + m_enbRrcSapProvider->RecvRrcConnectionReestablishmentRequest (rnti,rrcConnectionReestablishmentRequestMsg); break; case 1: p->RemoveHeader (rrcConnectionRequestHeader); LteRrcSap::RrcConnectionRequest rrcConnectionRequestMsg; rrcConnectionRequestMsg = rrcConnectionRequestHeader.GetMessage (); - m_enbRrcSapProvider->RecvRrcConnectionRequest (m_rnti,rrcConnectionRequestMsg); + m_enbRrcSapProvider->RecvRrcConnectionRequest (rnti,rrcConnectionRequestMsg); break; } } @@ -736,4 +730,22 @@ LteEnbRrcProtocolReal::DoDecodeHandoverCommand (Ptr p) return msg; } +////////////////////////////////////////////////////// + +RealProtocolRlcSapUser::RealProtocolRlcSapUser (LteEnbRrcProtocolReal* pdcp, uint16_t rnti) + : m_pdcp (pdcp), + m_rnti (rnti) +{ +} + +RealProtocolRlcSapUser::RealProtocolRlcSapUser () +{ +} + +void +RealProtocolRlcSapUser::ReceivePdcpPdu (Ptr p) +{ + m_pdcp->DoReceivePdcpPdu (m_rnti, p); +} + } // namespace ns3 diff --git a/src/lte/model/lte-rrc-protocol-real.h b/src/lte/model/lte-rrc-protocol-real.h index 6c32361df..882121cd0 100644 --- a/src/lte/model/lte-rrc-protocol-real.h +++ b/src/lte/model/lte-rrc-protocol-real.h @@ -125,6 +125,8 @@ public: LteUeRrcSapProvider* GetUeRrcSapProvider (uint16_t rnti); void SetUeRrcSapProvider (uint16_t rnti, LteUeRrcSapProvider* p); + void DoReceivePdcpPdu (uint16_t rnti, Ptr p); + private: // methods forwarded from LteEnbRrcSapUser @@ -144,7 +146,6 @@ private: Ptr DoEncodeHandoverCommand (LteRrcSap::RrcConnectionReconfiguration msg); LteRrcSap::RrcConnectionReconfiguration DoDecodeHandoverCommand (Ptr p); - void DoReceivePdcpPdu (Ptr p); void DoReceivePdcpSdu (LtePdcpSapUser::ReceivePdcpSduParameters params); uint16_t m_rnti; @@ -157,6 +158,21 @@ private: }; +/////////////////////////////////////// + +class RealProtocolRlcSapUser : public LteRlcSapUser +{ +public: + RealProtocolRlcSapUser (LteEnbRrcProtocolReal* pdcp, uint16_t rnti); + + // Interface implemented from LteRlcSapUser + virtual void ReceivePdcpPdu (Ptr p); + +private: + RealProtocolRlcSapUser (); + LteEnbRrcProtocolReal* m_pdcp; + uint16_t m_rnti; +}; }