22 #include <ns3/fatal-error.h>
24 #include <ns3/nstime.h>
25 #include <ns3/node-list.h>
27 #include <ns3/simulator.h>
29 #include "lte-rrc-protocol-real.h"
30 #include "lte-ue-rrc.h"
31 #include "lte-enb-rrc.h"
32 #include "lte-enb-net-device.h"
33 #include "lte-ue-net-device.h"
43 NS_OBJECT_ENSURE_REGISTERED (LteUeRrcProtocolReal);
45 LteUeRrcProtocolReal::LteUeRrcProtocolReal ()
46 : m_ueRrcSapProvider (0),
47 m_enbRrcSapProvider (0)
49 m_ueRrcSapUser =
new MemberLteUeRrcSapUser<LteUeRrcProtocolReal> (
this);
50 m_completeSetupParameters.srb0SapUser =
new LteRlcSpecificLteRlcSapUser<LteUeRrcProtocolReal> (
this);
51 m_completeSetupParameters.srb1SapUser =
new LtePdcpSpecificLtePdcpSapUser<LteUeRrcProtocolReal> (
this);
54 LteUeRrcProtocolReal::~LteUeRrcProtocolReal ()
62 delete m_ueRrcSapUser;
63 delete m_completeSetupParameters.srb0SapUser;
64 delete m_completeSetupParameters.srb1SapUser;
69 LteUeRrcProtocolReal::GetTypeId (
void)
73 .AddConstructor<LteUeRrcProtocolReal> ()
79 LteUeRrcProtocolReal::SetLteUeRrcSapProvider (LteUeRrcSapProvider* p)
81 m_ueRrcSapProvider = p;
85 LteUeRrcProtocolReal::GetLteUeRrcSapUser ()
87 return m_ueRrcSapUser;
91 LteUeRrcProtocolReal::SetUeRrc (Ptr<LteUeRrc> rrc)
97 LteUeRrcProtocolReal::DoSetup (LteUeRrcSapUser::SetupParameters params)
101 m_setupParameters.srb0SapProvider = params.srb0SapProvider;
102 m_setupParameters.srb1SapProvider = params.srb1SapProvider;
103 m_ueRrcSapProvider->CompleteSetup (m_completeSetupParameters);
107 LteUeRrcProtocolReal::DoSendRrcConnectionRequest (LteRrcSap::RrcConnectionRequest msg)
111 m_rnti = m_rrc->GetRnti ();
112 SetEnbRrcSapProvider ();
114 Ptr<Packet> packet = Create<Packet> ();
116 RrcConnectionRequestHeader rrcConnectionRequestHeader;
117 rrcConnectionRequestHeader.SetMessage (msg);
119 packet->AddHeader (rrcConnectionRequestHeader);
121 LteRlcSapProvider::TransmitPdcpPduParameters transmitPdcpPduParameters;
122 transmitPdcpPduParameters.pdcpPdu = packet;
123 transmitPdcpPduParameters.rnti = m_rnti;
124 transmitPdcpPduParameters.lcid = 0;
126 m_setupParameters.srb0SapProvider->
TransmitPdcpPdu (transmitPdcpPduParameters);
130 LteUeRrcProtocolReal::DoSendRrcConnectionSetupCompleted (LteRrcSap::RrcConnectionSetupCompleted msg)
132 Ptr<Packet> packet = Create<Packet> ();
134 RrcConnectionSetupCompleteHeader rrcConnectionSetupCompleteHeader;
135 rrcConnectionSetupCompleteHeader.SetMessage (msg);
137 packet->AddHeader (rrcConnectionSetupCompleteHeader);
139 LtePdcpSapProvider::TransmitPdcpSduParameters transmitPdcpSduParameters;
140 transmitPdcpSduParameters.pdcpSdu = packet;
141 transmitPdcpSduParameters.rnti = m_rnti;
142 transmitPdcpSduParameters.lcid = 1;
144 if (m_setupParameters.srb1SapProvider)
146 m_setupParameters.srb1SapProvider->
TransmitPdcpSdu (transmitPdcpSduParameters);
151 LteUeRrcProtocolReal::DoSendRrcConnectionReconfigurationCompleted (LteRrcSap::RrcConnectionReconfigurationCompleted msg)
155 m_rnti = m_rrc->GetRnti ();
156 SetEnbRrcSapProvider ();
158 Ptr<Packet> packet = Create<Packet> ();
160 RrcConnectionReconfigurationCompleteHeader rrcConnectionReconfigurationCompleteHeader;
161 rrcConnectionReconfigurationCompleteHeader.SetMessage (msg);
163 packet->AddHeader (rrcConnectionReconfigurationCompleteHeader);
165 LtePdcpSapProvider::TransmitPdcpSduParameters transmitPdcpSduParameters;
166 transmitPdcpSduParameters.pdcpSdu = packet;
167 transmitPdcpSduParameters.rnti = m_rnti;
168 transmitPdcpSduParameters.lcid = 1;
170 m_setupParameters.srb1SapProvider->
TransmitPdcpSdu (transmitPdcpSduParameters);
174 LteUeRrcProtocolReal::DoSendMeasurementReport (LteRrcSap::MeasurementReport msg)
178 m_rnti = m_rrc->GetRnti ();
179 SetEnbRrcSapProvider ();
181 Ptr<Packet> packet = Create<Packet> ();
183 MeasurementReportHeader measurementReportHeader;
184 measurementReportHeader.SetMessage (msg);
186 packet->AddHeader (measurementReportHeader);
188 LtePdcpSapProvider::TransmitPdcpSduParameters transmitPdcpSduParameters;
189 transmitPdcpSduParameters.pdcpSdu = packet;
190 transmitPdcpSduParameters.rnti = m_rnti;
191 transmitPdcpSduParameters.lcid = 1;
193 m_setupParameters.srb1SapProvider->
TransmitPdcpSdu (transmitPdcpSduParameters);
197 LteUeRrcProtocolReal::DoSendRrcConnectionReestablishmentRequest (LteRrcSap::RrcConnectionReestablishmentRequest msg)
199 Ptr<Packet> packet = Create<Packet> ();
201 RrcConnectionReestablishmentRequestHeader rrcConnectionReestablishmentRequestHeader;
202 rrcConnectionReestablishmentRequestHeader.SetMessage (msg);
204 packet->AddHeader (rrcConnectionReestablishmentRequestHeader);
206 LteRlcSapProvider::TransmitPdcpPduParameters transmitPdcpPduParameters;
207 transmitPdcpPduParameters.pdcpPdu = packet;
208 transmitPdcpPduParameters.rnti = m_rnti;
209 transmitPdcpPduParameters.lcid = 0;
211 m_setupParameters.srb0SapProvider->
TransmitPdcpPdu (transmitPdcpPduParameters);
215 LteUeRrcProtocolReal::DoSendRrcConnectionReestablishmentComplete (LteRrcSap::RrcConnectionReestablishmentComplete msg)
217 Ptr<Packet> packet = Create<Packet> ();
219 RrcConnectionReestablishmentCompleteHeader rrcConnectionReestablishmentCompleteHeader;
220 rrcConnectionReestablishmentCompleteHeader.SetMessage (msg);
222 packet->AddHeader (rrcConnectionReestablishmentCompleteHeader);
224 LtePdcpSapProvider::TransmitPdcpSduParameters transmitPdcpSduParameters;
225 transmitPdcpSduParameters.pdcpSdu = packet;
226 transmitPdcpSduParameters.rnti = m_rnti;
227 transmitPdcpSduParameters.lcid = 1;
229 m_setupParameters.srb1SapProvider->
TransmitPdcpSdu (transmitPdcpSduParameters);
234 LteUeRrcProtocolReal::SetEnbRrcSapProvider ()
236 uint16_t cellId = m_rrc->GetCellId ();
239 Ptr<LteEnbNetDevice> enbDev;
243 (i != listEnd) && (!found);
247 int nDevs = node->GetNDevices ();
249 (j < nDevs) && (!found);
252 enbDev = node->GetDevice (j)->GetObject <LteEnbNetDevice> ();
259 if (enbDev->GetCellId () == cellId)
267 NS_ASSERT_MSG (found,
" Unable to find eNB with CellId =" << cellId);
268 m_enbRrcSapProvider = enbDev->GetRrc ()->GetLteEnbRrcSapProvider ();
269 Ptr<LteEnbRrcProtocolReal> enbRrcProtocolReal = enbDev->GetRrc ()->GetObject<LteEnbRrcProtocolReal> ();
270 enbRrcProtocolReal->SetUeRrcSapProvider (m_rnti, m_ueRrcSapProvider);
274 LteUeRrcProtocolReal::DoReceivePdcpPdu (Ptr<Packet> p)
277 RrcDlCcchMessage rrcDlCcchMessage;
278 p->PeekHeader (rrcDlCcchMessage);
281 RrcConnectionReestablishmentHeader rrcConnectionReestablishmentHeader;
282 RrcConnectionReestablishmentRejectHeader rrcConnectionReestablishmentRejectHeader;
283 RrcConnectionSetupHeader rrcConnectionSetupHeader;
284 RrcConnectionRejectHeader rrcConnectionRejectHeader;
287 LteRrcSap::RrcConnectionReestablishment rrcConnectionReestablishmentMsg;
288 LteRrcSap::RrcConnectionReestablishmentReject rrcConnectionReestablishmentRejectMsg;
289 LteRrcSap::RrcConnectionSetup rrcConnectionSetupMsg;
290 LteRrcSap::RrcConnectionReject rrcConnectionRejectMsg;
293 switch ( rrcDlCcchMessage.GetMessageType () )
297 p->RemoveHeader (rrcConnectionReestablishmentHeader);
298 rrcConnectionReestablishmentMsg = rrcConnectionReestablishmentHeader.GetMessage ();
299 m_ueRrcSapProvider->RecvRrcConnectionReestablishment (rrcConnectionReestablishmentMsg);
303 p->RemoveHeader (rrcConnectionReestablishmentRejectHeader);
304 rrcConnectionReestablishmentRejectMsg = rrcConnectionReestablishmentRejectHeader.GetMessage ();
309 p->RemoveHeader (rrcConnectionRejectHeader);
310 rrcConnectionRejectMsg = rrcConnectionRejectHeader.GetMessage ();
311 m_ueRrcSapProvider->RecvRrcConnectionReject (rrcConnectionRejectMsg);
315 p->RemoveHeader (rrcConnectionSetupHeader);
316 rrcConnectionSetupMsg = rrcConnectionSetupHeader.GetMessage ();
317 m_ueRrcSapProvider->RecvRrcConnectionSetup (rrcConnectionSetupMsg);
323 LteUeRrcProtocolReal::DoReceivePdcpSdu (LtePdcpSapUser::ReceivePdcpSduParameters params)
326 RrcDlDcchMessage rrcDlDcchMessage;
327 params.pdcpSdu->PeekHeader (rrcDlDcchMessage);
330 RrcConnectionReconfigurationHeader rrcConnectionReconfigurationHeader;
331 RrcConnectionReleaseHeader rrcConnectionReleaseHeader;
334 LteRrcSap::RrcConnectionReconfiguration rrcConnectionReconfigurationMsg;
335 LteRrcSap::RrcConnectionRelease rrcConnectionReleaseMsg;
338 switch ( rrcDlDcchMessage.GetMessageType () )
341 params.pdcpSdu->RemoveHeader (rrcConnectionReconfigurationHeader);
342 rrcConnectionReconfigurationMsg = rrcConnectionReconfigurationHeader.GetMessage ();
343 m_ueRrcSapProvider->RecvRrcConnectionReconfiguration (rrcConnectionReconfigurationMsg);
346 params.pdcpSdu->RemoveHeader (rrcConnectionReleaseHeader);
347 rrcConnectionReleaseMsg = rrcConnectionReleaseHeader.GetMessage ();
353 NS_OBJECT_ENSURE_REGISTERED (LteEnbRrcProtocolReal);
355 LteEnbRrcProtocolReal::LteEnbRrcProtocolReal ()
356 : m_enbRrcSapProvider (0)
359 m_enbRrcSapUser =
new MemberLteEnbRrcSapUser<LteEnbRrcProtocolReal> (
this);
362 LteEnbRrcProtocolReal::~LteEnbRrcProtocolReal ()
371 delete m_enbRrcSapUser;
372 for (std::map<uint16_t, LteEnbRrcSapProvider::CompleteSetupUeParameters>::iterator
373 it = m_completeSetupUeParametersMap.begin ();
374 it != m_completeSetupUeParametersMap.end ();
377 delete it->second.srb0SapUser;
378 delete it->second.srb1SapUser;
380 m_completeSetupUeParametersMap.clear ();
384 LteEnbRrcProtocolReal::GetTypeId (
void)
386 static TypeId tid =
TypeId (
"ns3::LteEnbRrcProtocolReal")
388 .AddConstructor<LteEnbRrcProtocolReal> ()
394 LteEnbRrcProtocolReal::SetLteEnbRrcSapProvider (LteEnbRrcSapProvider* p)
396 m_enbRrcSapProvider = p;
400 LteEnbRrcProtocolReal::GetLteEnbRrcSapUser ()
402 return m_enbRrcSapUser;
406 LteEnbRrcProtocolReal::SetCellId (uint16_t cellId)
412 LteEnbRrcProtocolReal::GetUeRrcSapProvider (uint16_t rnti)
414 std::map<uint16_t, LteUeRrcSapProvider*>::const_iterator it;
415 it = m_enbRrcSapProviderMap.find (rnti);
416 NS_ASSERT_MSG (it != m_enbRrcSapProviderMap.end (),
"could not find RNTI = " << rnti);
421 LteEnbRrcProtocolReal::SetUeRrcSapProvider (uint16_t rnti, LteUeRrcSapProvider* p)
423 std::map<uint16_t, LteUeRrcSapProvider*>::iterator it;
424 it = m_enbRrcSapProviderMap.find (rnti);
425 NS_ASSERT_MSG (it != m_enbRrcSapProviderMap.end (),
"could not find RNTI = " << rnti);
430 LteEnbRrcProtocolReal::DoSetupUe (uint16_t rnti, LteEnbRrcSapUser::SetupUeParameters params)
466 m_enbRrcSapProviderMap[rnti] = 0;
469 m_setupUeParametersMap[rnti] = params;
471 LteEnbRrcSapProvider::CompleteSetupUeParameters completeSetupUeParameters;
472 std::map<uint16_t, LteEnbRrcSapProvider::CompleteSetupUeParameters>::iterator
473 csupIt = m_completeSetupUeParametersMap.find (rnti);
474 if (csupIt == m_completeSetupUeParametersMap.end ())
477 LteRlcSapUser* srb0SapUser =
new RealProtocolRlcSapUser (
this,rnti);
478 LtePdcpSapUser* srb1SapUser =
new LtePdcpSpecificLtePdcpSapUser<LteEnbRrcProtocolReal> (
this);
479 completeSetupUeParameters.srb0SapUser = srb0SapUser;
480 completeSetupUeParameters.srb1SapUser = srb1SapUser;
482 m_completeSetupUeParametersMap[rnti] = completeSetupUeParameters;
486 completeSetupUeParameters = csupIt->second;
488 m_enbRrcSapProvider->CompleteSetupUe (rnti, completeSetupUeParameters);
492 LteEnbRrcProtocolReal::DoRemoveUe (uint16_t rnti)
495 std::map<uint16_t, LteEnbRrcSapProvider::CompleteSetupUeParameters>::iterator
496 it = m_completeSetupUeParametersMap.find (rnti);
497 NS_ASSERT (it != m_completeSetupUeParametersMap.end ());
498 delete it->second.srb0SapUser;
499 delete it->second.srb1SapUser;
500 m_completeSetupUeParametersMap.erase (it);
501 m_enbRrcSapProviderMap.erase (rnti);
502 m_setupUeParametersMap.erase (rnti);
506 LteEnbRrcProtocolReal::DoSendMasterInformationBlock (LteRrcSap::MasterInformationBlock msg)
509 for (std::map<uint16_t, LteUeRrcSapProvider*>::const_iterator it = m_enbRrcSapProviderMap.begin ();
510 it != m_enbRrcSapProviderMap.end ();
514 &LteUeRrcSapProvider::RecvMasterInformationBlock,
521 LteEnbRrcProtocolReal::DoSendSystemInformationBlockType1 (LteRrcSap::SystemInformationBlockType1 msg)
529 int nDevs = node->GetNDevices ();
530 for (
int j = 0; j < nDevs; ++j)
532 Ptr<LteUeNetDevice> ueDev = node->GetDevice (j)->GetObject <LteUeNetDevice> ();
536 Ptr<LteUeRrc> ueRrc = ueDev->GetRrc ();
537 if (ueRrc->GetCellId () == m_cellId)
540 &LteUeRrcSapProvider::RecvSystemInformationBlockType1,
541 ueRrc->GetLteUeRrcSapProvider (),
550 LteEnbRrcProtocolReal::DoSendSystemInformation (LteRrcSap::SystemInformation msg)
558 int nDevs = node->GetNDevices ();
559 for (
int j = 0; j < nDevs; ++j)
561 Ptr<LteUeNetDevice> ueDev = node->GetDevice (j)->GetObject <LteUeNetDevice> ();
564 Ptr<LteUeRrc> ueRrc = ueDev->GetRrc ();
565 NS_LOG_LOGIC (
"considering UE IMSI " << ueDev->GetImsi () <<
" that has cellId " << ueRrc->GetCellId ());
566 if (ueRrc->GetCellId () == m_cellId)
568 NS_LOG_LOGIC (
"sending SI to IMSI " << ueDev->GetImsi ());
569 ueRrc->GetLteUeRrcSapProvider ()->RecvSystemInformation (msg);
571 &LteUeRrcSapProvider::RecvSystemInformation,
572 ueRrc->GetLteUeRrcSapProvider (),
581 LteEnbRrcProtocolReal::DoSendRrcConnectionSetup (uint16_t rnti, LteRrcSap::RrcConnectionSetup msg)
583 Ptr<Packet> packet = Create<Packet> ();
585 RrcConnectionSetupHeader rrcConnectionSetupHeader;
586 rrcConnectionSetupHeader.SetMessage (msg);
588 packet->AddHeader (rrcConnectionSetupHeader);
590 LteRlcSapProvider::TransmitPdcpPduParameters transmitPdcpPduParameters;
591 transmitPdcpPduParameters.pdcpPdu = packet;
592 transmitPdcpPduParameters.rnti = rnti;
593 transmitPdcpPduParameters.lcid = 0;
595 if (m_setupUeParametersMap.find (rnti) == m_setupUeParametersMap.end () )
597 std::cout <<
"RNTI not found in Enb setup parameters Map!" << std::endl;
601 m_setupUeParametersMap[rnti].srb0SapProvider->TransmitPdcpPdu (transmitPdcpPduParameters);
606 LteEnbRrcProtocolReal::DoSendRrcConnectionReject (uint16_t rnti, LteRrcSap::RrcConnectionReject msg)
608 Ptr<Packet> packet = Create<Packet> ();
610 RrcConnectionRejectHeader rrcConnectionRejectHeader;
611 rrcConnectionRejectHeader.SetMessage (msg);
613 packet->AddHeader (rrcConnectionRejectHeader);
615 LteRlcSapProvider::TransmitPdcpPduParameters transmitPdcpPduParameters;
616 transmitPdcpPduParameters.pdcpPdu = packet;
617 transmitPdcpPduParameters.rnti = rnti;
618 transmitPdcpPduParameters.lcid = 0;
620 m_setupUeParametersMap[rnti].srb0SapProvider->TransmitPdcpPdu (transmitPdcpPduParameters);
624 LteEnbRrcProtocolReal::DoSendRrcConnectionReconfiguration (uint16_t rnti, LteRrcSap::RrcConnectionReconfiguration msg)
626 Ptr<Packet> packet = Create<Packet> ();
628 RrcConnectionReconfigurationHeader rrcConnectionReconfigurationHeader;
629 rrcConnectionReconfigurationHeader.SetMessage (msg);
631 packet->AddHeader (rrcConnectionReconfigurationHeader);
633 LtePdcpSapProvider::TransmitPdcpSduParameters transmitPdcpSduParameters;
634 transmitPdcpSduParameters.pdcpSdu = packet;
635 transmitPdcpSduParameters.rnti = rnti;
636 transmitPdcpSduParameters.lcid = 1;
638 m_setupUeParametersMap[rnti].srb1SapProvider->TransmitPdcpSdu (transmitPdcpSduParameters);
642 LteEnbRrcProtocolReal::DoSendRrcConnectionReestablishment (uint16_t rnti, LteRrcSap::RrcConnectionReestablishment msg)
644 Ptr<Packet> packet = Create<Packet> ();
646 RrcConnectionReestablishmentHeader rrcConnectionReestablishmentHeader;
647 rrcConnectionReestablishmentHeader.SetMessage (msg);
649 packet->AddHeader (rrcConnectionReestablishmentHeader);
651 LteRlcSapProvider::TransmitPdcpPduParameters transmitPdcpPduParameters;
652 transmitPdcpPduParameters.pdcpPdu = packet;
653 transmitPdcpPduParameters.rnti = rnti;
654 transmitPdcpPduParameters.lcid = 0;
656 m_setupUeParametersMap[rnti].srb0SapProvider->TransmitPdcpPdu (transmitPdcpPduParameters);
660 LteEnbRrcProtocolReal::DoSendRrcConnectionReestablishmentReject (uint16_t rnti, LteRrcSap::RrcConnectionReestablishmentReject msg)
662 Ptr<Packet> packet = Create<Packet> ();
664 RrcConnectionReestablishmentRejectHeader rrcConnectionReestablishmentRejectHeader;
665 rrcConnectionReestablishmentRejectHeader.SetMessage (msg);
667 packet->AddHeader (rrcConnectionReestablishmentRejectHeader);
669 LteRlcSapProvider::TransmitPdcpPduParameters transmitPdcpPduParameters;
670 transmitPdcpPduParameters.pdcpPdu = packet;
671 transmitPdcpPduParameters.rnti = rnti;
672 transmitPdcpPduParameters.lcid = 0;
674 m_setupUeParametersMap[rnti].srb0SapProvider->TransmitPdcpPdu (transmitPdcpPduParameters);
678 LteEnbRrcProtocolReal::DoSendRrcConnectionRelease (uint16_t rnti, LteRrcSap::RrcConnectionRelease msg)
680 Ptr<Packet> packet = Create<Packet> ();
682 RrcConnectionReleaseHeader rrcConnectionReleaseHeader;
683 rrcConnectionReleaseHeader.SetMessage (msg);
685 packet->AddHeader (rrcConnectionReleaseHeader);
687 LtePdcpSapProvider::TransmitPdcpSduParameters transmitPdcpSduParameters;
688 transmitPdcpSduParameters.pdcpSdu = packet;
689 transmitPdcpSduParameters.rnti = rnti;
690 transmitPdcpSduParameters.lcid = 1;
692 m_setupUeParametersMap[rnti].srb1SapProvider->TransmitPdcpSdu (transmitPdcpSduParameters);
696 LteEnbRrcProtocolReal::DoReceivePdcpPdu (uint16_t rnti, Ptr<Packet> p)
699 RrcUlCcchMessage rrcUlCcchMessage;
700 p->PeekHeader (rrcUlCcchMessage);
703 RrcConnectionReestablishmentRequestHeader rrcConnectionReestablishmentRequestHeader;
704 RrcConnectionRequestHeader rrcConnectionRequestHeader;
707 switch ( rrcUlCcchMessage.GetMessageType () )
710 p->RemoveHeader (rrcConnectionReestablishmentRequestHeader);
711 LteRrcSap::RrcConnectionReestablishmentRequest rrcConnectionReestablishmentRequestMsg;
712 rrcConnectionReestablishmentRequestMsg = rrcConnectionReestablishmentRequestHeader.GetMessage ();
713 m_enbRrcSapProvider->RecvRrcConnectionReestablishmentRequest (rnti,rrcConnectionReestablishmentRequestMsg);
716 p->RemoveHeader (rrcConnectionRequestHeader);
717 LteRrcSap::RrcConnectionRequest rrcConnectionRequestMsg;
718 rrcConnectionRequestMsg = rrcConnectionRequestHeader.GetMessage ();
719 m_enbRrcSapProvider->RecvRrcConnectionRequest (rnti,rrcConnectionRequestMsg);
725 LteEnbRrcProtocolReal::DoReceivePdcpSdu (LtePdcpSapUser::ReceivePdcpSduParameters params)
728 RrcUlDcchMessage rrcUlDcchMessage;
729 params.pdcpSdu->PeekHeader (rrcUlDcchMessage);
732 MeasurementReportHeader measurementReportHeader;
733 RrcConnectionReconfigurationCompleteHeader rrcConnectionReconfigurationCompleteHeader;
734 RrcConnectionReestablishmentCompleteHeader rrcConnectionReestablishmentCompleteHeader;
735 RrcConnectionSetupCompleteHeader rrcConnectionSetupCompleteHeader;
738 LteRrcSap::MeasurementReport measurementReportMsg;
739 LteRrcSap::RrcConnectionReconfigurationCompleted rrcConnectionReconfigurationCompleteMsg;
740 LteRrcSap::RrcConnectionReestablishmentComplete rrcConnectionReestablishmentCompleteMsg;
741 LteRrcSap::RrcConnectionSetupCompleted rrcConnectionSetupCompletedMsg;
744 switch ( rrcUlDcchMessage.GetMessageType () )
747 params.pdcpSdu->RemoveHeader (measurementReportHeader);
748 measurementReportMsg = measurementReportHeader.GetMessage ();
749 m_enbRrcSapProvider->RecvMeasurementReport (params.rnti,measurementReportMsg);
752 params.pdcpSdu->RemoveHeader (rrcConnectionReconfigurationCompleteHeader);
753 rrcConnectionReconfigurationCompleteMsg = rrcConnectionReconfigurationCompleteHeader.GetMessage ();
754 m_enbRrcSapProvider->RecvRrcConnectionReconfigurationCompleted (params.rnti,rrcConnectionReconfigurationCompleteMsg);
757 params.pdcpSdu->RemoveHeader (rrcConnectionReestablishmentCompleteHeader);
758 rrcConnectionReestablishmentCompleteMsg = rrcConnectionReestablishmentCompleteHeader.GetMessage ();
759 m_enbRrcSapProvider->RecvRrcConnectionReestablishmentComplete (params.rnti,rrcConnectionReestablishmentCompleteMsg);
762 params.pdcpSdu->RemoveHeader (rrcConnectionSetupCompleteHeader);
763 rrcConnectionSetupCompletedMsg = rrcConnectionSetupCompleteHeader.GetMessage ();
764 m_enbRrcSapProvider->RecvRrcConnectionSetupCompleted (params.rnti, rrcConnectionSetupCompletedMsg);
770 LteEnbRrcProtocolReal::DoEncodeHandoverPreparationInformation (LteRrcSap::HandoverPreparationInfo msg)
772 HandoverPreparationInfoHeader h;
775 Ptr<Packet> p = Create<Packet> ();
780 LteRrcSap::HandoverPreparationInfo
781 LteEnbRrcProtocolReal::DoDecodeHandoverPreparationInformation (Ptr<Packet> p)
783 HandoverPreparationInfoHeader h;
785 LteRrcSap::HandoverPreparationInfo msg = h.GetMessage ();
790 LteEnbRrcProtocolReal::DoEncodeHandoverCommand (LteRrcSap::RrcConnectionReconfiguration msg)
792 RrcConnectionReconfigurationHeader h;
794 Ptr<Packet> p = Create<Packet> ();
799 LteRrcSap::RrcConnectionReconfiguration
800 LteEnbRrcProtocolReal::DoDecodeHandoverCommand (Ptr<Packet> p)
802 RrcConnectionReconfigurationHeader h;
804 LteRrcSap::RrcConnectionReconfiguration msg = h.GetMessage ();
810 RealProtocolRlcSapUser::RealProtocolRlcSapUser (LteEnbRrcProtocolReal* pdcp, uint16_t rnti)
816 RealProtocolRlcSapUser::RealProtocolRlcSapUser ()
823 m_pdcp->DoReceivePdcpPdu (m_rnti, p);
virtual void DoDispose(void)
virtual void ReceivePdcpPdu(Ptr< Packet > p)
#define NS_LOG_FUNCTION(parameters)
virtual void DoDispose(void)
#define NS_ASSERT(condition)
#define NS_LOG_COMPONENT_DEFINE(name)
static EventId Schedule(Time const &time, MEM mem_ptr, OBJ obj)
virtual void TransmitPdcpPdu(TransmitPdcpPduParameters params)=0
static Iterator End(void)
#define NS_LOG_LOGIC(msg)
virtual void TransmitPdcpSdu(TransmitPdcpSduParameters params)=0
#define NS_ASSERT_MSG(condition, message)
static Iterator Begin(void)
Time MilliSeconds(uint64_t ms)
create ns3::Time instances in units of milliseconds.
a base class which provides memory management and object aggregation
a unique identifier for an interface.
TypeId SetParent(TypeId tid)