From fbc7386719a8a5e3d7f80945d1fb969186ac7d98 Mon Sep 17 00:00:00 2001 From: Lluis Parcerisa Date: Wed, 12 Dec 2012 18:48:24 +0100 Subject: [PATCH] Add functions in SAP's to send/receive ConnRej msg. --- src/lte/model/lte-rrc-protocol-ideal.cc | 8 ++++++++ src/lte/model/lte-rrc-protocol-ideal.h | 1 + src/lte/model/lte-rrc-protocol-real.cc | 19 +++++++++++++++++++ src/lte/model/lte-rrc-protocol-real.h | 1 + src/lte/model/lte-rrc-sap.h | 17 +++++++++++++++++ src/lte/model/lte-ue-rrc.cc | 5 +++++ src/lte/model/lte-ue-rrc.h | 1 + 7 files changed, 52 insertions(+) diff --git a/src/lte/model/lte-rrc-protocol-ideal.cc b/src/lte/model/lte-rrc-protocol-ideal.cc index beaa8e432..c0037c0e4 100644 --- a/src/lte/model/lte-rrc-protocol-ideal.cc +++ b/src/lte/model/lte-rrc-protocol-ideal.cc @@ -457,6 +457,14 @@ LteEnbRrcProtocolIdeal::DoSendRrcConnectionRelease (uint16_t rnti, LteRrcSap::Rr msg); } +void +LteEnbRrcProtocolIdeal::DoSendRrcConnectionReject (uint16_t rnti, LteRrcSap::RrcConnectionReject msg) +{ + Simulator::Schedule (RRC_IDEAL_MSG_DELAY, + &LteUeRrcSapProvider::RecvRrcConnectionReject, + GetUeRrcSapProvider (rnti), + msg); +} /* * The purpose of LteEnbRrcProtocolIdeal is to avoid encoding diff --git a/src/lte/model/lte-rrc-protocol-ideal.h b/src/lte/model/lte-rrc-protocol-ideal.h index e40420628..9a2fa6090 100644 --- a/src/lte/model/lte-rrc-protocol-ideal.h +++ b/src/lte/model/lte-rrc-protocol-ideal.h @@ -125,6 +125,7 @@ private: void DoSendRrcConnectionReestablishment (uint16_t rnti, LteRrcSap::RrcConnectionReestablishment msg); void DoSendRrcConnectionReestablishmentReject (uint16_t rnti, LteRrcSap::RrcConnectionReestablishmentReject msg); void DoSendRrcConnectionRelease (uint16_t rnti, LteRrcSap::RrcConnectionRelease msg); + void DoSendRrcConnectionReject (uint16_t rnti, LteRrcSap::RrcConnectionReject msg); Ptr DoEncodeHandoverPreparationInformation (LteRrcSap::HandoverPreparationInfo msg); LteRrcSap::HandoverPreparationInfo DoDecodeHandoverPreparationInformation (Ptr p); Ptr DoEncodeHandoverCommand (LteRrcSap::RrcConnectionReconfiguration msg); diff --git a/src/lte/model/lte-rrc-protocol-real.cc b/src/lte/model/lte-rrc-protocol-real.cc index 56e72eb8d..5284d76f8 100644 --- a/src/lte/model/lte-rrc-protocol-real.cc +++ b/src/lte/model/lte-rrc-protocol-real.cc @@ -584,6 +584,25 @@ LteEnbRrcProtocolReal::DoSendRrcConnectionSetup (uint16_t rnti, LteRrcSap::RrcCo } } +void +LteEnbRrcProtocolReal::DoSendRrcConnectionReject (uint16_t rnti, LteRrcSap::RrcConnectionReject msg) +{ + Ptr packet = Create (); + + RrcConnectionRejectHeader rrcConnectionRejectHeader; + rrcConnectionRejectHeader.SetMessage (msg); + + packet->AddHeader (rrcConnectionRejectHeader); + + LteRlcSapProvider::TransmitPdcpPduParameters transmitPdcpPduParameters; + transmitPdcpPduParameters.pdcpPdu = packet; + transmitPdcpPduParameters.rnti = rnti; + transmitPdcpPduParameters.lcid = 0; + + std::map::iterator it; + m_setupUeParametersMap[rnti].srb0SapProvider->TransmitPdcpPdu (transmitPdcpPduParameters); +} + void LteEnbRrcProtocolReal::DoSendRrcConnectionReconfiguration (uint16_t rnti, LteRrcSap::RrcConnectionReconfiguration msg) { diff --git a/src/lte/model/lte-rrc-protocol-real.h b/src/lte/model/lte-rrc-protocol-real.h index 131c8c5ad..800656e90 100644 --- a/src/lte/model/lte-rrc-protocol-real.h +++ b/src/lte/model/lte-rrc-protocol-real.h @@ -136,6 +136,7 @@ private: void DoSendRrcConnectionReestablishment (uint16_t rnti, LteRrcSap::RrcConnectionReestablishment msg); void DoSendRrcConnectionReestablishmentReject (uint16_t rnti, LteRrcSap::RrcConnectionReestablishmentReject msg); void DoSendRrcConnectionRelease (uint16_t rnti, LteRrcSap::RrcConnectionRelease msg); + void DoSendRrcConnectionReject (uint16_t rnti, LteRrcSap::RrcConnectionReject msg); Ptr DoEncodeHandoverPreparationInformation (LteRrcSap::HandoverPreparationInfo msg); LteRrcSap::HandoverPreparationInfo DoDecodeHandoverPreparationInformation (Ptr p); Ptr DoEncodeHandoverCommand (LteRrcSap::RrcConnectionReconfiguration msg); diff --git a/src/lte/model/lte-rrc-sap.h b/src/lte/model/lte-rrc-sap.h index 3f4523de9..81eca795f 100644 --- a/src/lte/model/lte-rrc-sap.h +++ b/src/lte/model/lte-rrc-sap.h @@ -384,6 +384,7 @@ public: virtual void RecvRrcConnectionReestablishment (RrcConnectionReestablishment msg) = 0; virtual void RecvRrcConnectionReestablishmentReject (RrcConnectionReestablishmentReject msg) = 0; virtual void RecvRrcConnectionRelease (RrcConnectionRelease msg) = 0; + virtual void RecvRrcConnectionReject (RrcConnectionReject msg) = 0; }; @@ -413,6 +414,7 @@ public: virtual void SendRrcConnectionReestablishment (uint16_t rnti, RrcConnectionReestablishment msg) = 0; virtual void SendRrcConnectionReestablishmentReject (uint16_t rnti, RrcConnectionReestablishmentReject msg) = 0; virtual void SendRrcConnectionRelease (uint16_t rnti, RrcConnectionRelease msg) = 0; + virtual void SendRrcConnectionReject (uint16_t rnti, RrcConnectionReject msg) = 0; virtual Ptr EncodeHandoverPreparationInformation (HandoverPreparationInfo msg) = 0; virtual HandoverPreparationInfo DecodeHandoverPreparationInformation (Ptr p) = 0; virtual Ptr EncodeHandoverCommand (RrcConnectionReconfiguration msg) = 0; @@ -563,6 +565,7 @@ public: virtual void RecvRrcConnectionReestablishment (RrcConnectionReestablishment msg); virtual void RecvRrcConnectionReestablishmentReject (RrcConnectionReestablishmentReject msg); virtual void RecvRrcConnectionRelease (RrcConnectionRelease msg); + virtual void RecvRrcConnectionReject (RrcConnectionReject msg); private: MemberLteUeRrcSapProvider (); @@ -643,6 +646,12 @@ MemberLteUeRrcSapProvider::RecvRrcConnectionRelease (RrcConnectionRelease msg m_owner->DoRecvRrcConnectionRelease (msg); } +template +void +MemberLteUeRrcSapProvider::RecvRrcConnectionReject (RrcConnectionReject msg) +{ + m_owner->DoRecvRrcConnectionReject (msg); +} /** @@ -668,6 +677,7 @@ public: virtual void SendRrcConnectionReestablishment (uint16_t rnti, RrcConnectionReestablishment msg); virtual void SendRrcConnectionReestablishmentReject (uint16_t rnti, RrcConnectionReestablishmentReject msg); virtual void SendRrcConnectionRelease (uint16_t rnti, RrcConnectionRelease msg); + virtual void SendRrcConnectionReject (uint16_t rnti, RrcConnectionReject msg); virtual Ptr EncodeHandoverPreparationInformation (HandoverPreparationInfo msg); virtual HandoverPreparationInfo DecodeHandoverPreparationInformation (Ptr p); virtual Ptr EncodeHandoverCommand (RrcConnectionReconfiguration msg); @@ -759,6 +769,13 @@ MemberLteEnbRrcSapUser::SendRrcConnectionRelease (uint16_t rnti, RrcConnectio m_owner->DoSendRrcConnectionRelease (rnti, msg); } +template +void +MemberLteEnbRrcSapUser::SendRrcConnectionReject (uint16_t rnti, RrcConnectionReject msg) +{ + m_owner->DoSendRrcConnectionReject (rnti, msg); +} + template Ptr MemberLteEnbRrcSapUser::EncodeHandoverPreparationInformation (HandoverPreparationInfo msg) diff --git a/src/lte/model/lte-ue-rrc.cc b/src/lte/model/lte-ue-rrc.cc index 4e0f222fb..9b7b5531a 100644 --- a/src/lte/model/lte-ue-rrc.cc +++ b/src/lte/model/lte-ue-rrc.cc @@ -689,6 +689,11 @@ LteUeRrc::DoRecvRrcConnectionRelease (LteRrcSap::RrcConnectionRelease msg) NS_LOG_FUNCTION (this); } +void +LteUeRrc::DoRecvRrcConnectionReject (LteRrcSap::RrcConnectionReject msg) +{ + NS_LOG_FUNCTION (this); +} diff --git a/src/lte/model/lte-ue-rrc.h b/src/lte/model/lte-ue-rrc.h index c5f9f6004..46d04163d 100644 --- a/src/lte/model/lte-ue-rrc.h +++ b/src/lte/model/lte-ue-rrc.h @@ -247,6 +247,7 @@ private: void DoRecvRrcConnectionReestablishment (LteRrcSap::RrcConnectionReestablishment msg); void DoRecvRrcConnectionReestablishmentReject (LteRrcSap::RrcConnectionReestablishmentReject msg); void DoRecvRrcConnectionRelease (LteRrcSap::RrcConnectionRelease msg); + void DoRecvRrcConnectionReject (LteRrcSap::RrcConnectionReject msg); // internal methods