A Discrete-Event Network Simulator
API
lte-enb-rrc.cc
Go to the documentation of this file.
1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
4  * Copyright (c) 2018 Fraunhofer ESK : RLF extensions
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation;
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18  *
19  * Authors: Nicola Baldo <nbaldo@cttc.es>
20  * Marco Miozzo <mmiozzo@cttc.es>
21  * Manuel Requena <manuel.requena@cttc.es>
22  * Modified by: Danilo Abrignani <danilo.abrignani@unibo.it> (Carrier Aggregation - GSoC 2015),
23  * Biljana Bojovic <biljana.bojovic@cttc.es> (Carrier Aggregation)
24  * Vignesh Babu <ns3-dev@esk.fraunhofer.de> (RLF extensions)
25  */
26 
27 #include "lte-enb-rrc.h"
28 
29 #include <ns3/fatal-error.h>
30 #include <ns3/log.h>
31 #include <ns3/abort.h>
32 
33 #include <ns3/pointer.h>
34 #include <ns3/object-map.h>
35 #include <ns3/object-factory.h>
36 #include <ns3/simulator.h>
37 
38 #include <ns3/lte-radio-bearer-info.h>
39 #include <ns3/eps-bearer-tag.h>
40 #include <ns3/packet.h>
41 
42 #include <ns3/lte-rlc.h>
43 #include <ns3/lte-rlc-tm.h>
44 #include <ns3/lte-rlc-um.h>
45 #include <ns3/lte-rlc-am.h>
46 #include <ns3/lte-pdcp.h>
47 
48 
49 
50 
51 namespace ns3 {
52 
53 NS_LOG_COMPONENT_DEFINE ("LteEnbRrc");
54 
56 // CMAC SAP forwarder
58 
63 {
64 public:
71  EnbRrcMemberLteEnbCmacSapUser (LteEnbRrc* rrc, uint8_t componentCarrierId);
72 
73  virtual uint16_t AllocateTemporaryCellRnti ();
74  virtual void NotifyLcConfigResult (uint16_t rnti, uint8_t lcid, bool success);
75  virtual void RrcConfigurationUpdateInd (UeConfig params);
76  virtual bool IsRandomAccessCompleted (uint16_t rnti);
77 
78 private:
81 };
82 
84  : m_rrc (rrc)
85  , m_componentCarrierId {componentCarrierId}
86 {
87 }
88 
89 uint16_t
91 {
93 }
94 
95 void
96 EnbRrcMemberLteEnbCmacSapUser::NotifyLcConfigResult (uint16_t rnti, uint8_t lcid, bool success)
97 {
98  m_rrc->DoNotifyLcConfigResult (rnti, lcid, success);
99 }
100 
101 void
103 {
105 }
106 
107 bool
109 {
110  return m_rrc->IsRandomAccessCompleted (rnti);
111 }
112 
113 
114 
116 // UeManager
118 
119 
121 static const std::string g_ueManagerStateName[UeManager::NUM_STATES] =
122 {
123  "INITIAL_RANDOM_ACCESS",
124  "CONNECTION_SETUP",
125  "CONNECTION_REJECTED",
126  "ATTACH_REQUEST",
127  "CONNECTED_NORMALLY",
128  "CONNECTION_RECONFIGURATION",
129  "CONNECTION_REESTABLISHMENT",
130  "HANDOVER_PREPARATION",
131  "HANDOVER_JOINING",
132  "HANDOVER_PATH_SWITCH",
133  "HANDOVER_LEAVING",
134 };
135 
140 static const std::string & ToString (UeManager::State s)
141 {
142  return g_ueManagerStateName[s];
143 }
144 
145 
146 NS_OBJECT_ENSURE_REGISTERED (UeManager);
147 
148 
150 {
151  NS_FATAL_ERROR ("this constructor is not expected to be used");
152 }
153 
154 
155 UeManager::UeManager (Ptr<LteEnbRrc> rrc, uint16_t rnti, State s, uint8_t componentCarrierId)
156  : m_lastAllocatedDrbid (0),
157  m_rnti (rnti),
158  m_imsi (0),
159  m_componentCarrierId (componentCarrierId),
160  m_lastRrcTransactionIdentifier (0),
161  m_rrc (rrc),
162  m_state (s),
163  m_pendingRrcConnectionReconfiguration (false),
164  m_sourceX2apId (0),
165  m_sourceCellId (0),
166  m_needPhyMacConfiguration (false),
167  m_caSupportConfigured (false),
168  m_pendingStartDataRadioBearers (false)
169 {
170  NS_LOG_FUNCTION (this);
171 }
172 
173 void
175 {
176  NS_LOG_FUNCTION (this);
178 
180  m_physicalConfigDedicated.antennaInfo.transmissionMode = m_rrc->m_defaultTransmissionMode;
187 
188 
189  for (uint8_t i = 0; i < m_rrc->m_numberOfComponentCarriers; i++)
190  {
191  m_rrc->m_cmacSapProvider.at (i)->AddUe (m_rnti);
192  m_rrc->m_cphySapProvider.at (i)->AddUe (m_rnti);
193  }
194 
195  // setup the eNB side of SRB0
196  {
197  uint8_t lcid = 0;
198 
199  Ptr<LteRlc> rlc = CreateObject<LteRlcTm> ()->GetObject<LteRlc> ();
200  rlc->SetLteMacSapProvider (m_rrc->m_macSapProvider);
201  rlc->SetRnti (m_rnti);
202  rlc->SetLcId (lcid);
203 
204  m_srb0 = CreateObject<LteSignalingRadioBearerInfo> ();
205  m_srb0->m_rlc = rlc;
206  m_srb0->m_srbIdentity = 0;
207  // no need to store logicalChannelConfig as SRB0 is pre-configured
208 
210  lcinfo.rnti = m_rnti;
211  lcinfo.lcId = lcid;
212  // Initialise the rest of lcinfo structure even if CCCH (LCID 0) is pre-configured, and only m_rnti and lcid will be used from passed lcinfo structure.
213  // See FF LTE MAC Scheduler Iinterface Specification v1.11, 4.3.4 logicalChannelConfigListElement
214  lcinfo.lcGroup = 0;
215  lcinfo.qci = 0;
216  lcinfo.isGbr = false;
217  lcinfo.mbrUl = 0;
218  lcinfo.mbrDl = 0;
219  lcinfo.gbrUl = 0;
220  lcinfo.gbrDl = 0;
221 
222  // MacSapUserForRlc in the ComponentCarrierManager MacSapUser
223  LteMacSapUser* lteMacSapUser = m_rrc->m_ccmRrcSapProvider->ConfigureSignalBearer(lcinfo, rlc->GetLteMacSapUser ());
224  // Signal Channel are only on Primary Carrier
225  m_rrc->m_cmacSapProvider.at (m_componentCarrierId)->AddLc (lcinfo, lteMacSapUser);
226  m_rrc->m_ccmRrcSapProvider->AddLc (lcinfo, lteMacSapUser);
227  }
228 
229  // setup the eNB side of SRB1; the UE side will be set up upon RRC connection establishment
230  {
231  uint8_t lcid = 1;
232 
233  Ptr<LteRlc> rlc = CreateObject<LteRlcAm> ()->GetObject<LteRlc> ();
234  rlc->SetLteMacSapProvider (m_rrc->m_macSapProvider);
235  rlc->SetRnti (m_rnti);
236  rlc->SetLcId (lcid);
237 
238  Ptr<LtePdcp> pdcp = CreateObject<LtePdcp> ();
239  pdcp->SetRnti (m_rnti);
240  pdcp->SetLcId (lcid);
241  pdcp->SetLtePdcpSapUser (m_drbPdcpSapUser);
242  pdcp->SetLteRlcSapProvider (rlc->GetLteRlcSapProvider ());
243  rlc->SetLteRlcSapUser (pdcp->GetLteRlcSapUser ());
244 
245  m_srb1 = CreateObject<LteSignalingRadioBearerInfo> ();
246  m_srb1->m_rlc = rlc;
247  m_srb1->m_pdcp = pdcp;
248  m_srb1->m_srbIdentity = 1;
249  m_srb1->m_logicalChannelConfig.priority = 1;
250  m_srb1->m_logicalChannelConfig.prioritizedBitRateKbps = 100;
251  m_srb1->m_logicalChannelConfig.bucketSizeDurationMs = 100;
252  m_srb1->m_logicalChannelConfig.logicalChannelGroup = 0;
253 
255  lcinfo.rnti = m_rnti;
256  lcinfo.lcId = lcid;
257  lcinfo.lcGroup = 0; // all SRBs always mapped to LCG 0
258  lcinfo.qci = EpsBearer::GBR_CONV_VOICE; // not sure why the FF API requires a CQI even for SRBs...
259  lcinfo.isGbr = true;
260  lcinfo.mbrUl = 1e6;
261  lcinfo.mbrDl = 1e6;
262  lcinfo.gbrUl = 1e4;
263  lcinfo.gbrDl = 1e4;
264  // MacSapUserForRlc in the ComponentCarrierManager MacSapUser
265  LteMacSapUser* MacSapUserForRlc = m_rrc->m_ccmRrcSapProvider->ConfigureSignalBearer(lcinfo, rlc->GetLteMacSapUser ());
266  // Signal Channel are only on Primary Carrier
267  m_rrc->m_cmacSapProvider.at (m_componentCarrierId)->AddLc (lcinfo, MacSapUserForRlc);
268  m_rrc->m_ccmRrcSapProvider->AddLc (lcinfo, MacSapUserForRlc);
269  }
270 
272  ueParams.srb0SapProvider = m_srb0->m_rlc->GetLteRlcSapProvider ();
273  ueParams.srb1SapProvider = m_srb1->m_pdcp->GetLtePdcpSapProvider ();
274  m_rrc->m_rrcSapUser->SetupUe (m_rnti, ueParams);
275 
276  // configure MAC (and scheduler)
278  req.m_rnti = m_rnti;
280 
281  // configure PHY
282  for (uint16_t i = 0; i < m_rrc->m_numberOfComponentCarriers; i++)
283  {
284  m_rrc->m_cmacSapProvider.at (i)->UeUpdateConfigurationReq (req);
285  m_rrc->m_cphySapProvider.at (i)->SetTransmissionMode (m_rnti, m_physicalConfigDedicated.antennaInfo.transmissionMode);
286  m_rrc->m_cphySapProvider.at (i)->SetSrsConfigurationIndex (m_rnti, m_physicalConfigDedicated.soundingRsUlConfigDedicated.srsConfigIndex);
287  }
288  // schedule this UeManager instance to be deleted if the UE does not give any sign of life within a reasonable time
289  Time maxConnectionDelay;
290  switch (m_state)
291  {
293  m_connectionRequestTimeout = Simulator::Schedule (m_rrc->m_connectionRequestTimeoutDuration,
295  m_rrc, m_rnti);
296  break;
297 
298  case HANDOVER_JOINING:
299  m_handoverJoiningTimeout = Simulator::Schedule (m_rrc->m_handoverJoiningTimeoutDuration,
301  m_rrc, m_rnti);
302  break;
303 
304  default:
305  NS_FATAL_ERROR ("unexpected state " << ToString (m_state));
306  break;
307  }
308  m_caSupportConfigured = false;
309 }
310 
311 
313 {
314 }
315 
316 void
318 {
319  delete m_drbPdcpSapUser;
320  // delete eventual X2-U TEIDs
321  for (std::map <uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator it = m_drbMap.begin ();
322  it != m_drbMap.end ();
323  ++it)
324  {
325  m_rrc->m_x2uTeidInfoMap.erase (it->second->m_gtpTeid);
326  }
327 
328 }
329 
331 {
332  static TypeId tid = TypeId ("ns3::UeManager")
333  .SetParent<Object> ()
334  .AddConstructor<UeManager> ()
335  .AddAttribute ("DataRadioBearerMap", "List of UE DataRadioBearerInfo by DRBID.",
336  ObjectMapValue (),
338  MakeObjectMapChecker<LteDataRadioBearerInfo> ())
339  .AddAttribute ("Srb0", "SignalingRadioBearerInfo for SRB0",
340  PointerValue (),
342  MakePointerChecker<LteSignalingRadioBearerInfo> ())
343  .AddAttribute ("Srb1", "SignalingRadioBearerInfo for SRB1",
344  PointerValue (),
346  MakePointerChecker<LteSignalingRadioBearerInfo> ())
347  .AddAttribute ("C-RNTI",
348  "Cell Radio Network Temporary Identifier",
349  TypeId::ATTR_GET, // read-only attribute
350  UintegerValue (0), // unused, read-only attribute
352  MakeUintegerChecker<uint16_t> ())
353  .AddTraceSource ("StateTransition",
354  "fired upon every UE state transition seen by the "
355  "UeManager at the eNB RRC",
357  "ns3::UeManager::StateTracedCallback")
358  .AddTraceSource ("DrbCreated",
359  "trace fired after DRB is created",
361  "ns3::UeManager::ImsiCidRntiLcIdTracedCallback")
362  ;
363  return tid;
364 }
365 
366 void
367 UeManager::SetSource (uint16_t sourceCellId, uint16_t sourceX2apId)
368 {
369  m_sourceX2apId = sourceX2apId;
370  m_sourceCellId = sourceCellId;
371 }
372 
373 void
374 UeManager::SetImsi (uint64_t imsi)
375 {
376  m_imsi = imsi;
377 }
378 
379 void
381 {
382  NS_LOG_FUNCTION (this << m_rnti);
383 
384  if (m_state == ATTACH_REQUEST)
385  {
387  }
388  else
389  {
390  NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
391  }
392 }
393 
394 void
395 UeManager::SetupDataRadioBearer (EpsBearer bearer, uint8_t bearerId, uint32_t gtpTeid, Ipv4Address transportLayerAddress)
396 {
397  NS_LOG_FUNCTION (this << (uint32_t) m_rnti);
398 
399  Ptr<LteDataRadioBearerInfo> drbInfo = CreateObject<LteDataRadioBearerInfo> ();
400  uint8_t drbid = AddDataRadioBearerInfo (drbInfo);
401  uint8_t lcid = Drbid2Lcid (drbid);
402  uint8_t bid = Drbid2Bid (drbid);
403  NS_ASSERT_MSG ( bearerId == 0 || bid == bearerId, "bearer ID mismatch (" << (uint32_t) bid << " != " << (uint32_t) bearerId << ", the assumption that ID are allocated in the same way by MME and RRC is not valid any more");
404  drbInfo->m_epsBearer = bearer;
405  drbInfo->m_epsBearerIdentity = bid;
406  drbInfo->m_drbIdentity = drbid;
407  drbInfo->m_logicalChannelIdentity = lcid;
408  drbInfo->m_gtpTeid = gtpTeid;
409  drbInfo->m_transportLayerAddress = transportLayerAddress;
410 
411  if (m_state == HANDOVER_JOINING)
412  {
413  // setup TEIDs for receiving data eventually forwarded over X2-U
414  LteEnbRrc::X2uTeidInfo x2uTeidInfo;
415  x2uTeidInfo.rnti = m_rnti;
416  x2uTeidInfo.drbid = drbid;
417  std::pair<std::map<uint32_t, LteEnbRrc::X2uTeidInfo>::iterator, bool>
418  ret = m_rrc->m_x2uTeidInfoMap.insert (std::pair<uint32_t, LteEnbRrc::X2uTeidInfo> (gtpTeid, x2uTeidInfo));
419  NS_ASSERT_MSG (ret.second == true, "overwriting a pre-existing entry in m_x2uTeidInfoMap");
420  }
421 
422  TypeId rlcTypeId = m_rrc->GetRlcType (bearer);
423 
424  ObjectFactory rlcObjectFactory;
425  rlcObjectFactory.SetTypeId (rlcTypeId);
426  Ptr<LteRlc> rlc = rlcObjectFactory.Create ()->GetObject<LteRlc> ();
427  rlc->SetLteMacSapProvider (m_rrc->m_macSapProvider);
428  rlc->SetRnti (m_rnti);
429 
430  drbInfo->m_rlc = rlc;
431 
432  rlc->SetLcId (lcid);
433 
434  // we need PDCP only for real RLC, i.e., RLC/UM or RLC/AM
435  // if we are using RLC/SM we don't care of anything above RLC
436  if (rlcTypeId != LteRlcSm::GetTypeId ())
437  {
438  Ptr<LtePdcp> pdcp = CreateObject<LtePdcp> ();
439  pdcp->SetRnti (m_rnti);
440  pdcp->SetLcId (lcid);
441  pdcp->SetLtePdcpSapUser (m_drbPdcpSapUser);
442  pdcp->SetLteRlcSapProvider (rlc->GetLteRlcSapProvider ());
443  rlc->SetLteRlcSapUser (pdcp->GetLteRlcSapUser ());
444  drbInfo->m_pdcp = pdcp;
445  }
446 
447  m_drbCreatedTrace (m_imsi, m_rrc->ComponentCarrierToCellId (m_componentCarrierId), m_rnti, lcid);
448 
449  std::vector<LteCcmRrcSapProvider::LcsConfig> lcOnCcMapping = m_rrc->m_ccmRrcSapProvider->SetupDataRadioBearer (bearer, bearerId, m_rnti, lcid, m_rrc->GetLogicalChannelGroup (bearer), rlc->GetLteMacSapUser ());
450  // LteEnbCmacSapProvider::LcInfo lcinfo;
451  // lcinfo.rnti = m_rnti;
452  // lcinfo.lcId = lcid;
453  // lcinfo.lcGroup = m_rrc->GetLogicalChannelGroup (bearer);
454  // lcinfo.qci = bearer.qci;
455  // lcinfo.isGbr = bearer.IsGbr ();
456  // lcinfo.mbrUl = bearer.gbrQosInfo.mbrUl;
457  // lcinfo.mbrDl = bearer.gbrQosInfo.mbrDl;
458  // lcinfo.gbrUl = bearer.gbrQosInfo.gbrUl;
459  // lcinfo.gbrDl = bearer.gbrQosInfo.gbrDl;
460  // use a for cycle to send the AddLc to the appropriate Mac Sap
461  // if the sap is not initialized the appropriated method has to be called
462  std::vector<LteCcmRrcSapProvider::LcsConfig>::iterator itLcOnCcMapping = lcOnCcMapping.begin ();
463  NS_ASSERT_MSG (itLcOnCcMapping != lcOnCcMapping.end (), "Problem");
464  for (itLcOnCcMapping = lcOnCcMapping.begin (); itLcOnCcMapping != lcOnCcMapping.end (); ++itLcOnCcMapping)
465  {
466  NS_LOG_DEBUG (this << " RNTI " << itLcOnCcMapping->lc.rnti << "Lcid " << (uint16_t) itLcOnCcMapping->lc.lcId << " lcGroup " << (uint16_t) itLcOnCcMapping->lc.lcGroup << " ComponentCarrierId " << itLcOnCcMapping->componentCarrierId);
467  uint8_t index = itLcOnCcMapping->componentCarrierId;
468  LteEnbCmacSapProvider::LcInfo lcinfo = itLcOnCcMapping->lc;
469  LteMacSapUser *msu = itLcOnCcMapping->msu;
470  m_rrc->m_cmacSapProvider.at (index)->AddLc (lcinfo, msu);
471  m_rrc->m_ccmRrcSapProvider->AddLc (lcinfo, msu);
472  }
473 
474  if (rlcTypeId == LteRlcAm::GetTypeId ())
475  {
476  drbInfo->m_rlcConfig.choice = LteRrcSap::RlcConfig::AM;
477  }
478  else
479  {
480  drbInfo->m_rlcConfig.choice = LteRrcSap::RlcConfig::UM_BI_DIRECTIONAL;
481  }
482 
483  drbInfo->m_logicalChannelIdentity = lcid;
484  drbInfo->m_logicalChannelConfig.priority = m_rrc->GetLogicalChannelPriority (bearer);
485  drbInfo->m_logicalChannelConfig.logicalChannelGroup = m_rrc->GetLogicalChannelGroup (bearer);
486  if (bearer.IsGbr ())
487  {
488  drbInfo->m_logicalChannelConfig.prioritizedBitRateKbps = bearer.gbrQosInfo.gbrUl;
489  }
490  else
491  {
492  drbInfo->m_logicalChannelConfig.prioritizedBitRateKbps = 0;
493  }
494  drbInfo->m_logicalChannelConfig.bucketSizeDurationMs = 1000;
495 
497 }
498 
499 void
501 {
502  NS_LOG_FUNCTION (this << (uint32_t) m_rnti);
503  for (std::map <uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator it = m_drbMap.begin ();
504  it != m_drbMap.end ();
505  ++it)
506  {
507  m_drbsToBeStarted.push_back (it->first);
508  }
509 }
510 
511 void
513 {
514  NS_LOG_FUNCTION (this << (uint32_t) m_rnti);
515  for (std::list <uint8_t>::iterator drbIdIt = m_drbsToBeStarted.begin ();
516  drbIdIt != m_drbsToBeStarted.end ();
517  ++drbIdIt)
518  {
519  std::map <uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator drbIt = m_drbMap.find (*drbIdIt);
520  NS_ASSERT (drbIt != m_drbMap.end ());
521  drbIt->second->m_rlc->Initialize ();
522  if (drbIt->second->m_pdcp)
523  {
524  drbIt->second->m_pdcp->Initialize ();
525  }
526  }
527  m_drbsToBeStarted.clear ();
528 }
529 
530 
531 void
533 {
534  NS_LOG_FUNCTION (this << (uint32_t) m_rnti << (uint32_t) drbid);
535  uint8_t lcid = Drbid2Lcid (drbid);
536  std::map <uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator it = m_drbMap.find (drbid);
537  NS_ASSERT_MSG (it != m_drbMap.end (), "request to remove radio bearer with unknown drbid " << drbid);
538 
539  // first delete eventual X2-U TEIDs
540  m_rrc->m_x2uTeidInfoMap.erase (it->second->m_gtpTeid);
541 
542  m_drbMap.erase (it);
543  std::vector<uint8_t> ccToRelease = m_rrc->m_ccmRrcSapProvider->ReleaseDataRadioBearer (m_rnti, lcid);
544  std::vector<uint8_t>::iterator itCcToRelease = ccToRelease.begin ();
545  NS_ASSERT_MSG (itCcToRelease != ccToRelease.end (), "request to remove radio bearer with unknown drbid (ComponentCarrierManager)");
546  for (itCcToRelease = ccToRelease.begin (); itCcToRelease != ccToRelease.end (); ++itCcToRelease)
547  {
548  m_rrc->m_cmacSapProvider.at (*itCcToRelease)->ReleaseLc (m_rnti, lcid);
549  }
551  rrcd.havePhysicalConfigDedicated = false;
552  rrcd.drbToReleaseList.push_back (drbid);
553  //populating RadioResourceConfigDedicated information element as per 3GPP TS 36.331 version 9.2.0
554  rrcd.havePhysicalConfigDedicated = true;
556 
557  //populating RRCConnectionReconfiguration message as per 3GPP TS 36.331 version 9.2.0 Release 9
559  msg.haveMeasConfig = false;
560  msg.haveMobilityControlInfo = false;
561  msg.radioResourceConfigDedicated = rrcd;
563  // ToDo: Resend in any case this configuration
564  // needs to be initialized
565  msg.haveNonCriticalExtension = false;
566  //RRC Connection Reconfiguration towards UE
567  m_rrc->m_rrcSapUser->SendRrcConnectionReconfiguration (m_rnti, msg);
568 }
569 
570 void
571 LteEnbRrc::DoSendReleaseDataRadioBearer (uint64_t imsi, uint16_t rnti, uint8_t bearerId)
572 {
573  NS_LOG_FUNCTION (this << imsi << rnti << (uint16_t) bearerId);
574  Ptr<UeManager> ueManager = GetUeManager (rnti);
575  // Bearer de-activation towards UE
576  ueManager->ReleaseDataRadioBearer (bearerId);
577  // Bearer de-activation indication towards epc-enb application
578  m_s1SapProvider->DoSendReleaseIndication (imsi,rnti,bearerId);
579 }
580 
581 void
583 {
584  NS_LOG_FUNCTION (this << m_rnti);
585 
586  //release the bearer info for the UE at SGW/PGW
587  if (m_rrc->m_s1SapProvider != 0) //if EPC is enabled
588  {
589  for (const auto &it:m_drbMap)
590  {
591  NS_LOG_DEBUG ("Sending release of bearer id : " << (uint16_t) (it.first)
592  << "LCID : "
593  << (uint16_t) (it.second->m_logicalChannelIdentity));
594  // Bearer de-activation indication towards epc-enb application
595  m_rrc->m_s1SapProvider->DoSendReleaseIndication (GetImsi (), rnti, it.first);
596  }
597  }
598 }
599 
600 void
602 {
603  NS_LOG_FUNCTION (this);
604  switch (m_state)
605  {
607  case CONNECTION_SETUP:
608  case ATTACH_REQUEST:
612  case HANDOVER_JOINING:
613  case HANDOVER_LEAVING:
614  // a previous reconfiguration still ongoing, we need to wait for it to be finished
616  break;
617 
618  case CONNECTED_NORMALLY:
619  {
622  m_rrc->m_rrcSapUser->SendRrcConnectionReconfiguration (m_rnti, msg);
625  }
626  break;
627 
628  default:
629  NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
630  break;
631  }
632 }
633 
634 void
635 UeManager::PrepareHandover (uint16_t cellId)
636 {
637  NS_LOG_FUNCTION (this << cellId);
638  switch (m_state)
639  {
640  case CONNECTED_NORMALLY:
641  {
642  m_targetCellId = cellId;
644  params.oldEnbUeX2apId = m_rnti;
646  params.sourceCellId = m_rrc->ComponentCarrierToCellId (m_componentCarrierId);
647  params.targetCellId = cellId;
648  params.mmeUeS1apId = m_imsi;
649  params.ueAggregateMaxBitRateDownlink = 200 * 1000;
650  params.ueAggregateMaxBitRateUplink = 100 * 1000;
651  params.bearers = GetErabList ();
652 
655  hpi.asConfig.sourceDlCarrierFreq = m_rrc->m_dlEarfcn;
656  hpi.asConfig.sourceMeasConfig = m_rrc->m_ueMeasConfig;
660  hpi.asConfig.sourceSystemInformationBlockType1.cellAccessRelatedInfo.plmnIdentityInfo.plmnIdentity = m_rrc->m_sib1.at (m_componentCarrierId).cellAccessRelatedInfo.plmnIdentityInfo.plmnIdentity;
662  hpi.asConfig.sourceSystemInformationBlockType1.cellAccessRelatedInfo.csgIndication = m_rrc->m_sib1.at (m_componentCarrierId).cellAccessRelatedInfo.csgIndication;
663  hpi.asConfig.sourceSystemInformationBlockType1.cellAccessRelatedInfo.csgIdentity = m_rrc->m_sib1.at (m_componentCarrierId).cellAccessRelatedInfo.csgIdentity;
664  LteEnbCmacSapProvider::RachConfig rc = m_rrc->m_cmacSapProvider.at (m_componentCarrierId)->GetRachConfig ();
671  params.rrcContext = m_rrc->m_rrcSapUser->EncodeHandoverPreparationInformation (hpi);
672 
673  NS_LOG_LOGIC ("oldEnbUeX2apId = " << params.oldEnbUeX2apId);
674  NS_LOG_LOGIC ("sourceCellId = " << params.sourceCellId);
675  NS_LOG_LOGIC ("targetCellId = " << params.targetCellId);
676  NS_LOG_LOGIC ("mmeUeS1apId = " << params.mmeUeS1apId);
677  NS_LOG_LOGIC ("rrcContext = " << params.rrcContext);
678 
679  m_rrc->m_x2SapProvider->SendHandoverRequest (params);
681  }
682  break;
683 
684  default:
685  NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
686  break;
687  }
688 
689 }
690 
691 void
693 {
694  NS_LOG_FUNCTION (this);
695 
696  NS_ASSERT_MSG (params.notAdmittedBearers.empty (), "not admission of some bearers upon handover is not supported");
697  NS_ASSERT_MSG (params.admittedBearers.size () == m_drbMap.size (), "not enough bearers in admittedBearers");
698 
699  // note: the Handover command from the target eNB to the source eNB
700  // is expected to be sent transparently to the UE; however, here we
701  // decode the message and eventually re-encode it. This way we can
702  // support both a real RRC protocol implementation and an ideal one
703  // without actual RRC protocol encoding.
704 
705  Ptr<Packet> encodedHandoverCommand = params.rrcContext;
706  LteRrcSap::RrcConnectionReconfiguration handoverCommand = m_rrc->m_rrcSapUser->DecodeHandoverCommand (encodedHandoverCommand);
707  if (handoverCommand.haveNonCriticalExtension)
708  {
709  //Total number of component carriers = handoverCommand.nonCriticalExtension.sCellsToAddModList.size() + 1 (Primary carrier)
710  if (handoverCommand.nonCriticalExtension.sCellsToAddModList.size() + 1 != m_rrc->m_numberOfComponentCarriers)
711  {
712  //Currently handover is only possible if source and target eNBs have equal number of component carriers
713  NS_FATAL_ERROR ("The source and target eNBs have unequal number of component carriers. Target eNB CCs = "
714  << handoverCommand.nonCriticalExtension.sCellsToAddModList.size() + 1
715  << " Source eNB CCs = " << m_rrc->m_numberOfComponentCarriers);
716  }
717  }
718  m_rrc->m_rrcSapUser->SendRrcConnectionReconfiguration (m_rnti, handoverCommand);
720  m_handoverLeavingTimeout = Simulator::Schedule (m_rrc->m_handoverLeavingTimeoutDuration,
722  m_rrc, m_rnti);
723  NS_ASSERT (handoverCommand.haveMobilityControlInfo);
724  m_rrc->m_handoverStartTrace (m_imsi, m_rrc->ComponentCarrierToCellId (m_componentCarrierId), m_rnti, handoverCommand.mobilityControlInfo.targetPhysCellId);
725 
726  //Set the target cell ID and the RNTI so that handover cancel message can be sent if required
728  m_targetCellId = params.targetCellId;
729 
731  sst.oldEnbUeX2apId = params.oldEnbUeX2apId;
732  sst.newEnbUeX2apId = params.newEnbUeX2apId;
733  sst.sourceCellId = params.sourceCellId;
734  sst.targetCellId = params.targetCellId;
735  for ( std::map <uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator drbIt = m_drbMap.begin ();
736  drbIt != m_drbMap.end ();
737  ++drbIt)
738  {
739  // SN status transfer is only for AM RLC
740  if (0 != drbIt->second->m_rlc->GetObject<LteRlcAm> ())
741  {
742  LtePdcp::Status status = drbIt->second->m_pdcp->GetStatus ();
744  i.dlPdcpSn = status.txSn;
745  i.ulPdcpSn = status.rxSn;
746  sst.erabsSubjectToStatusTransferList.push_back (i);
747  }
748  }
749  m_rrc->m_x2SapProvider->SendSnStatusTransfer (sst);
750 }
751 
752 
755 {
756  NS_LOG_FUNCTION (this);
758 }
759 
762 {
763  NS_LOG_FUNCTION (this);
765 }
766 
767 void
769 {
770  NS_LOG_FUNCTION (this << p << (uint16_t) bid);
772  params.pdcpSdu = p;
773  params.rnti = m_rnti;
774  params.lcid = Bid2Lcid (bid);
775  uint8_t drbid = Bid2Drbid (bid);
776  // Transmit PDCP sdu only if DRB ID found in drbMap
777  std::map<uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator it = m_drbMap.find (drbid);
778  if (it != m_drbMap.end ())
779  {
781  if (bearerInfo != NULL)
782  {
783  LtePdcpSapProvider* pdcpSapProvider = bearerInfo->m_pdcp->GetLtePdcpSapProvider ();
784  pdcpSapProvider->TransmitPdcpSdu (params);
785  }
786  }
787 }
788 
789 void
791 {
792  NS_LOG_FUNCTION (this << p << (uint16_t) bid);
793  switch (m_state)
794  {
796  case CONNECTION_SETUP:
797  NS_LOG_WARN ("not connected, discarding packet");
798  return;
799  break;
800 
801  case CONNECTED_NORMALLY:
806  {
807  NS_LOG_LOGIC ("queueing data on PDCP for transmission over the air");
808  SendPacket (bid, p);
809  }
810  break;
811 
812  case HANDOVER_JOINING:
813  {
814  // Buffer data until RRC Connection Reconfiguration Complete message is received
815  NS_LOG_LOGIC ("buffering data");
816  m_packetBuffer.push_back (std::make_pair (bid, p));
817  }
818  break;
819 
820  case HANDOVER_LEAVING:
821  {
822  NS_LOG_LOGIC ("forwarding data to target eNB over X2-U");
823  uint8_t drbid = Bid2Drbid (bid);
824  EpcX2Sap::UeDataParams params;
825  params.sourceCellId = m_rrc->ComponentCarrierToCellId (m_componentCarrierId);
826  params.targetCellId = m_targetCellId;
827  params.gtpTeid = GetDataRadioBearerInfo (drbid)->m_gtpTeid;
828  params.ueData = p;
829  m_rrc->m_x2SapProvider->SendUeData (params);
830  }
831  break;
832 
833  default:
834  NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
835  break;
836  }
837 }
838 
839 std::vector<EpcX2Sap::ErabToBeSetupItem>
841 {
842  NS_LOG_FUNCTION (this);
843  std::vector<EpcX2Sap::ErabToBeSetupItem> ret;
844  for (std::map <uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator it = m_drbMap.begin ();
845  it != m_drbMap.end ();
846  ++it)
847  {
849  etbsi.erabId = it->second->m_epsBearerIdentity;
850  etbsi.erabLevelQosParameters = it->second->m_epsBearer;
851  etbsi.dlForwarding = false;
852  etbsi.transportLayerAddress = it->second->m_transportLayerAddress;
853  etbsi.gtpTeid = it->second->m_gtpTeid;
854  ret.push_back (etbsi);
855  }
856  return ret;
857 }
858 
859 void
861 {
862  NS_LOG_FUNCTION (this);
863  switch (m_state)
864  {
866  NS_LOG_INFO ("Send UE CONTEXT RELEASE from target eNB to source eNB");
867  EpcX2SapProvider::UeContextReleaseParams ueCtxReleaseParams;
868  ueCtxReleaseParams.oldEnbUeX2apId = m_sourceX2apId;
869  ueCtxReleaseParams.newEnbUeX2apId = m_rnti;
870  ueCtxReleaseParams.sourceCellId = m_sourceCellId;
871  ueCtxReleaseParams.targetCellId = m_targetCellId;
872  m_rrc->m_x2SapProvider->SendUeContextRelease (ueCtxReleaseParams);
874  m_rrc->m_handoverEndOkTrace (m_imsi, m_rrc->ComponentCarrierToCellId (m_componentCarrierId), m_rnti);
875  break;
876 
877  default:
878  NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
879  break;
880  }
881 }
882 
883 void
885 {
886  NS_LOG_FUNCTION (this << cellId);
887  switch (m_state)
888  {
890  NS_ASSERT (cellId == m_targetCellId);
891  NS_LOG_INFO ("target eNB sent HO preparation failure, aborting HO");
893  break;
894 
895  default:
896  NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
897  break;
898  }
899 }
900 
901 void
903 {
904  NS_LOG_FUNCTION (this);
905  for (std::vector<EpcX2Sap::ErabsSubjectToStatusTransferItem>::iterator erabIt
906  = params.erabsSubjectToStatusTransferList.begin ();
907  erabIt != params.erabsSubjectToStatusTransferList.end ();
908  ++erabIt)
909  {
910  // LtePdcp::Status status;
911  // status.txSn = erabIt->dlPdcpSn;
912  // status.rxSn = erabIt->ulPdcpSn;
913  // uint8_t drbId = Bid2Drbid (erabIt->erabId);
914  // std::map <uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator drbIt = m_drbMap.find (drbId);
915  // NS_ASSERT_MSG (drbIt != m_drbMap.end (), "could not find DRBID " << (uint32_t) drbId);
916  // drbIt->second->m_pdcp->SetStatus (status);
917  }
918 }
919 
920 void
922 {
923  NS_LOG_FUNCTION (this);
924  NS_ASSERT_MSG (m_state == HANDOVER_LEAVING, "method unexpected in state " << ToString (m_state));
926 }
927 
928 
929 // methods forwarded from RRC SAP
930 
931 void
933 {
934  NS_LOG_FUNCTION (this);
935  m_srb0->m_rlc->SetLteRlcSapUser (params.srb0SapUser);
936  m_srb1->m_pdcp->SetLtePdcpSapUser (params.srb1SapUser);
937 }
938 
939 void
941 {
942  NS_LOG_FUNCTION (this);
943  switch (m_state)
944  {
946  {
948 
949  if (m_rrc->m_admitRrcConnectionRequest == true)
950  {
951  m_imsi = msg.ueIdentity;
952 
953  // send RRC CONNECTION SETUP to UE
957  m_rrc->m_rrcSapUser->SendRrcConnectionSetup (m_rnti, msg2);
958 
961  m_rrc->m_connectionSetupTimeoutDuration,
964  }
965  else
966  {
967  NS_LOG_INFO ("rejecting connection request for RNTI " << m_rnti);
968 
969  // send RRC CONNECTION REJECT to UE
971  rejectMsg.waitTime = 3;
972  m_rrc->m_rrcSapUser->SendRrcConnectionReject (m_rnti, rejectMsg);
973 
975  m_rrc->m_connectionRejectedTimeoutDuration,
978  }
979  }
980  break;
981 
982  default:
983  NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
984  break;
985  }
986 }
987 
988 void
990 {
991  NS_LOG_FUNCTION (this);
992  switch (m_state)
993  {
994  case CONNECTION_SETUP:
996  if ( m_caSupportConfigured == false && m_rrc->m_numberOfComponentCarriers > 1)
997  {
998  m_pendingRrcConnectionReconfiguration = true; // Force Reconfiguration
1000  }
1001 
1002  if (m_rrc->m_s1SapProvider != 0)
1003  {
1004  m_rrc->m_s1SapProvider->InitialUeMessage (m_imsi, m_rnti);
1006  }
1007  else
1008  {
1010  }
1011  m_rrc->m_connectionEstablishedTrace (m_imsi, m_rrc->ComponentCarrierToCellId (m_componentCarrierId), m_rnti);
1012  break;
1013 
1014  default:
1015  NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
1016  break;
1017  }
1018 }
1019 
1020 void
1022 {
1023  NS_LOG_FUNCTION (this);
1024  switch (m_state)
1025  {
1029  {
1030  // configure MAC (and scheduler)
1032  req.m_rnti = m_rnti;
1034  for (uint8_t i = 0; i < m_rrc->m_numberOfComponentCarriers; i++)
1035  {
1036  m_rrc->m_cmacSapProvider.at (i)->UeUpdateConfigurationReq (req);
1037 
1038  // configure PHY
1039  m_rrc->m_cphySapProvider.at (i)->SetTransmissionMode (req.m_rnti, req.m_transmissionMode);
1041  m_rrc->m_cphySapProvider.at (i)->SetPa (m_rnti, paDouble);
1042  }
1043 
1044  m_needPhyMacConfiguration = false;
1045  }
1047  m_rrc->m_connectionReconfigurationTrace (m_imsi, m_rrc->ComponentCarrierToCellId (m_componentCarrierId), m_rnti);
1048  break;
1049 
1050  // This case is added to NS-3 in order to handle bearer de-activation scenario for CONNECTED state UE
1051  case CONNECTED_NORMALLY:
1052  NS_LOG_INFO ("ignoring RecvRrcConnectionReconfigurationCompleted in state " << ToString (m_state));
1053  break;
1054 
1055  case HANDOVER_LEAVING:
1056  NS_LOG_INFO ("ignoring RecvRrcConnectionReconfigurationCompleted in state " << ToString (m_state));
1057  break;
1058 
1059  case HANDOVER_JOINING:
1060  {
1062 
1063  while (!m_packetBuffer.empty ())
1064  {
1065  NS_LOG_LOGIC ("dequeueing data from buffer");
1066  std::pair <uint8_t, Ptr<Packet> > bidPacket = m_packetBuffer.front ();
1067  uint8_t bid = bidPacket.first;
1068  Ptr<Packet> p = bidPacket.second;
1069 
1070  NS_LOG_LOGIC ("queueing data on PDCP for transmission over the air");
1071  SendPacket (bid, p);
1072 
1073  m_packetBuffer.pop_front ();
1074  }
1075 
1076  NS_LOG_INFO ("Send PATH SWITCH REQUEST to the MME");
1078  params.rnti = m_rnti;
1079  params.cellId = m_rrc->ComponentCarrierToCellId (m_componentCarrierId);
1080  params.mmeUeS1Id = m_imsi;
1082  for (std::map <uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator it = m_drbMap.begin ();
1083  it != m_drbMap.end ();
1084  ++it)
1085  {
1087  b.epsBearerId = it->second->m_epsBearerIdentity;
1088  b.teid = it->second->m_gtpTeid;
1089  params.bearersToBeSwitched.push_back (b);
1090  }
1091  m_rrc->m_s1SapProvider->PathSwitchRequest (params);
1092  }
1093  break;
1094 
1095  default:
1096  NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
1097  break;
1098  }
1099 }
1100 
1101 void
1103 {
1104  NS_LOG_FUNCTION (this);
1105  switch (m_state)
1106  {
1107  case CONNECTED_NORMALLY:
1108  break;
1109 
1110  case HANDOVER_LEAVING:
1112  break;
1113 
1114  default:
1115  NS_FATAL_ERROR ("method unexpected in state " << ToString (m_state));
1116  break;
1117  }
1118 
1122  m_rrc->m_rrcSapUser->SendRrcConnectionReestablishment (m_rnti, msg2);
1124 }
1125 
1126 void
1128 {
1129  NS_LOG_FUNCTION (this);
1131 }
1132 
1133 void
1135 {
1136  uint8_t measId = msg.measResults.measId;
1137  NS_LOG_FUNCTION (this << (uint16_t) measId);
1138  NS_LOG_LOGIC ("measId " << (uint16_t) measId
1139  << " haveMeasResultNeighCells " << msg.measResults.haveMeasResultNeighCells
1140  << " measResultListEutra " << msg.measResults.measResultListEutra.size ()
1141  << " haveScellsMeas " << msg.measResults.haveScellsMeas
1142  << " measScellResultList " << msg.measResults.measScellResultList.measResultScell.size ());
1143  NS_LOG_LOGIC ("serving cellId " << m_rrc->ComponentCarrierToCellId (m_componentCarrierId)
1144  << " RSRP " << (uint16_t) msg.measResults.rsrpResult
1145  << " RSRQ " << (uint16_t) msg.measResults.rsrqResult);
1146 
1147  for (std::list <LteRrcSap::MeasResultEutra>::iterator it = msg.measResults.measResultListEutra.begin ();
1148  it != msg.measResults.measResultListEutra.end ();
1149  ++it)
1150  {
1151  NS_LOG_LOGIC ("neighbour cellId " << it->physCellId
1152  << " RSRP " << (it->haveRsrpResult ? (uint16_t) it->rsrpResult : 255)
1153  << " RSRQ " << (it->haveRsrqResult ? (uint16_t) it->rsrqResult : 255));
1154  }
1155 
1156  if ((m_rrc->m_handoverManagementSapProvider != 0)
1157  && (m_rrc->m_handoverMeasIds.find (measId) != m_rrc->m_handoverMeasIds.end ()))
1158  {
1159  // this measurement was requested by the handover algorithm
1160  m_rrc->m_handoverManagementSapProvider->ReportUeMeas (m_rnti,
1161  msg.measResults);
1162  }
1163 
1164  if ((m_rrc->m_ccmRrcSapProvider != 0)
1165  && (m_rrc->m_componentCarrierMeasIds.find (measId) != m_rrc->m_componentCarrierMeasIds.end ()))
1166  {
1167  // this measurement was requested by the handover algorithm
1168  m_rrc->m_ccmRrcSapProvider->ReportUeMeas (m_rnti,
1169  msg.measResults);
1170  }
1171 
1172  if ((m_rrc->m_anrSapProvider != 0)
1173  && (m_rrc->m_anrMeasIds.find (measId) != m_rrc->m_anrMeasIds.end ()))
1174  {
1175  // this measurement was requested by the ANR function
1176  m_rrc->m_anrSapProvider->ReportUeMeas (msg.measResults);
1177  }
1178 
1179  if ((m_rrc->m_ffrRrcSapProvider.size () > 0)
1180  && (m_rrc->m_ffrMeasIds.find (measId) != m_rrc->m_ffrMeasIds.end ()))
1181  {
1182  // this measurement was requested by the FFR function
1183  m_rrc->m_ffrRrcSapProvider.at (0)->ReportUeMeas (m_rnti, msg.measResults);
1184  }
1185  if (msg.measResults.haveScellsMeas == true)
1186  {
1187  for (std::list <LteRrcSap::MeasResultScell>::iterator it = msg.measResults.measScellResultList.measResultScell.begin ();
1189  ++it)
1190  {
1191  m_rrc->m_ffrRrcSapProvider.at (it->servFreqId)->ReportUeMeas (m_rnti, msg.measResults);
1194  }
1195  }
1196 
1198  m_rrc->m_ccmRrcSapProvider->ReportUeMeas (m_rnti, msg.measResults);
1199  // fire a trace source
1200  m_rrc->m_recvMeasurementReportTrace (m_imsi, m_rrc->ComponentCarrierToCellId (m_componentCarrierId), m_rnti, msg);
1201 
1202 } // end of UeManager::RecvMeasurementReport
1203 
1204 
1205 // methods forwarded from CMAC SAP
1206 
1207 void
1209 {
1210  NS_LOG_FUNCTION (this << m_rnti);
1211  // at this stage used only by the scheduler for updating txMode
1212 
1214 
1216 
1217  // reconfigure the UE RRC
1219 }
1220 
1221 
1222 // methods forwarded from PDCP SAP
1223 
1224 void
1226 {
1227  NS_LOG_FUNCTION (this);
1228  if (params.lcid > 2)
1229  {
1230  // data radio bearer
1231  EpsBearerTag tag;
1232  tag.SetRnti (params.rnti);
1233  tag.SetBid (Lcid2Bid (params.lcid));
1234  params.pdcpSdu->AddPacketTag (tag);
1235  m_rrc->m_forwardUpCallback (params.pdcpSdu);
1236  }
1237 }
1238 
1239 
1240 uint16_t
1242 {
1243  return m_rnti;
1244 }
1245 
1246 uint64_t
1248 {
1249  return m_imsi;
1250 }
1251 
1252 uint8_t
1254 {
1255  return m_componentCarrierId;
1256 }
1257 
1258 uint16_t
1260 {
1262 }
1263 
1264 void
1266 {
1267  NS_LOG_FUNCTION (this);
1269  for (uint16_t i = 0; i < m_rrc->m_numberOfComponentCarriers; i++)
1270  {
1271  m_rrc->m_cphySapProvider.at (i)->SetSrsConfigurationIndex (m_rnti, srsConfIndex);
1272  }
1273  switch (m_state)
1274  {
1275  case INITIAL_RANDOM_ACCESS:
1276  // do nothing, srs conf index will be correctly enforced upon
1277  // RRC connection establishment
1278  break;
1279 
1280  default:
1282  break;
1283  }
1284 }
1285 
1288 {
1289  return m_state;
1290 }
1291 
1292 void
1294 {
1295  NS_LOG_FUNCTION (this);
1296  m_physicalConfigDedicated.pdschConfigDedicated = pdschConfigDedicated;
1297 
1299 
1300  // reconfigure the UE RRC
1302 }
1303 
1304 void
1306 {
1307  NS_LOG_FUNCTION (this);
1313 }
1314 
1315 uint8_t
1317 {
1318  NS_LOG_FUNCTION (this);
1319  const uint8_t MAX_DRB_ID = 32;
1320  for (int drbid = (m_lastAllocatedDrbid + 1) % MAX_DRB_ID;
1321  drbid != m_lastAllocatedDrbid;
1322  drbid = (drbid + 1) % MAX_DRB_ID)
1323  {
1324  if (drbid != 0) // 0 is not allowed
1325  {
1326  if (m_drbMap.find (drbid) == m_drbMap.end ())
1327  {
1328  m_drbMap.insert (std::pair<uint8_t, Ptr<LteDataRadioBearerInfo> > (drbid, drbInfo));
1329  drbInfo->m_drbIdentity = drbid;
1330  m_lastAllocatedDrbid = drbid;
1331  return drbid;
1332  }
1333  }
1334  }
1335  NS_FATAL_ERROR ("no more data radio bearer ids available");
1336  return 0;
1337 }
1338 
1341 {
1342  NS_LOG_FUNCTION (this << (uint32_t) drbid);
1343  NS_ASSERT (0 != drbid);
1344  std::map<uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator it = m_drbMap.find (drbid);
1345  NS_ABORT_IF (it == m_drbMap.end ());
1346  return it->second;
1347 }
1348 
1349 
1350 void
1352 {
1353  NS_LOG_FUNCTION (this << (uint32_t) drbid);
1354  std::map <uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator it = m_drbMap.find (drbid);
1355  NS_ASSERT_MSG (it != m_drbMap.end (), "request to remove radio bearer with unknown drbid " << drbid);
1356  m_drbMap.erase (it);
1357 }
1358 
1359 
1362 {
1363  NS_LOG_FUNCTION (this);
1368  msg.haveMobilityControlInfo = false;
1369  msg.haveMeasConfig = true;
1370  msg.measConfig = m_rrc->m_ueMeasConfig;
1371  if ( m_caSupportConfigured == false && m_rrc->m_numberOfComponentCarriers > 1)
1372  {
1373  m_caSupportConfigured = true;
1374  NS_LOG_FUNCTION ( this << "CA not configured. Configure now!" );
1375  msg.haveNonCriticalExtension = true;
1377  NS_LOG_FUNCTION ( this << " haveNonCriticalExtension " << msg.haveNonCriticalExtension );
1378  }
1379  else
1380  {
1381  msg.haveNonCriticalExtension = false;
1382  }
1383 
1384  return msg;
1385 }
1386 
1389 {
1390  NS_LOG_FUNCTION (this);
1392 
1393  if (m_srb1 != 0)
1394  {
1396  stam.srbIdentity = m_srb1->m_srbIdentity;
1397  stam.logicalChannelConfig = m_srb1->m_logicalChannelConfig;
1398  rrcd.srbToAddModList.push_back (stam);
1399  }
1400 
1401  for (std::map <uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator it = m_drbMap.begin ();
1402  it != m_drbMap.end ();
1403  ++it)
1404  {
1406  dtam.epsBearerIdentity = it->second->m_epsBearerIdentity;
1407  dtam.drbIdentity = it->second->m_drbIdentity;
1408  dtam.rlcConfig = it->second->m_rlcConfig;
1409  dtam.logicalChannelIdentity = it->second->m_logicalChannelIdentity;
1410  dtam.logicalChannelConfig = it->second->m_logicalChannelConfig;
1411  rrcd.drbToAddModList.push_back (dtam);
1412  }
1413 
1414  rrcd.havePhysicalConfigDedicated = true;
1416  return rrcd;
1417 }
1418 
1419 uint8_t
1421 {
1422  NS_LOG_FUNCTION (this);
1426 }
1427 
1428 uint8_t
1430 {
1431  NS_ASSERT (lcid > 2);
1432  return lcid - 2;
1433 }
1434 
1435 uint8_t
1436 UeManager::Drbid2Lcid (uint8_t drbid)
1437 {
1438  return drbid + 2;
1439 }
1440 uint8_t
1441 UeManager::Lcid2Bid (uint8_t lcid)
1442 {
1443  NS_ASSERT (lcid > 2);
1444  return lcid - 2;
1445 }
1446 
1447 uint8_t
1448 UeManager::Bid2Lcid (uint8_t bid)
1449 {
1450  return bid + 2;
1451 }
1452 
1453 uint8_t
1454 UeManager::Drbid2Bid (uint8_t drbid)
1455 {
1456  return drbid;
1457 }
1458 
1459 uint8_t
1461 {
1462  return bid;
1463 }
1464 
1465 
1466 void
1468 {
1469  NS_LOG_FUNCTION (this << ToString (newState));
1470  State oldState = m_state;
1471  m_state = newState;
1472  NS_LOG_INFO (this << " IMSI " << m_imsi << " RNTI " << m_rnti << " UeManager "
1473  << ToString (oldState) << " --> " << ToString (newState));
1474  m_stateTransitionTrace (m_imsi, m_rrc->ComponentCarrierToCellId (m_componentCarrierId), m_rnti, oldState, newState);
1475 
1476  switch (newState)
1477  {
1478  case INITIAL_RANDOM_ACCESS:
1479  case HANDOVER_JOINING:
1480  NS_FATAL_ERROR ("cannot switch to an initial state");
1481  break;
1482 
1483  case CONNECTION_SETUP:
1484  break;
1485 
1486  case ATTACH_REQUEST:
1487  break;
1488 
1489  case CONNECTED_NORMALLY:
1490  {
1492  {
1494  }
1496  {
1498  }
1499  }
1500  break;
1501 
1503  break;
1504 
1506  break;
1507 
1508  case HANDOVER_LEAVING:
1509  break;
1510 
1511  default:
1512  break;
1513  }
1514 }
1515 
1518 {
1519  NS_LOG_FUNCTION ( this );
1521 
1522  // LteRrcSap::SCellToAddMod scell;
1523  std::list<LteRrcSap::SCellToAddMod> SccCon;
1524 
1525  // sCellToReleaseList is always empty since no Scc is released
1526 
1527  for (auto &it: m_rrc->m_componentCarrierPhyConf)
1528  {
1529  uint8_t ccId = it.first;
1530 
1531  if (ccId == m_componentCarrierId)
1532  {
1533  // Skip primary CC.
1534  continue;
1535  }
1536  else if (ccId < m_componentCarrierId)
1537  {
1538  // Shift all IDs below PCC forward so PCC can use CC ID 1.
1539  ccId++;
1540  }
1541 
1542  Ptr<ComponentCarrierBaseStation> eNbCcm = it.second;
1543  LteRrcSap::SCellToAddMod component;
1544  component.sCellIndex = ccId;
1545  component.cellIdentification.physCellId = eNbCcm->GetCellId ();
1546  component.cellIdentification.dlCarrierFreq = eNbCcm->GetDlEarfcn ();
1548  component.radioResourceConfigCommonSCell.nonUlConfiguration.dlBandwidth = eNbCcm->GetDlBandwidth ();
1550  component.radioResourceConfigCommonSCell.nonUlConfiguration.pdschConfigCommon.referenceSignalPower = m_rrc->m_cphySapProvider.at (0)->GetReferenceSignalPower ();
1553  component.radioResourceConfigCommonSCell.ulConfiguration.ulFreqInfo.ulCarrierFreq = eNbCcm->GetUlEarfcn ();
1554  component.radioResourceConfigCommonSCell.ulConfiguration.ulFreqInfo.ulBandwidth = eNbCcm->GetUlBandwidth ();
1556  //component.radioResourceConfigCommonSCell.ulConfiguration.soundingRsUlConfigCommon.type = LteRrcSap::SoundingRsUlConfigDedicated::SETUP;
1560 
1561  if (true)
1562  {
1563  component.haveRadioResourceConfigDedicatedSCell = true;
1579  }
1580  else
1581  {
1582  component.haveRadioResourceConfigDedicatedSCell = false;
1583  }
1584  SccCon.push_back (component);
1585  }
1586  ncec.sCellsToAddModList = SccCon;
1587 
1588  return ncec;
1589 }
1590 
1591 
1593 // eNB RRC methods
1595 
1597 
1599  : m_x2SapProvider (0),
1600  m_cmacSapProvider (0),
1601  m_handoverManagementSapProvider (0),
1602  m_ccmRrcSapProvider (0),
1603  m_anrSapProvider (0),
1604  m_ffrRrcSapProvider (0),
1605  m_rrcSapUser (0),
1606  m_macSapProvider (0),
1607  m_s1SapProvider (0),
1608  m_cphySapProvider (0),
1609  m_configured (false),
1610  m_lastAllocatedRnti (0),
1611  m_srsCurrentPeriodicityId (0),
1612  m_lastAllocatedConfigurationIndex (0),
1613  m_reconfigureUes (false),
1614  m_numberOfComponentCarriers (0),
1615  m_carriersConfigured (false)
1616 {
1617  NS_LOG_FUNCTION (this);
1618  m_cmacSapUser.push_back (new EnbRrcMemberLteEnbCmacSapUser (this, 0));
1621  m_ffrRrcSapUser.push_back (new MemberLteFfrRrcSapUser<LteEnbRrc> (this));
1625  m_cphySapUser.push_back (new MemberLteEnbCphySapUser<LteEnbRrc> (this));
1627 }
1628 
1629 void
1631 {
1632  NS_ASSERT_MSG (!m_carriersConfigured, "Secondary carriers can be configured only once.");
1633  m_componentCarrierPhyConf = ccPhyConf;
1634  NS_ABORT_MSG_IF (m_numberOfComponentCarriers != m_componentCarrierPhyConf.size (), " Number of component carriers "
1635  "are not equal to the number of he component carrier configuration provided");
1636 
1637  for (uint8_t i = 1; i < m_numberOfComponentCarriers; i++)
1638  {
1639  m_cphySapUser.push_back (new MemberLteEnbCphySapUser<LteEnbRrc> (this));
1640  m_cmacSapUser.push_back (new EnbRrcMemberLteEnbCmacSapUser (this, i));
1641  m_ffrRrcSapUser.push_back (new MemberLteFfrRrcSapUser<LteEnbRrc> (this));
1642  }
1643  m_carriersConfigured = true;
1645 }
1646 
1648 {
1649  NS_LOG_FUNCTION (this);
1650 }
1651 
1652 
1653 void
1655 {
1656  NS_LOG_FUNCTION (this);
1657  for ( uint8_t i = 0; i < m_numberOfComponentCarriers ; i++)
1658  {
1659  delete m_cphySapUser[i];
1660  delete m_cmacSapUser[i];
1661  delete m_ffrRrcSapUser[i];
1662  }
1663  //delete m_cphySapUser;
1664  m_cphySapUser.erase (m_cphySapUser.begin (),m_cphySapUser.end ());
1665  m_cphySapUser.clear ();
1666  //delete m_cmacSapUser;
1667  m_cmacSapUser.erase (m_cmacSapUser.begin (),m_cmacSapUser.end ());
1668  m_cmacSapUser.clear ();
1669  //delete m_ffrRrcSapUser;
1670  m_ffrRrcSapUser.erase (m_ffrRrcSapUser.begin (),m_ffrRrcSapUser.end ());
1671  m_ffrRrcSapUser.clear ();
1672  m_ueMap.clear ();
1674  delete m_ccmRrcSapUser;
1675  delete m_anrSapUser;
1676  delete m_rrcSapProvider;
1677  delete m_x2SapUser;
1678  delete m_s1SapUser;
1679 
1680 }
1681 
1682 TypeId
1684 {
1685  NS_LOG_FUNCTION ("LteEnbRrc::GetTypeId");
1686  static TypeId tid = TypeId ("ns3::LteEnbRrc")
1687  .SetParent<Object> ()
1688  .SetGroupName("Lte")
1689  .AddConstructor<LteEnbRrc> ()
1690  .AddAttribute ("UeMap", "List of UeManager by C-RNTI.",
1691  ObjectMapValue (),
1693  MakeObjectMapChecker<UeManager> ())
1694  .AddAttribute ("DefaultTransmissionMode",
1695  "The default UEs' transmission mode (0: SISO)",
1696  UintegerValue (0), // default tx-mode
1698  MakeUintegerChecker<uint8_t> ())
1699  .AddAttribute ("EpsBearerToRlcMapping",
1700  "Specify which type of RLC will be used for each type of EPS bearer. ",
1703  MakeEnumChecker (RLC_SM_ALWAYS, "RlcSmAlways",
1704  RLC_UM_ALWAYS, "RlcUmAlways",
1705  RLC_AM_ALWAYS, "RlcAmAlways",
1706  PER_BASED, "PacketErrorRateBased"))
1707  .AddAttribute ("SystemInformationPeriodicity",
1708  "The interval for sending system information (Time value)",
1709  TimeValue (MilliSeconds (80)),
1711  MakeTimeChecker ())
1712 
1713  // SRS related attributes
1714  .AddAttribute ("SrsPeriodicity",
1715  "The SRS periodicity in milliseconds",
1716  UintegerValue (40),
1719  MakeUintegerChecker<uint32_t> ())
1720 
1721  // Timeout related attributes
1722  .AddAttribute ("ConnectionRequestTimeoutDuration",
1723  "After a RA attempt, if no RRC CONNECTION REQUEST is "
1724  "received before this time, the UE context is destroyed. "
1725  "Must account for reception of RAR and transmission of "
1726  "RRC CONNECTION REQUEST over UL GRANT. The value of this"
1727  "timer should not be greater than T300 timer at UE RRC",
1728  TimeValue (MilliSeconds (15)),
1731  .AddAttribute ("ConnectionSetupTimeoutDuration",
1732  "After accepting connection request, if no RRC CONNECTION "
1733  "SETUP COMPLETE is received before this time, the UE "
1734  "context is destroyed. Must account for the UE's reception "
1735  "of RRC CONNECTION SETUP and transmission of RRC CONNECTION "
1736  "SETUP COMPLETE.",
1737  TimeValue (MilliSeconds (150)),
1739  MakeTimeChecker ())
1740  .AddAttribute ("ConnectionRejectedTimeoutDuration",
1741  "Time to wait between sending a RRC CONNECTION REJECT and "
1742  "destroying the UE context",
1743  TimeValue (MilliSeconds (30)),
1745  MakeTimeChecker ())
1746  .AddAttribute ("HandoverJoiningTimeoutDuration",
1747  "After accepting a handover request, if no RRC CONNECTION "
1748  "RECONFIGURATION COMPLETE is received before this time, the "
1749  "UE context is destroyed. Must account for reception of "
1750  "X2 HO REQ ACK by source eNB, transmission of the Handover "
1751  "Command, non-contention-based random access and reception "
1752  "of the RRC CONNECTION RECONFIGURATION COMPLETE message.",
1753  TimeValue (MilliSeconds (200)),
1755  MakeTimeChecker ())
1756  .AddAttribute ("HandoverLeavingTimeoutDuration",
1757  "After issuing a Handover Command, if neither RRC "
1758  "CONNECTION RE-ESTABLISHMENT nor X2 UE Context Release has "
1759  "been previously received, the UE context is destroyed.",
1760  TimeValue (MilliSeconds (500)),
1762  MakeTimeChecker ())
1763 
1764  // Cell selection related attribute
1765  .AddAttribute ("QRxLevMin",
1766  "One of information transmitted within the SIB1 message, "
1767  "indicating the required minimum RSRP level that any UE must "
1768  "receive from this cell before it is allowed to camp to this "
1769  "cell. The default value -70 corresponds to -140 dBm and is "
1770  "the lowest possible value as defined by Section 6.3.4 of "
1771  "3GPP TS 36.133. This restriction, however, only applies to "
1772  "initial cell selection and EPC-enabled simulation.",
1774  IntegerValue (-70),
1776  MakeIntegerChecker<int8_t> (-70, -22))
1777  .AddAttribute ("NumberOfComponentCarriers",
1778  "Number of Component Carriers ",
1779  UintegerValue (1),
1781  MakeIntegerChecker<int16_t> (MIN_NO_CC, MAX_NO_CC))
1782 
1783  // Handover related attributes
1784  .AddAttribute ("AdmitHandoverRequest",
1785  "Whether to admit an X2 handover request from another eNB",
1786  BooleanValue (true),
1788  MakeBooleanChecker ())
1789  .AddAttribute ("AdmitRrcConnectionRequest",
1790  "Whether to admit a connection request from a UE",
1791  BooleanValue (true),
1793  MakeBooleanChecker ())
1794 
1795  // UE measurements related attributes
1796  .AddAttribute ("RsrpFilterCoefficient",
1797  "Determines the strength of smoothing effect induced by "
1798  "layer 3 filtering of RSRP in all attached UE; "
1799  "if set to 0, no layer 3 filtering is applicable",
1800  // i.e. the variable k in 3GPP TS 36.331 section 5.5.3.2
1801  UintegerValue (4),
1803  MakeUintegerChecker<uint8_t> (0))
1804  .AddAttribute ("RsrqFilterCoefficient",
1805  "Determines the strength of smoothing effect induced by "
1806  "layer 3 filtering of RSRQ in all attached UE; "
1807  "if set to 0, no layer 3 filtering is applicable",
1808  // i.e. the variable k in 3GPP TS 36.331 section 5.5.3.2
1809  UintegerValue (4),
1811  MakeUintegerChecker<uint8_t> (0))
1812 
1813  // Trace sources
1814  .AddTraceSource ("NewUeContext",
1815  "Fired upon creation of a new UE context.",
1817  "ns3::LteEnbRrc::NewUeContextTracedCallback")
1818  .AddTraceSource ("ConnectionEstablished",
1819  "Fired upon successful RRC connection establishment.",
1821  "ns3::LteEnbRrc::ConnectionHandoverTracedCallback")
1822  .AddTraceSource ("ConnectionReconfiguration",
1823  "trace fired upon RRC connection reconfiguration",
1825  "ns3::LteEnbRrc::ConnectionHandoverTracedCallback")
1826  .AddTraceSource ("HandoverStart",
1827  "trace fired upon start of a handover procedure",
1829  "ns3::LteEnbRrc::HandoverStartTracedCallback")
1830  .AddTraceSource ("HandoverEndOk",
1831  "trace fired upon successful termination of a handover procedure",
1833  "ns3::LteEnbRrc::ConnectionHandoverTracedCallback")
1834  .AddTraceSource ("RecvMeasurementReport",
1835  "trace fired when measurement report is received",
1837  "ns3::LteEnbRrc::ReceiveReportTracedCallback")
1838  .AddTraceSource ("NotifyConnectionRelease",
1839  "trace fired when an UE is released",
1841  "ns3::LteEnbRrc::ConnectionHandoverTracedCallback")
1842  .AddTraceSource ("RrcTimeout",
1843  "trace fired when a timer expires",
1845  "ns3::LteEnbRrc::TimerExpiryTracedCallback")
1846  ;
1847  return tid;
1848 }
1849 
1850 void
1852 {
1853  NS_LOG_FUNCTION (this << s);
1854  m_x2SapProvider = s;
1855 }
1856 
1857 EpcX2SapUser*
1859 {
1860  NS_LOG_FUNCTION (this);
1861  return m_x2SapUser;
1862 }
1863 
1864 void
1866 {
1867  NS_LOG_FUNCTION (this << s);
1868  m_cmacSapProvider.at (0) = s;
1869 }
1870 
1871 void
1873 {
1874  NS_LOG_FUNCTION (this << s);
1875  if (m_cmacSapProvider.size () > pos)
1876  {
1877  m_cmacSapProvider.at (pos) = s;
1878  }
1879  else
1880  {
1881  m_cmacSapProvider.push_back (s);
1882  NS_ABORT_IF (m_cmacSapProvider.size () - 1 != pos);
1883  }
1884 }
1885 
1888 {
1889  NS_LOG_FUNCTION (this);
1890  return m_cmacSapUser.at (0);
1891 }
1892 
1895 {
1896  NS_LOG_FUNCTION (this);
1897  return m_cmacSapUser.at (pos);
1898 }
1899 
1900 void
1902 {
1903  NS_LOG_FUNCTION (this << s);
1905 }
1906 
1909 {
1910  NS_LOG_FUNCTION (this);
1912 }
1913 
1914 void
1916 {
1917  NS_LOG_FUNCTION (this << s);
1918  m_ccmRrcSapProvider = s;
1919 }
1920 
1923 {
1924  NS_LOG_FUNCTION (this);
1925  return m_ccmRrcSapUser;
1926 }
1927 
1928 void
1930 {
1931  NS_LOG_FUNCTION (this << s);
1932  m_anrSapProvider = s;
1933 }
1934 
1937 {
1938  NS_LOG_FUNCTION (this);
1939  return m_anrSapUser;
1940 }
1941 
1942 void
1944 {
1945  NS_LOG_FUNCTION (this << s);
1946  if (m_ffrRrcSapProvider.size () > 0)
1947  {
1948  m_ffrRrcSapProvider.at (0) = s;
1949  }
1950  else
1951  {
1952  m_ffrRrcSapProvider.push_back (s);
1953  }
1954 
1955 }
1956 
1957 void
1959 {
1960  NS_LOG_FUNCTION (this << s);
1961  if (m_ffrRrcSapProvider.size () > index)
1962  {
1963  m_ffrRrcSapProvider.at (index) = s;
1964  }
1965  else
1966  {
1967  m_ffrRrcSapProvider.push_back (s);
1968  NS_ABORT_MSG_IF (m_ffrRrcSapProvider.size () - 1 != index,
1969  "You meant to store the pointer at position " <<
1970  static_cast<uint32_t> (index) <<
1971  " but it went to " << m_ffrRrcSapProvider.size () - 1);
1972  }
1973 }
1974 
1977 {
1978  NS_LOG_FUNCTION (this);
1979  return m_ffrRrcSapUser.at (0);
1980 }
1981 
1984 {
1985  NS_LOG_FUNCTION (this);
1986  NS_ASSERT_MSG (index < m_numberOfComponentCarriers, "Invalid component carrier index:"<<index<<" provided in order to obtain FfrRrcSapUser.");
1987  return m_ffrRrcSapUser.at (index);
1988 }
1989 
1990 void
1992 {
1993  NS_LOG_FUNCTION (this << s);
1994  m_rrcSapUser = s;
1995 }
1996 
1999 {
2000  NS_LOG_FUNCTION (this);
2001  return m_rrcSapProvider;
2002 }
2003 
2004 void
2006 {
2007  NS_LOG_FUNCTION (this);
2008  m_macSapProvider = s;
2009 }
2010 
2011 void
2013 {
2014  m_s1SapProvider = s;
2015 }
2016 
2017 
2020 {
2021  return m_s1SapUser;
2022 }
2023 
2024 void
2026 {
2027  NS_LOG_FUNCTION (this << s);
2028  if (m_cphySapProvider.size () > 0)
2029  {
2030  m_cphySapProvider.at (0) = s;
2031  }
2032  else
2033  {
2034  m_cphySapProvider.push_back (s);
2035  }
2036 }
2037 
2040 {
2041  NS_LOG_FUNCTION (this);
2042  return m_cphySapUser.at(0);
2043 }
2044 
2045 void
2047 {
2048  NS_LOG_FUNCTION (this << s);
2049  if (m_cphySapProvider.size () > pos)
2050  {
2051  m_cphySapProvider.at(pos) = s;
2052  }
2053  else
2054  {
2055  m_cphySapProvider.push_back (s);
2056  NS_ABORT_IF (m_cphySapProvider.size () - 1 != pos);
2057  }
2058 }
2059 
2062 {
2063  NS_LOG_FUNCTION (this);
2064  return m_cphySapUser.at(pos);
2065 }
2066 
2067 bool
2068 LteEnbRrc::HasUeManager (uint16_t rnti) const
2069 {
2070  NS_LOG_FUNCTION (this << (uint32_t) rnti);
2071  std::map<uint16_t, Ptr<UeManager> >::const_iterator it = m_ueMap.find (rnti);
2072  return (it != m_ueMap.end ());
2073 }
2074 
2077 {
2078  NS_LOG_FUNCTION (this << (uint32_t) rnti);
2079  NS_ASSERT (0 != rnti);
2080  std::map<uint16_t, Ptr<UeManager> >::iterator it = m_ueMap.find (rnti);
2081  NS_ASSERT_MSG (it != m_ueMap.end (), "UE manager for RNTI " << rnti << " not found");
2082  return it->second;
2083 }
2084 
2085 uint8_t
2087 {
2088  NS_LOG_FUNCTION (this);
2089 
2090  // SANITY CHECK
2091 
2093  "Measurement identities and reporting configuration should not have different quantity");
2094 
2095  if (Simulator::Now () != Seconds (0))
2096  {
2097  NS_FATAL_ERROR ("AddUeMeasReportConfig may not be called after the simulation has run");
2098  }
2099 
2100  // INPUT VALIDATION
2101 
2102  switch (config.triggerQuantity)
2103  {
2107  {
2108  NS_FATAL_ERROR ("The given triggerQuantity (RSRP) does not match with the given threshold2.choice");
2109  }
2110 
2116  {
2117  NS_FATAL_ERROR ("The given triggerQuantity (RSRP) does not match with the given threshold1.choice");
2118  }
2119  break;
2120 
2124  {
2125  NS_FATAL_ERROR ("The given triggerQuantity (RSRQ) does not match with the given threshold2.choice");
2126  }
2127 
2133  {
2134  NS_FATAL_ERROR ("The given triggerQuantity (RSRQ) does not match with the given threshold1.choice");
2135  }
2136  break;
2137 
2138  default:
2139  NS_FATAL_ERROR ("unsupported triggerQuantity");
2140  break;
2141  }
2142 
2144  {
2145  NS_FATAL_ERROR ("Only REPORT_STRONGEST_CELLS purpose is supported");
2146  }
2147 
2149  {
2150  NS_LOG_WARN ("reportQuantity = BOTH will be used instead of the given reportQuantity");
2151  }
2152 
2153  uint8_t nextId = m_ueMeasConfig.reportConfigToAddModList.size () + 1;
2154 
2155  // create the reporting configuration
2156  LteRrcSap::ReportConfigToAddMod reportConfig;
2157  reportConfig.reportConfigId = nextId;
2158  reportConfig.reportConfigEutra = config;
2159 
2160  // create the measurement identity
2162  measId.measId = nextId;
2163  measId.measObjectId = 1;
2164  measId.reportConfigId = nextId;
2165 
2166  // add both to the list of UE measurement configuration
2167  m_ueMeasConfig.reportConfigToAddModList.push_back (reportConfig);
2168  m_ueMeasConfig.measIdToAddModList.push_back (measId);
2169 
2170  return nextId;
2171 }
2172 
2173 void
2175 {
2176  auto it = ccPhyConf.begin ();
2177  NS_ASSERT (it != ccPhyConf.end ());
2178  uint16_t ulBandwidth = it->second->GetUlBandwidth ();
2179  uint16_t dlBandwidth = it->second->GetDlBandwidth ();
2180  uint32_t ulEarfcn = it->second->GetUlEarfcn ();
2181  uint32_t dlEarfcn = it->second->GetDlEarfcn ();
2182  NS_LOG_FUNCTION (this << ulBandwidth << dlBandwidth
2183  << ulEarfcn << dlEarfcn);
2185 
2186  for (const auto &it: ccPhyConf)
2187  {
2188  m_cphySapProvider.at (it.first)->SetBandwidth (it.second->GetUlBandwidth (), it.second->GetDlBandwidth ());
2189  m_cphySapProvider.at (it.first)->SetEarfcn (it.second->GetUlEarfcn (), it.second->GetDlEarfcn ());
2190  m_cphySapProvider.at (it.first)->SetCellId (it.second->GetCellId ());
2191  m_cmacSapProvider.at (it.first)->ConfigureMac (it.second->GetUlBandwidth (), it.second->GetDlBandwidth ());
2192  if (m_ffrRrcSapProvider.size () > it.first)
2193  {
2194  m_ffrRrcSapProvider.at (it.first)->SetCellId (it.second->GetCellId ());
2195  m_ffrRrcSapProvider.at (it.first)->SetBandwidth (it.second->GetUlBandwidth (), it.second->GetDlBandwidth ());
2196  }
2197  }
2198 
2199  m_dlEarfcn = dlEarfcn;
2200  m_ulEarfcn = ulEarfcn;
2201  m_dlBandwidth = dlBandwidth;
2202  m_ulBandwidth = ulBandwidth;
2203 
2204  /*
2205  * Initializing the list of UE measurement configuration (m_ueMeasConfig).
2206  * Only intra-frequency measurements are supported, so only one measurement
2207  * object is created.
2208  */
2209 
2210  LteRrcSap::MeasObjectToAddMod measObject;
2211  measObject.measObjectId = 1;
2212  measObject.measObjectEutra.carrierFreq = m_dlEarfcn;
2214  measObject.measObjectEutra.presenceAntennaPort1 = false;
2215  measObject.measObjectEutra.neighCellConfig = 0;
2216  measObject.measObjectEutra.offsetFreq = 0;
2217  measObject.measObjectEutra.haveCellForWhichToReportCGI = false;
2218 
2219  m_ueMeasConfig.measObjectToAddModList.push_back (measObject);
2224  m_ueMeasConfig.haveSmeasure = false;
2226 
2227  m_sib1.clear ();
2228  m_sib1.reserve (ccPhyConf.size ());
2229  for (const auto &it: ccPhyConf)
2230  {
2231  // Enabling MIB transmission
2233  mib.dlBandwidth = it.second->GetDlBandwidth ();
2234  mib.systemFrameNumber = 0;
2235  m_cphySapProvider.at (it.first)->SetMasterInformationBlock (mib);
2236 
2237  // Enabling SIB1 transmission with default values
2239  sib1.cellAccessRelatedInfo.cellIdentity = it.second->GetCellId ();
2240  sib1.cellAccessRelatedInfo.csgIndication = false;
2243  sib1.cellSelectionInfo.qQualMin = -34; // not used, set as minimum value
2244  sib1.cellSelectionInfo.qRxLevMin = m_qRxLevMin; // set as minimum value
2245  m_sib1.push_back (sib1);
2246  m_cphySapProvider.at (it.first)->SetSystemInformationBlockType1 (sib1);
2247  }
2248  /*
2249  * Enabling transmission of other SIB. The first time System Information is
2250  * transmitted is arbitrarily assumed to be at +0.016s, and then it will be
2251  * regularly transmitted every 80 ms by default (set the
2252  * SystemInformationPeriodicity attribute to configure this).
2253  */
2255 
2256  m_configured = true;
2257 
2258 }
2259 
2260 
2261 void
2262 LteEnbRrc::SetCellId (uint16_t cellId)
2263 {
2264  // update SIB1
2265  m_sib1.at (0).cellAccessRelatedInfo.cellIdentity = cellId;
2266  m_cphySapProvider.at (0)->SetSystemInformationBlockType1 (m_sib1.at (0));
2267 }
2268 
2269 void
2270 LteEnbRrc::SetCellId (uint16_t cellId, uint8_t ccIndex)
2271 {
2272  // update SIB1
2273  m_sib1.at (ccIndex).cellAccessRelatedInfo.cellIdentity = cellId;
2274  m_cphySapProvider.at (ccIndex)->SetSystemInformationBlockType1 (m_sib1.at (ccIndex));
2275 }
2276 
2277 uint8_t
2279 {
2280  NS_LOG_FUNCTION (this << cellId);
2281  for (auto &it: m_componentCarrierPhyConf)
2282  {
2283  if (it.second->GetCellId () == cellId)
2284  {
2285  return it.first;
2286  }
2287  }
2288  NS_FATAL_ERROR ("Cell " << cellId << " not found in CC map");
2289 }
2290 
2291 uint16_t
2292 LteEnbRrc::ComponentCarrierToCellId (uint8_t componentCarrierId)
2293 {
2294  NS_LOG_FUNCTION (this << +componentCarrierId);
2295  return m_componentCarrierPhyConf.at (componentCarrierId)->GetCellId ();
2296 }
2297 
2298 bool
2300 {
2301  NS_LOG_FUNCTION (this << packet);
2302 
2303  EpsBearerTag tag;
2304  bool found = packet->RemovePacketTag (tag);
2305  NS_ASSERT_MSG (found, "no EpsBearerTag found in packet to be sent");
2306  Ptr<UeManager> ueManager = GetUeManager (tag.GetRnti ());
2307  ueManager->SendData (tag.GetBid (), packet);
2308 
2309  return true;
2310 }
2311 
2312 void
2314 {
2315  m_forwardUpCallback = cb;
2316 }
2317 
2318 void
2320 {
2321  NS_LOG_FUNCTION (this << rnti);
2323  "ConnectionRequestTimeout in unexpected state " << ToString (GetUeManager (rnti)->GetState ()));
2324  m_rrcTimeoutTrace (GetUeManager (rnti)->GetImsi (), rnti,
2325  ComponentCarrierToCellId (GetUeManager (rnti)->GetComponentCarrierId ()), "ConnectionRequestTimeout");
2326  RemoveUe (rnti);
2327 }
2328 
2329 void
2331 {
2332  NS_LOG_FUNCTION (this << rnti);
2333  NS_ASSERT_MSG (GetUeManager (rnti)->GetState () == UeManager::CONNECTION_SETUP,
2334  "ConnectionSetupTimeout in unexpected state " << ToString (GetUeManager (rnti)->GetState ()));
2335  m_rrcTimeoutTrace (GetUeManager (rnti)->GetImsi (), rnti,
2336  ComponentCarrierToCellId (GetUeManager (rnti)->GetComponentCarrierId ()), "ConnectionSetupTimeout");
2337  RemoveUe (rnti);
2338 }
2339 
2340 void
2342 {
2343  NS_LOG_FUNCTION (this << rnti);
2345  "ConnectionRejectedTimeout in unexpected state " << ToString (GetUeManager (rnti)->GetState ()));
2346  m_rrcTimeoutTrace (GetUeManager (rnti)->GetImsi (), rnti,
2347  ComponentCarrierToCellId (GetUeManager (rnti)->GetComponentCarrierId ()), "ConnectionRejectedTimeout");
2348  RemoveUe (rnti);
2349 }
2350 
2351 void
2353 {
2354  NS_LOG_FUNCTION (this << rnti);
2355  NS_ASSERT_MSG (GetUeManager (rnti)->GetState () == UeManager::HANDOVER_JOINING,
2356  "HandoverJoiningTimeout in unexpected state " << ToString (GetUeManager (rnti)->GetState ()));
2357  m_rrcTimeoutTrace (GetUeManager (rnti)->GetImsi (), rnti,
2358  ComponentCarrierToCellId (GetUeManager (rnti)->GetComponentCarrierId ()), "HandoverJoiningTimeout");
2359  RemoveUe (rnti);
2360 }
2361 
2362 void
2364 {
2365  NS_LOG_FUNCTION (this << rnti);
2366  NS_ASSERT_MSG (GetUeManager (rnti)->GetState () == UeManager::HANDOVER_LEAVING,
2367  "HandoverLeavingTimeout in unexpected state " << ToString (GetUeManager (rnti)->GetState ()));
2368  m_rrcTimeoutTrace (GetUeManager (rnti)->GetImsi (), rnti,
2369  ComponentCarrierToCellId (GetUeManager (rnti)->GetComponentCarrierId ()), "HandoverLeavingTimeout");
2370  RemoveUe (rnti);
2371 }
2372 
2373 void
2374 LteEnbRrc::SendHandoverRequest (uint16_t rnti, uint16_t cellId)
2375 {
2376  NS_LOG_FUNCTION (this << rnti << cellId);
2377  NS_LOG_LOGIC ("Request to send HANDOVER REQUEST");
2379 
2380  Ptr<UeManager> ueManager = GetUeManager (rnti);
2381  ueManager->PrepareHandover (cellId);
2382 
2383 }
2384 
2385 void
2387 {
2388  NS_LOG_FUNCTION (this << rnti);
2389  GetUeManager (rnti)->CompleteSetupUe (params);
2390 }
2391 
2392 void
2394 {
2395  NS_LOG_FUNCTION (this << rnti);
2396  GetUeManager (rnti)->RecvRrcConnectionRequest (msg);
2397 }
2398 
2399 void
2401 {
2402  NS_LOG_FUNCTION (this << rnti);
2403  GetUeManager (rnti)->RecvRrcConnectionSetupCompleted (msg);
2404 }
2405 
2406 void
2408 {
2409  NS_LOG_FUNCTION (this << rnti);
2410  GetUeManager (rnti)->RecvRrcConnectionReconfigurationCompleted (msg);
2411 }
2412 
2413 void
2415 {
2416  NS_LOG_FUNCTION (this << rnti);
2417  GetUeManager (rnti)->RecvRrcConnectionReestablishmentRequest (msg);
2418 }
2419 
2420 void
2422 {
2423  NS_LOG_FUNCTION (this << rnti);
2424  GetUeManager (rnti)->RecvRrcConnectionReestablishmentComplete (msg);
2425 }
2426 
2427 void
2429 {
2430  NS_LOG_FUNCTION (this << rnti);
2431  GetUeManager (rnti)->RecvMeasurementReport (msg);
2432 }
2433 
2434 void
2436 {
2437  NS_LOG_FUNCTION (this);
2438  Ptr<UeManager> ueManager = GetUeManager (msg.rnti);
2439  ueManager->InitialContextSetupRequest ();
2440 }
2441 
2442 void
2444 {
2445  NS_LOG_FUNCTION (this << rnti);
2446  // TODO: remove after merge of ho_failure branch
2447  // check if the RNTI to be removed is not stale
2448  if (HasUeManager (rnti))
2449  {
2450  GetUeManager (rnti)->RecvIdealUeContextRemoveRequest (rnti);
2451  // delete the UE context at the eNB
2452  RemoveUe (rnti);
2453  }
2454 }
2455 
2456 void
2458 {
2459  NS_LOG_FUNCTION (this);
2460  Ptr<UeManager> ueManager = GetUeManager (request.rnti);
2461  ueManager->SetupDataRadioBearer (request.bearer, request.bearerId, request.gtpTeid, request.transportLayerAddress);
2462 }
2463 
2464 void
2466 {
2467  NS_LOG_FUNCTION (this);
2468  Ptr<UeManager> ueManager = GetUeManager (params.rnti);
2469  ueManager->SendUeContextRelease ();
2470 }
2471 
2472 void
2474 {
2475  NS_LOG_FUNCTION (this);
2476 
2477  NS_LOG_LOGIC ("Recv X2 message: HANDOVER REQUEST");
2478 
2479  NS_LOG_LOGIC ("oldEnbUeX2apId = " << req.oldEnbUeX2apId);
2480  NS_LOG_LOGIC ("sourceCellId = " << req.sourceCellId);
2481  NS_LOG_LOGIC ("targetCellId = " << req.targetCellId);
2482  NS_LOG_LOGIC ("mmeUeS1apId = " << req.mmeUeS1apId);
2483 
2484  if (m_admitHandoverRequest == false)
2485  {
2486  NS_LOG_INFO ("rejecting handover request from cellId " << req.sourceCellId);
2488  res.oldEnbUeX2apId = req.oldEnbUeX2apId;
2489  res.sourceCellId = req.sourceCellId;
2490  res.targetCellId = req.targetCellId;
2491  res.cause = 0;
2492  res.criticalityDiagnostics = 0;
2494  return;
2495  }
2496 
2498  LteEnbCmacSapProvider::AllocateNcRaPreambleReturnValue anrcrv = m_cmacSapProvider.at (0)->AllocateNcRaPreamble (rnti);
2499  if (anrcrv.valid == false)
2500  {
2501  NS_LOG_INFO (this << " failed to allocate a preamble for non-contention based RA => cannot accept HO");
2502  RemoveUe (rnti);
2503  NS_FATAL_ERROR ("should trigger HO Preparation Failure, but it is not implemented");
2504  return;
2505  }
2506 
2507  Ptr<UeManager> ueManager = GetUeManager (rnti);
2508  ueManager->SetSource (req.sourceCellId, req.oldEnbUeX2apId);
2509  ueManager->SetImsi (req.mmeUeS1apId);
2510 
2512  ackParams.oldEnbUeX2apId = req.oldEnbUeX2apId;
2513  ackParams.newEnbUeX2apId = rnti;
2514  ackParams.sourceCellId = req.sourceCellId;
2515  ackParams.targetCellId = req.targetCellId;
2516 
2517  for (std::vector <EpcX2Sap::ErabToBeSetupItem>::iterator it = req.bearers.begin ();
2518  it != req.bearers.end ();
2519  ++it)
2520  {
2521  ueManager->SetupDataRadioBearer (it->erabLevelQosParameters, it->erabId, it->gtpTeid, it->transportLayerAddress);
2523  i.erabId = it->erabId;
2524  ackParams.admittedBearers.push_back (i);
2525  }
2526 
2527  LteRrcSap::RrcConnectionReconfiguration handoverCommand = ueManager->GetRrcConnectionReconfigurationForHandover ();
2528  handoverCommand.haveMobilityControlInfo = true;
2529  handoverCommand.mobilityControlInfo.targetPhysCellId = req.targetCellId;
2530  handoverCommand.mobilityControlInfo.haveCarrierFreq = true;
2533  handoverCommand.mobilityControlInfo.haveCarrierBandwidth = true;
2536  handoverCommand.mobilityControlInfo.newUeIdentity = rnti;
2537  handoverCommand.mobilityControlInfo.haveRachConfigDedicated = true;
2540 
2541  LteEnbCmacSapProvider::RachConfig rc = m_cmacSapProvider.at (0)->GetRachConfig ();
2546 
2547  Ptr<Packet> encodedHandoverCommand = m_rrcSapUser->EncodeHandoverCommand (handoverCommand);
2548 
2549  ackParams.rrcContext = encodedHandoverCommand;
2550 
2551  NS_LOG_LOGIC ("Send X2 message: HANDOVER REQUEST ACK");
2552 
2553  NS_LOG_LOGIC ("oldEnbUeX2apId = " << ackParams.oldEnbUeX2apId);
2554  NS_LOG_LOGIC ("newEnbUeX2apId = " << ackParams.newEnbUeX2apId);
2555  NS_LOG_LOGIC ("sourceCellId = " << ackParams.sourceCellId);
2556  NS_LOG_LOGIC ("targetCellId = " << ackParams.targetCellId);
2557 
2559 }
2560 
2561 void
2563 {
2564  NS_LOG_FUNCTION (this);
2565 
2566  NS_LOG_LOGIC ("Recv X2 message: HANDOVER REQUEST ACK");
2567 
2568  NS_LOG_LOGIC ("oldEnbUeX2apId = " << params.oldEnbUeX2apId);
2569  NS_LOG_LOGIC ("newEnbUeX2apId = " << params.newEnbUeX2apId);
2570  NS_LOG_LOGIC ("sourceCellId = " << params.sourceCellId);
2571  NS_LOG_LOGIC ("targetCellId = " << params.targetCellId);
2572 
2573  uint16_t rnti = params.oldEnbUeX2apId;
2574  Ptr<UeManager> ueManager = GetUeManager (rnti);
2575  ueManager->RecvHandoverRequestAck (params);
2576 }
2577 
2578 void
2580 {
2581  NS_LOG_FUNCTION (this);
2582 
2583  NS_LOG_LOGIC ("Recv X2 message: HANDOVER PREPARATION FAILURE");
2584 
2585  NS_LOG_LOGIC ("oldEnbUeX2apId = " << params.oldEnbUeX2apId);
2586  NS_LOG_LOGIC ("sourceCellId = " << params.sourceCellId);
2587  NS_LOG_LOGIC ("targetCellId = " << params.targetCellId);
2588  NS_LOG_LOGIC ("cause = " << params.cause);
2589  NS_LOG_LOGIC ("criticalityDiagnostics = " << params.criticalityDiagnostics);
2590 
2591  uint16_t rnti = params.oldEnbUeX2apId;
2592  Ptr<UeManager> ueManager = GetUeManager (rnti);
2593  ueManager->RecvHandoverPreparationFailure (params.targetCellId);
2594 }
2595 
2596 void
2598 {
2599  NS_LOG_FUNCTION (this);
2600 
2601  NS_LOG_LOGIC ("Recv X2 message: SN STATUS TRANSFER");
2602 
2603  NS_LOG_LOGIC ("oldEnbUeX2apId = " << params.oldEnbUeX2apId);
2604  NS_LOG_LOGIC ("newEnbUeX2apId = " << params.newEnbUeX2apId);
2605  NS_LOG_LOGIC ("erabsSubjectToStatusTransferList size = " << params.erabsSubjectToStatusTransferList.size ());
2606 
2607  uint16_t rnti = params.newEnbUeX2apId;
2608  Ptr<UeManager> ueManager = GetUeManager (rnti);
2609  ueManager->RecvSnStatusTransfer (params);
2610 }
2611 
2612 void
2614 {
2615  NS_LOG_FUNCTION (this);
2616 
2617  NS_LOG_LOGIC ("Recv X2 message: UE CONTEXT RELEASE");
2618 
2619  NS_LOG_LOGIC ("oldEnbUeX2apId = " << params.oldEnbUeX2apId);
2620  NS_LOG_LOGIC ("newEnbUeX2apId = " << params.newEnbUeX2apId);
2621 
2622  uint16_t rnti = params.oldEnbUeX2apId;
2623  GetUeManager (rnti)->RecvUeContextRelease (params);
2624  RemoveUe (rnti);
2625 }
2626 
2627 void
2629 {
2630  NS_LOG_FUNCTION (this);
2631 
2632  NS_LOG_LOGIC ("Recv X2 message: LOAD INFORMATION");
2633 
2634  NS_LOG_LOGIC ("Number of cellInformationItems = " << params.cellInformationList.size ());
2635 
2636  NS_ABORT_IF (m_ffrRrcSapProvider.size () == 0);
2637  m_ffrRrcSapProvider.at (0)->RecvLoadInformation (params);
2638 }
2639 
2640 void
2642 {
2643  NS_LOG_FUNCTION (this);
2644 
2645  NS_LOG_LOGIC ("Recv X2 message: RESOURCE STATUS UPDATE");
2646 
2647  NS_LOG_LOGIC ("Number of cellMeasurementResultItems = " << params.cellMeasurementResultList.size ());
2648 
2649  NS_ASSERT ("Processing of RESOURCE STATUS UPDATE X2 message IS NOT IMPLEMENTED");
2650 }
2651 
2652 void
2654 {
2655  NS_LOG_FUNCTION (this);
2656 
2657  NS_LOG_LOGIC ("Recv UE DATA FORWARDING through X2 interface");
2658  NS_LOG_LOGIC ("sourceCellId = " << params.sourceCellId);
2659  NS_LOG_LOGIC ("targetCellId = " << params.targetCellId);
2660  NS_LOG_LOGIC ("gtpTeid = " << params.gtpTeid);
2661  NS_LOG_LOGIC ("ueData = " << params.ueData);
2662  NS_LOG_LOGIC ("ueData size = " << params.ueData->GetSize ());
2663 
2664  std::map<uint32_t, X2uTeidInfo>::iterator
2665  teidInfoIt = m_x2uTeidInfoMap.find (params.gtpTeid);
2666  if (teidInfoIt != m_x2uTeidInfoMap.end ())
2667  {
2668  GetUeManager (teidInfoIt->second.rnti)->SendData (teidInfoIt->second.drbid, params.ueData);
2669  }
2670  else
2671  {
2672  NS_FATAL_ERROR ("X2-U data received but no X2uTeidInfo found");
2673  }
2674 }
2675 
2676 
2677 uint16_t
2678 LteEnbRrc::DoAllocateTemporaryCellRnti (uint8_t componentCarrierId)
2679 {
2680  NS_LOG_FUNCTION (this << +componentCarrierId);
2681  return AddUe (UeManager::INITIAL_RANDOM_ACCESS, componentCarrierId);
2682 }
2683 
2684 void
2686 {
2687  Ptr<UeManager> ueManager = GetUeManager (cmacParams.m_rnti);
2688  ueManager->CmacUeConfigUpdateInd (cmacParams);
2689 }
2690 
2691 void
2692 LteEnbRrc::DoNotifyLcConfigResult (uint16_t rnti, uint8_t lcid, bool success)
2693 {
2694  NS_LOG_FUNCTION (this << (uint32_t) rnti);
2695  NS_FATAL_ERROR ("not implemented");
2696 }
2697 
2698 
2699 uint8_t
2701 {
2702  NS_LOG_FUNCTION (this);
2703  uint8_t measId = AddUeMeasReportConfig (reportConfig);
2704  m_handoverMeasIds.insert (measId);
2705  return measId;
2706 }
2707 
2708 uint8_t
2710 {
2711  NS_LOG_FUNCTION (this);
2712  uint8_t measId = AddUeMeasReportConfig (reportConfig);
2713  m_componentCarrierMeasIds.insert (measId);
2714  return measId;
2715 }
2716 
2717 void
2718 LteEnbRrc::DoSetNumberOfComponentCarriers (uint16_t numberOfComponentCarriers)
2719 {
2720  m_numberOfComponentCarriers = numberOfComponentCarriers;
2721 }
2722 
2723 void
2724 LteEnbRrc::DoTriggerHandover (uint16_t rnti, uint16_t targetCellId)
2725 {
2726  NS_LOG_FUNCTION (this << rnti << targetCellId);
2727 
2728  bool isHandoverAllowed = true;
2729 
2730  Ptr<UeManager> ueManager = GetUeManager (rnti);
2731  NS_ASSERT_MSG (ueManager != 0, "Cannot find UE context with RNTI " << rnti);
2732 
2733  if (m_anrSapProvider != 0)
2734  {
2735  // ensure that proper neighbour relationship exists between source and target cells
2736  bool noHo = m_anrSapProvider->GetNoHo (targetCellId);
2737  bool noX2 = m_anrSapProvider->GetNoX2 (targetCellId);
2738  NS_LOG_DEBUG (this << " cellId=" << ComponentCarrierToCellId (ueManager->GetComponentCarrierId ())
2739  << " targetCellId=" << targetCellId
2740  << " NRT.NoHo=" << noHo << " NRT.NoX2=" << noX2);
2741 
2742  if (noHo || noX2)
2743  {
2744  isHandoverAllowed = false;
2745  NS_LOG_LOGIC (this << " handover to cell " << targetCellId
2746  << " is not allowed by ANR");
2747  }
2748  }
2749 
2750  if (ueManager->GetState () != UeManager::CONNECTED_NORMALLY)
2751  {
2752  isHandoverAllowed = false;
2753  NS_LOG_LOGIC (this << " handover is not allowed because the UE"
2754  << " rnti=" << rnti << " is in "
2755  << ToString (ueManager->GetState ()) << " state");
2756  }
2757 
2758  if (isHandoverAllowed)
2759  {
2760  // initiate handover execution
2761  ueManager->PrepareHandover (targetCellId);
2762  }
2763 }
2764 
2765 uint8_t
2767 {
2768  NS_LOG_FUNCTION (this);
2769  uint8_t measId = AddUeMeasReportConfig (reportConfig);
2770  m_anrMeasIds.insert (measId);
2771  return measId;
2772 }
2773 
2774 uint8_t
2776 {
2777  NS_LOG_FUNCTION (this);
2778  uint8_t measId = AddUeMeasReportConfig (reportConfig);
2779  m_ffrMeasIds.insert (measId);
2780  return measId;
2781 }
2782 
2783 void
2785 {
2786  NS_LOG_FUNCTION (this);
2787  Ptr<UeManager> ueManager = GetUeManager (rnti);
2788  ueManager->SetPdschConfigDedicated (pdschConfigDedicated);
2789 }
2790 
2791 void
2793 {
2794  NS_LOG_FUNCTION (this);
2795 
2797 }
2798 
2799 uint16_t
2800 LteEnbRrc::AddUe (UeManager::State state, uint8_t componentCarrierId)
2801 {
2802  NS_LOG_FUNCTION (this);
2803  bool found = false;
2804  uint16_t rnti;
2805  for (rnti = m_lastAllocatedRnti + 1;
2806  (rnti != m_lastAllocatedRnti - 1) && (!found);
2807  ++rnti)
2808  {
2809  if ((rnti != 0) && (m_ueMap.find (rnti) == m_ueMap.end ()))
2810  {
2811  found = true;
2812  break;
2813  }
2814  }
2815 
2816  NS_ASSERT_MSG (found, "no more RNTIs available (do you have more than 65535 UEs in a cell?)");
2817  m_lastAllocatedRnti = rnti;
2818  Ptr<UeManager> ueManager = CreateObject<UeManager> (this, rnti, state, componentCarrierId);
2819  m_ccmRrcSapProvider-> AddUe (rnti, (uint8_t)state);
2820  m_ueMap.insert (std::pair<uint16_t, Ptr<UeManager> > (rnti, ueManager));
2821  ueManager->Initialize ();
2822  const uint16_t cellId = ComponentCarrierToCellId (componentCarrierId);
2823  NS_LOG_DEBUG (this << " New UE RNTI " << rnti << " cellId " << cellId << " srs CI " << ueManager->GetSrsConfigurationIndex ());
2824  m_newUeContextTrace (cellId, rnti);
2825  return rnti;
2826 }
2827 
2828 void
2829 LteEnbRrc::RemoveUe (uint16_t rnti)
2830 {
2831  NS_LOG_FUNCTION (this << (uint32_t) rnti);
2832  std::map <uint16_t, Ptr<UeManager> >::iterator it = m_ueMap.find (rnti);
2833  NS_ASSERT_MSG (it != m_ueMap.end (), "request to remove UE info with unknown rnti " << rnti);
2834  uint64_t imsi = it->second->GetImsi ();
2835  uint16_t srsCi = (*it).second->GetSrsConfigurationIndex ();
2836  //cancel pending events
2837  it->second->CancelPendingEvents ();
2838  // fire trace upon connection release
2839  m_connectionReleaseTrace (imsi, ComponentCarrierToCellId (it->second->GetComponentCarrierId ()), rnti);
2840  m_ueMap.erase (it);
2841  for (uint8_t i = 0; i < m_numberOfComponentCarriers; i++)
2842  {
2843  m_cmacSapProvider.at (i)->RemoveUe (rnti);
2844  m_cphySapProvider.at (i)->RemoveUe (rnti);
2845  }
2846  if (m_s1SapProvider != 0)
2847  {
2849  }
2850  m_ccmRrcSapProvider-> RemoveUe (rnti);
2851  // need to do this after UeManager has been deleted
2852  if (srsCi != 0)
2853  {
2855  }
2856 
2857  m_rrcSapUser->RemoveUe (rnti); // Remove UE context at RRC protocol
2858 }
2859 
2860 TypeId
2862 {
2863  switch (m_epsBearerToRlcMapping)
2864  {
2865  case RLC_SM_ALWAYS:
2866  return LteRlcSm::GetTypeId ();
2867  break;
2868 
2869  case RLC_UM_ALWAYS:
2870  return LteRlcUm::GetTypeId ();
2871  break;
2872 
2873  case RLC_AM_ALWAYS:
2874  return LteRlcAm::GetTypeId ();
2875  break;
2876 
2877  case PER_BASED:
2878  if (bearer.GetPacketErrorLossRate () > 1.0e-5)
2879  {
2880  return LteRlcUm::GetTypeId ();
2881  }
2882  else
2883  {
2884  return LteRlcAm::GetTypeId ();
2885  }
2886  break;
2887 
2888  default:
2889  return LteRlcSm::GetTypeId ();
2890  break;
2891  }
2892 }
2893 
2894 
2895 void
2896 LteEnbRrc::AddX2Neighbour (uint16_t cellId)
2897 {
2898  NS_LOG_FUNCTION (this << cellId);
2899 
2900  if (m_anrSapProvider != 0)
2901  {
2903  }
2904 }
2905 
2906 void
2907 LteEnbRrc::SetCsgId (uint32_t csgId, bool csgIndication)
2908 {
2909  NS_LOG_FUNCTION (this << csgId << csgIndication);
2910  for (uint8_t componentCarrierId = 0; componentCarrierId < m_sib1.size (); componentCarrierId++)
2911  {
2912  m_sib1.at (componentCarrierId).cellAccessRelatedInfo.csgIdentity = csgId;
2913  m_sib1.at (componentCarrierId).cellAccessRelatedInfo.csgIndication = csgIndication;
2914  m_cphySapProvider.at (componentCarrierId)->SetSystemInformationBlockType1 (m_sib1.at (componentCarrierId));
2915  }
2916 }
2917 
2919 static const uint8_t SRS_ENTRIES = 9;
2924 static const uint16_t g_srsPeriodicity[SRS_ENTRIES] = {0, 2, 5, 10, 20, 40, 80, 160, 320};
2930 static const uint16_t g_srsCiLow[SRS_ENTRIES] = {0, 0, 2, 7, 17, 37, 77, 157, 317};
2936 static const uint16_t g_srsCiHigh[SRS_ENTRIES] = {0, 1, 6, 16, 36, 76, 156, 316, 636};
2937 
2938 void
2940 {
2941  NS_LOG_FUNCTION (this << p);
2942  for (uint32_t id = 1; id < SRS_ENTRIES; ++id)
2943  {
2944  if (g_srsPeriodicity[id] == p)
2945  {
2947  return;
2948  }
2949  }
2950  // no match found
2951  std::ostringstream allowedValues;
2952  for (uint32_t id = 1; id < SRS_ENTRIES; ++id)
2953  {
2954  allowedValues << g_srsPeriodicity[id] << " ";
2955  }
2956  NS_FATAL_ERROR ("illecit SRS periodicity value " << p << ". Allowed values: " << allowedValues.str ());
2957 }
2958 
2959 uint32_t
2961 {
2962  NS_LOG_FUNCTION (this);
2966 }
2967 
2968 
2969 uint16_t
2971 {
2973  // SRS
2976  NS_LOG_DEBUG (this << " SRS p " << g_srsPeriodicity[m_srsCurrentPeriodicityId] << " set " << m_ueSrsConfigurationIndexSet.size ());
2978  {
2979  NS_FATAL_ERROR ("too many UEs (" << m_ueSrsConfigurationIndexSet.size () + 1
2980  << ") for current SRS periodicity "
2982  << ", consider increasing the value of ns3::LteEnbRrc::SrsPeriodicity");
2983  }
2984 
2985  if (m_ueSrsConfigurationIndexSet.empty ())
2986  {
2987  // first entry
2990  }
2991  else
2992  {
2993  // find a CI from the available ones
2994  std::set<uint16_t>::reverse_iterator rit = m_ueSrsConfigurationIndexSet.rbegin ();
2995  NS_ASSERT (rit != m_ueSrsConfigurationIndexSet.rend ());
2996  NS_LOG_DEBUG (this << " lower bound " << (*rit) << " of " << g_srsCiHigh[m_srsCurrentPeriodicityId]);
2997  if ((*rit) < g_srsCiHigh[m_srsCurrentPeriodicityId])
2998  {
2999  // got it from the upper bound
3000  m_lastAllocatedConfigurationIndex = (*rit) + 1;
3002  }
3003  else
3004  {
3005  // look for released ones
3006  for (uint16_t srcCi = g_srsCiLow[m_srsCurrentPeriodicityId]; srcCi < g_srsCiHigh[m_srsCurrentPeriodicityId]; srcCi++)
3007  {
3008  std::set<uint16_t>::iterator it = m_ueSrsConfigurationIndexSet.find (srcCi);
3009  if (it == m_ueSrsConfigurationIndexSet.end ())
3010  {
3012  m_ueSrsConfigurationIndexSet.insert (srcCi);
3013  break;
3014  }
3015  }
3016  }
3017  }
3019 
3020 }
3021 
3022 
3023 void
3025 {
3026  NS_LOG_FUNCTION (this << srcCi);
3027  std::set<uint16_t>::iterator it = m_ueSrsConfigurationIndexSet.find (srcCi);
3028  NS_ASSERT_MSG (it != m_ueSrsConfigurationIndexSet.end (), "request to remove unkwown SRS CI " << srcCi);
3029  m_ueSrsConfigurationIndexSet.erase (it);
3030 }
3031 
3032 uint8_t
3034 {
3035  if (bearer.IsGbr ())
3036  {
3037  return 1;
3038  }
3039  else
3040  {
3041  return 2;
3042  }
3043 }
3044 
3045 uint8_t
3047 {
3048  return bearer.qci;
3049 }
3050 
3051 void
3053 {
3054  // NS_LOG_FUNCTION (this);
3055 
3056  for (auto &it: m_componentCarrierPhyConf)
3057  {
3058  uint8_t ccId = it.first;
3059 
3061  si.haveSib2 = true;
3062  si.sib2.freqInfo.ulCarrierFreq = it.second->GetUlEarfcn ();
3063  si.sib2.freqInfo.ulBandwidth = it.second->GetUlBandwidth ();
3064  si.sib2.radioResourceConfigCommon.pdschConfigCommon.referenceSignalPower = m_cphySapProvider.at (ccId)->GetReferenceSignalPower ();
3066 
3067  LteEnbCmacSapProvider::RachConfig rc = m_cmacSapProvider.at (ccId)->GetRachConfig ();
3068  LteRrcSap::RachConfigCommon rachConfigCommon;
3070  rachConfigCommon.raSupervisionInfo.preambleTransMax = rc.preambleTransMax;
3072  rachConfigCommon.txFailParam.connEstFailCount = rc.connEstFailCount;
3073  si.sib2.radioResourceConfigCommon.rachConfigCommon = rachConfigCommon;
3074 
3075  m_rrcSapUser->SendSystemInformation (it.second->GetCellId (), si);
3076  }
3077 
3078  /*
3079  * For simplicity, we use the same periodicity for all SIBs. Note that in real
3080  * systems the periodicy of each SIBs could be different.
3081  */
3083 }
3084 
3085 bool
3087 {
3088  NS_LOG_FUNCTION (this << (uint32_t) rnti);
3089  Ptr<UeManager> ueManager = GetUeManager (rnti);
3090  switch (ueManager->GetState ())
3091  {
3094  return true;
3095  break;
3096  default:
3097  return false;
3098  break;
3099 
3100  }
3101 }
3102 
3103 
3104 } // namespace ns3
3105 
ns3::LteEnbRrc::m_anrSapProvider
LteAnrSapProvider * m_anrSapProvider
Interface to the ANR instance.
Definition: lte-enb-rrc.h:1490
ns3::LteEnbRrc::m_defaultTransmissionMode
uint8_t m_defaultTransmissionMode
The DefaultTransmissionMode attribute.
Definition: lte-enb-rrc.h:1565
ns3::UeManager::GetState
State GetState() const
Definition: lte-enb-rrc.cc:1287
ns3::UeManager::PrepareHandover
void PrepareHandover(uint16_t cellId)
Start the handover preparation and send the handover request.
Definition: lte-enb-rrc.cc:635
ns3::UeManager::RecvHandoverPreparationFailure
void RecvHandoverPreparationFailure(uint16_t cellId)
Take the necessary actions in response to the reception of an X2 HO preparation failure message.
Definition: lte-enb-rrc.cc:884
ns3::LteRrcSap::PhysicalConfigDedicatedSCell::ulPowerControlDedicatedSCell
UlPowerControlDedicatedSCell ulPowerControlDedicatedSCell
UL power control dedicated SCell.
Definition: lte-rrc-sap.h:798
ns3::LteAnrSapProvider::AddNeighbourRelation
virtual void AddNeighbourRelation(uint16_t cellId)=0
Add a new Neighbour Relation entry.
ns3::UeManager::ReleaseDataRadioBearer
void ReleaseDataRadioBearer(uint8_t drbid)
Release a given radio bearer.
Definition: lte-enb-rrc.cc:532
ns3::LteEnbRrc::RLC_UM_ALWAYS
@ RLC_UM_ALWAYS
Definition: lte-enb-rrc.h:1041
ns3::TypeId
a unique identifier for an interface.
Definition: type-id.h:59
ns3::LteRrcSap::PhysicalConfigDedicatedSCell::haveSoundingRsUlConfigDedicated
bool haveSoundingRsUlConfigDedicated
have sounding RS UL config dedicated?
Definition: lte-rrc-sap.h:799
ns3::LteEnbRrc::DoSetNumberOfComponentCarriers
void DoSetNumberOfComponentCarriers(uint16_t numberOfComponentCarriers)
Set number of component carriers.
Definition: lte-enb-rrc.cc:2718
ns3::LteEnbCmacSapProvider::RachConfig::raResponseWindowSize
uint8_t raResponseWindowSize
RA response window size.
Definition: lte-enb-cmac-sap.h:141
NS_LOG_COMPONENT_DEFINE
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Definition: log.h:205
ns3::LteEnbCmacSapUser
Service Access Point (SAP) offered by the MAC to the RRC See Femto Forum MAC Scheduler Interface Spec...
Definition: lte-enb-cmac-sap.h:182
ns3::LtePdcp::Status::rxSn
uint16_t rxSn
RX sequence number.
Definition: lte-pdcp.h:104
ns3::LteRrcSap::MeasObjectToAddMod::measObjectId
uint8_t measObjectId
measure object ID
Definition: lte-rrc-sap.h:452
ns3::LteRrcSap::MeasResults::rsrqResult
uint8_t rsrqResult
RSRQ result.
Definition: lte-rrc-sap.h:682
ns3::EpcEnbS1SapUser::DataRadioBearerSetupRequestParameters::bearer
EpsBearer bearer
the characteristics of the bearer to be setup
Definition: epc-enb-s1-sap.h:130
ns3::LteRrcSap::DrbToAddMod::logicalChannelConfig
LogicalChannelConfig logicalChannelConfig
logical channel config
Definition: lte-rrc-sap.h:241
ns3::LteRrcSap::CellIdentification::dlCarrierFreq
uint32_t dlCarrierFreq
ARFCN - valueEUTRA.
Definition: lte-rrc-sap.h:715
ns3::LteRrcSap::ReportConfigEutra::threshold2
ThresholdEutra threshold2
Threshold for event A5.
Definition: lte-rrc-sap.h:382
ns3::EpsBearerTag::GetBid
uint8_t GetBid(void) const
Get Bearer Id function.
Definition: eps-bearer-tag.cc:106
ns3::LteEnbRrc::m_epsBearerToRlcMapping
enum LteEpsBearerToRlcMapping_t m_epsBearerToRlcMapping
The EpsBearerToRlcMapping attribute.
Definition: lte-enb-rrc.h:1570
ns3::LteRrcSap::MobilityControlInfo::radioResourceConfigCommon
RadioResourceConfigCommon radioResourceConfigCommon
radio resource config common
Definition: lte-rrc-sap.h:566
ns3::LteEnbRrc::m_sib1
std::vector< LteRrcSap::SystemInformationBlockType1 > m_sib1
The System Information Block Type 1 that is currently broadcasted over BCH.
Definition: lte-enb-rrc.h:1529
ns3::LteHandoverManagementSapUser
Service Access Point (SAP) offered by the eNodeB RRC instance to the handover algorithm instance.
Definition: lte-handover-management-sap.h:68
ns3::EpcX2Sap::HandoverRequestAckParams::notAdmittedBearers
std::vector< ErabNotAdmittedItem > notAdmittedBearers
not admitted bearers
Definition: epc-x2-sap.h:253
ns3::LteEnbCmacSapUser::UeConfig::m_rnti
uint16_t m_rnti
UE id within this cell.
Definition: lte-enb-cmac-sap.h:210
ns3::LteEnbRrc::ConnectionSetupTimeout
void ConnectionSetupTimeout(uint16_t rnti)
Method triggered when a UE is expected to complete a connection setup procedure but does not do so in...
Definition: lte-enb-rrc.cc:2330
ns3::LteRrcSap::NonUlConfiguration::antennaInfoCommon
AntennaInfoCommon antennaInfoCommon
2: Physical configuration, general antennaInfoCommon-r10
Definition: lte-rrc-sap.h:743
ns3::EpcX2Sap::UeDataParams::gtpTeid
uint32_t gtpTeid
GTP TEID.
Definition: epc-x2-sap.h:332
ns3::LteRrcSap::MasterInformationBlock
MasterInformationBlock structure.
Definition: lte-rrc-sap.h:588
ns3::LteRrcSap::ReportConfigEutra::EVENT_A1
@ EVENT_A1
Event A1: Serving becomes better than absolute threshold.
Definition: lte-rrc-sap.h:373
ns3::LteRrcSap::RadioResourceConfigDedicated::physicalConfigDedicated
PhysicalConfigDedicated physicalConfigDedicated
physical config dedicated
Definition: lte-rrc-sap.h:291
ns3::UeManager::RecvIdealUeContextRemoveRequest
void RecvIdealUeContextRemoveRequest(uint16_t rnti)
Implement the LteEnbRrcSapProvider::RecvIdealUeContextRemoveRequest interface.
Definition: lte-enb-rrc.cc:582
NS_OBJECT_ENSURE_REGISTERED
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
Definition: object-base.h:45
NS_ASSERT
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file,...
Definition: assert.h:67
ns3::EpcX2Sap::ResourceStatusUpdateParams::cellMeasurementResultList
std::vector< CellMeasurementResultItem > cellMeasurementResultList
cell measurement result list
Definition: epc-x2-sap.h:319
ns3::UeManager::RecvMeasurementReport
void RecvMeasurementReport(LteRrcSap::MeasurementReport msg)
Implement the LteEnbRrcSapProvider::RecvMeasurementReport interface.
Definition: lte-enb-rrc.cc:1134
ns3::LteRrcSap::AsConfig::sourceMeasConfig
MeasConfig sourceMeasConfig
source measure config
Definition: lte-rrc-sap.h:617
ns3::LteRrcSap::MeasurementReport::measResults
MeasResults measResults
measure results
Definition: lte-rrc-sap.h:903
ns3::LteRrcSap::MeasObjectToAddMod::measObjectEutra
MeasObjectEutra measObjectEutra
measure object eutra
Definition: lte-rrc-sap.h:453
ns3::LteRrcSap::RrcConnectionReconfiguration::measConfig
MeasConfig measConfig
measure config
Definition: lte-rrc-sap.h:840
ns3::LteRrcSap::MasterInformationBlock::dlBandwidth
uint16_t dlBandwidth
DL bandwidth.
Definition: lte-rrc-sap.h:589
ns3::EpcX2SapProvider::SendHandoverPreparationFailure
virtual void SendHandoverPreparationFailure(HandoverPreparationFailureParams params)=0
Send handover preparation failure function.
ns3::LteRrcSap::SystemInformationBlockType1::cellSelectionInfo
CellSelectionInfo cellSelectionInfo
cell selection info
Definition: lte-rrc-sap.h:597
ns3::LteEnbRrc::SetS1SapProvider
void SetS1SapProvider(EpcEnbS1SapProvider *s)
Set the S1 SAP Provider.
Definition: lte-enb-rrc.cc:2012
ns3::LteEnbRrc::SetLteFfrRrcSapProvider
void SetLteFfrRrcSapProvider(LteFfrRrcSapProvider *s)
set the FFR SAP this RRC should interact with
Definition: lte-enb-rrc.cc:1943
ns3::LteEnbRrcSapUser::SetupUeParameters
SetupUeParameters structure.
Definition: lte-rrc-sap.h:1086
ns3::MakeTimeChecker
Ptr< const AttributeChecker > MakeTimeChecker(const Time min, const Time max)
Helper to make a Time checker with bounded range.
Definition: time.cc:533
ns3::LteMacSapProvider
Service Access Point (SAP) offered by the MAC to the RLC See Femto Forum MAC Scheduler Interface Spec...
Definition: lte-mac-sap.h:37
ns3::LteRrcSap::RrcConnectionSetupCompleted
RrcConnectionSetupCompleted structure.
Definition: lte-rrc-sap.h:706
ns3::LteRrcSap::ReportConfigToAddMod::reportConfigEutra
ReportConfigEutra reportConfigEutra
report config eutra
Definition: lte-rrc-sap.h:460
ns3::BooleanValue
AttributeValue implementation for Boolean.
Definition: boolean.h:37
ns3::LteRrcSap::AsConfig::sourceSystemInformationBlockType1
SystemInformationBlockType1 sourceSystemInformationBlockType1
source system information block type 1
Definition: lte-rrc-sap.h:621
ns3::LteRrcSap::PhysicalConfigDedicatedSCell::antennaInfo
AntennaInfoDedicated antennaInfo
antenna info dedicated
Definition: lte-rrc-sap.h:788
ns3::EpcX2Sap::ErabToBeSetupItem::erabId
uint16_t erabId
E-RAB ID.
Definition: epc-x2-sap.h:61
ns3::EpcX2Sap::ErabToBeSetupItem::gtpTeid
uint32_t gtpTeid
TEID.
Definition: epc-x2-sap.h:65
ns3::LteRrcSap::MeasObjectEutra::haveCellForWhichToReportCGI
bool haveCellForWhichToReportCGI
have cell for which to report CGI?
Definition: lte-rrc-sap.h:336
ns3::LteRrcSap::MobilityControlInfo::newUeIdentity
uint16_t newUeIdentity
new UE identity
Definition: lte-rrc-sap.h:565
ns3::LteEnbRrc::HandoverLeavingTimeout
void HandoverLeavingTimeout(uint16_t rnti)
Method triggered when a UE is expected to leave a cell for a handover but no feedback is received in ...
Definition: lte-enb-rrc.cc:2363
ns3::TypeId::ATTR_CONSTRUCT
@ ATTR_CONSTRUCT
The attribute can be written at construction-time.
Definition: type-id.h:66
ns3::MakeIntegerAccessor
Ptr< const AttributeAccessor > MakeIntegerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
Definition: integer.h:45
ns3::UeManager::m_sourceCellId
uint16_t m_sourceCellId
source cell ID
Definition: lte-enb-rrc.h:568
ns3::LteRrcSap::RrcConnectionSetup::radioResourceConfigDedicated
RadioResourceConfigDedicated radioResourceConfigDedicated
radio resource config dedicated
Definition: lte-rrc-sap.h:701
ns3::LteRrcSap::RrcConnectionSetup::rrcTransactionIdentifier
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
Definition: lte-rrc-sap.h:700
ns3::LteRrcSap::CarrierBandwidthEutra::dlBandwidth
uint16_t dlBandwidth
DL bandwidth.
Definition: lte-rrc-sap.h:546
ns3::LteRrcSap::ReportConfigToAddMod
ReportConfigToAddMod structure.
Definition: lte-rrc-sap.h:458
ns3::LteEnbCmacSapProvider::LcInfo::lcId
uint8_t lcId
logical channel identifier
Definition: lte-enb-cmac-sap.h:75
ns3::LteRrcSap::MeasObjectEutra::neighCellConfig
uint8_t neighCellConfig
neighbor cell config
Definition: lte-rrc-sap.h:330
ns3::LteEnbRrc::IsRandomAccessCompleted
bool IsRandomAccessCompleted(uint16_t rnti)
Is random access completed function.
Definition: lte-enb-rrc.cc:3086
ns3::LteRrcSap::MobilityControlInfo::haveCarrierBandwidth
bool haveCarrierBandwidth
have carrier bandwidth?
Definition: lte-rrc-sap.h:563
ns3::LteRrcSap::MeasObjectEutra::offsetFreq
int8_t offsetFreq
offset frequency
Definition: lte-rrc-sap.h:331
ns3::LteRrcSap::MobilityControlInfo::haveRachConfigDedicated
bool haveRachConfigDedicated
Have RACH config dedicated?
Definition: lte-rrc-sap.h:567
ns3::EpcX2SapProvider::SendLoadInformation
virtual void SendLoadInformation(LoadInformationParams params)=0
Send load information function.
ns3::EpcX2Sap::HandoverRequestParams::targetCellId
uint16_t targetCellId
target cell ID
Definition: epc-x2-sap.h:233
ns3::UeManager::m_drbPdcpSapUser
LtePdcpSapUser * m_drbPdcpSapUser
DRB PDCP SAP user.
Definition: lte-enb-rrc.h:548
ns3::LteRrcSap::RachConfigCommon::txFailParam
TxFailParam txFailParam
txFailParams
Definition: lte-rrc-sap.h:268
ns3::LteEnbRrc::GetLogicalChannelPriority
uint8_t GetLogicalChannelPriority(EpsBearer bearer)
Definition: lte-enb-rrc.cc:3046
ns3::EpcEnbS1SapUser::InitialContextSetupRequestParameters
Parameters passed to InitialContextSetupRequest ()
Definition: epc-enb-s1-sap.h:112
ns3::LteEnbRrc::MemberLteAnrSapUser< LteEnbRrc >
friend class MemberLteAnrSapUser< LteEnbRrc >
allow MemberLteAnrSapUser<LteEnbRrc> class friend access
Definition: lte-enb-rrc.h:642
ns3::Packet::GetSize
uint32_t GetSize(void) const
Returns the the size in bytes of the packet (including the zero-filled initial payload).
Definition: packet.h:852
ns3::LteEnbRrc::DoAddUeMeasReportConfigForComponentCarrier
uint8_t DoAddUeMeasReportConfigForComponentCarrier(LteRrcSap::ReportConfigEutra reportConfig)
Add UE measure report config for component carrier function.
Definition: lte-enb-rrc.cc:2709
ns3::LteRrcSap::AsConfig::sourceRadioResourceConfig
RadioResourceConfigDedicated sourceRadioResourceConfig
source radio resource config
Definition: lte-rrc-sap.h:618
ns3::EpcEnbS1SapProvider::PathSwitchRequestParameters::mmeUeS1Id
uint32_t mmeUeS1Id
mmeUeS1Id in practice, we use the IMSI
Definition: epc-enb-s1-sap.h:71
ns3::LteRrcSap::CarrierFreqEutra::ulCarrierFreq
uint32_t ulCarrierFreq
UL carrier frequency.
Definition: lte-rrc-sap.h:540
ns3::LteEnbRrcSapUser::EncodeHandoverCommand
virtual Ptr< Packet > EncodeHandoverCommand(RrcConnectionReconfiguration msg)=0
Encode handover command.
ns3::Callback
Callback template class.
Definition: callback.h:1279
ns3::EpcX2Sap::HandoverRequestParams::mmeUeS1apId
uint32_t mmeUeS1apId
MME UE S1 AP ID.
Definition: epc-x2-sap.h:234
ns3::UeManager::Lcid2Bid
uint8_t Lcid2Bid(uint8_t lcid)
Definition: lte-enb-rrc.cc:1441
ns3::EpcEnbS1SapProvider::DoSendReleaseIndication
virtual void DoSendReleaseIndication(uint64_t imsi, uint16_t rnti, uint8_t bearerId)=0
Triggers epc-enb-application to send ERAB Release Indication message towards MME.
ns3::LteRlcAm::GetTypeId
static TypeId GetTypeId(void)
Get the type ID.
Definition: lte-rlc-am.cc:88
ns3::UeManager::Bid2Lcid
uint8_t Bid2Lcid(uint8_t bid)
Definition: lte-enb-rrc.cc:1448
ns3::Simulator::Now
static Time Now(void)
Return the current simulation virtual time.
Definition: simulator.cc:195
ns3::LteRrcSap::RadioResourceConfigCommonSCell::haveNonUlConfiguration
bool haveNonUlConfiguration
have non UL configuration?
Definition: lte-rrc-sap.h:806
ns3::LteEnbRrc::m_connectionReconfigurationTrace
TracedCallback< uint64_t, uint16_t, uint16_t > m_connectionReconfigurationTrace
The ConnectionReconfiguration trace source.
Definition: lte-enb-rrc.h:1661
ns3
Every class exported by the ns3 library is enclosed in the ns3 namespace.
ns3::LteEnbRrc::DoRecvLoadInformation
void DoRecvLoadInformation(EpcX2SapUser::LoadInformationParams params)
Receive load information function.
Definition: lte-enb-rrc.cc:2628
ns3::UeManager::m_srb1
Ptr< LteSignalingRadioBearerInfo > m_srb1
The Srb1 attribute.
Definition: lte-enb-rrc.h:524
ns3::UeManager::GetImsi
uint64_t GetImsi(void) const
Definition: lte-enb-rrc.cc:1247
ns3::EpcX2Sap::UeDataParams::ueData
Ptr< Packet > ueData
UE data.
Definition: epc-x2-sap.h:333
ns3::LteRrcSap::DrbToAddMod::epsBearerIdentity
uint8_t epsBearerIdentity
EPS bearer identity.
Definition: lte-rrc-sap.h:237
ns3::LteRrcSap::MobilityControlInfo::targetPhysCellId
uint16_t targetPhysCellId
target Phy cell ID
Definition: lte-rrc-sap.h:560
ns3::LteRrcSap::RachConfigCommon
RachConfigCommon structure.
Definition: lte-rrc-sap.h:265
ns3::UeManager::SetPdschConfigDedicated
void SetPdschConfigDedicated(LteRrcSap::PdschConfigDedicated pdschConfigDedicated)
Configure PdschConfigDedicated (i.e.
Definition: lte-enb-rrc.cc:1293
ns3::LteEnbRrc::SendHandoverRequest
void SendHandoverRequest(uint16_t rnti, uint16_t cellId)
Send a HandoverRequest through the X2 SAP interface.
Definition: lte-enb-rrc.cc:2374
ns3::EpsBearerTag::SetRnti
void SetRnti(uint16_t rnti)
Set the RNTI to the given value.
Definition: eps-bearer-tag.cc:68
ns3::UeManager::State
State
The state of the UeManager at the eNB RRC.
Definition: lte-enb-rrc.h:87
ns3::LteEnbRrc::m_ueMeasConfig
LteRrcSap::MeasConfig m_ueMeasConfig
List of measurement configuration which are active in every UE attached to this eNodeB instance.
Definition: lte-enb-rrc.h:1540
ns3::UeManager::m_lastRrcTransactionIdentifier
uint8_t m_lastRrcTransactionIdentifier
last RRC transaction identifier
Definition: lte-enb-rrc.h:540
ns3::UeManager::Lcid2Drbid
uint8_t Lcid2Drbid(uint8_t lcid)
Definition: lte-enb-rrc.cc:1429
ns3::LteEnbRrc::DoRecvRrcConnectionRequest
void DoRecvRrcConnectionRequest(uint16_t rnti, LteRrcSap::RrcConnectionRequest msg)
Part of the RRC protocol.
Definition: lte-enb-rrc.cc:2393
ns3::LteRrcSap::SystemInformation
SystemInformation structure.
Definition: lte-rrc-sap.h:609
ns3::LteRrcSap::SrbToAddMod::logicalChannelConfig
LogicalChannelConfig logicalChannelConfig
logical channel config
Definition: lte-rrc-sap.h:231
ns3::LteEnbRrc::m_anrSapUser
LteAnrSapUser * m_anrSapUser
Receive API calls from the ANR instance.
Definition: lte-enb-rrc.h:1488
ns3::IntegerValue
Hold a signed integer type.
Definition: integer.h:44
ns3::MakeEnumChecker
Ptr< const AttributeChecker > MakeEnumChecker(int v, std::string n, Ts... args)
Make an EnumChecker pre-configured with a set of allowed values by name.
Definition: enum.h:161
ns3::ToString
static const std::string & ToString(EpcUeNas::State s)
Definition: epc-ue-nas.cc:50
ns3::UeManager::Drbid2Bid
uint8_t Drbid2Bid(uint8_t drbid)
Definition: lte-enb-rrc.cc:1454
ns3::EpcX2Sap::UeContextReleaseParams::oldEnbUeX2apId
uint16_t oldEnbUeX2apId
old ENB UE X2 AP ID
Definition: epc-x2-sap.h:292
ns3::UeManager::NUM_STATES
@ NUM_STATES
Definition: lte-enb-rrc.h:99
ns3::UeManager::SwitchToState
void SwitchToState(State s)
Switch the UeManager to the given state.
Definition: lte-enb-rrc.cc:1467
ns3::LteCcmRrcSapProvider
Service Access Point (SAP) offered by the Component Carrier Manager (CCM) instance to the eNodeB RRC ...
Definition: lte-ccm-rrc-sap.h:47
ns3::UeManager::m_handoverJoiningTimeout
EventId m_handoverJoiningTimeout
Time limit before a handover joining timeout occurs.
Definition: lte-enb-rrc.h:598
ns3::LteEnbRrc::m_anrMeasIds
std::set< uint8_t > m_anrMeasIds
List of measurement identities which are intended for ANR purpose.
Definition: lte-enb-rrc.h:1545
ns3::LteEnbRrc::DoRecvHandoverRequestAck
void DoRecvHandoverRequestAck(EpcX2SapUser::HandoverRequestAckParams params)
Receive handover request acknowledge function.
Definition: lte-enb-rrc.cc:2562
ns3::EpcEnbS1SapUser::DataRadioBearerSetupRequestParameters
Parameters passed to DataRadioBearerSetupRequest ()
Definition: epc-enb-s1-sap.h:127
ns3::MakeObjectMapAccessor
Ptr< const AttributeAccessor > MakeObjectMapAccessor(U T::*memberVariable)
MakeAccessorHelper implementation for ObjectVector.
Definition: object-map.h:80
ns3::LteRrcSap::RrcConnectionReconfiguration::radioResourceConfigDedicated
RadioResourceConfigDedicated radioResourceConfigDedicated
radio resource config dedicated
Definition: lte-rrc-sap.h:844
ns3::LteEnbRrc::m_handoverManagementSapProvider
LteHandoverManagementSapProvider * m_handoverManagementSapProvider
Interface to the handover algorithm instance.
Definition: lte-enb-rrc.h:1480
ns3::EpcX2Sap::SnStatusTransferParams::oldEnbUeX2apId
uint16_t oldEnbUeX2apId
old ENB UE X2 AP ID
Definition: epc-x2-sap.h:278
ns3::EpcEnbS1SapProvider::UeContextRelease
virtual void UeContextRelease(uint16_t rnti)=0
release UE context at the S1 Application of the source eNB after reception of the UE CONTEXT RELEASE ...
ns3::LteEnbRrcSapProvider::CompleteSetupUeParameters::srb1SapUser
LtePdcpSapUser * srb1SapUser
SRB1 SAP user.
Definition: lte-rrc-sap.h:1207
ns3::LteEnbRrc::DoSendLoadInformation
void DoSendLoadInformation(EpcX2Sap::LoadInformationParams params)
Send load information function.
Definition: lte-enb-rrc.cc:2792
ns3::LteRrcSap::SrbToAddMod::srbIdentity
uint8_t srbIdentity
SB identity.
Definition: lte-rrc-sap.h:230
ns3::LteEnbRrc::SetLteEnbCphySapProvider
void SetLteEnbCphySapProvider(LteEnbCphySapProvider *s)
set the CPHY SAP this RRC should use to interact with the PHY
Definition: lte-enb-rrc.cc:2025
ns3::LteRrcSap::RadioResourceConfigCommonSCell::ulConfiguration
UlConfiguration ulConfiguration
UL configuration.
Definition: lte-rrc-sap.h:809
ns3::Object::GetObject
Ptr< T > GetObject(void) const
Get a pointer to the requested aggregated Object.
Definition: object.h:470
ns3::LteRrcSap::MeasIdToAddMod
MeasIdToAddMod structure.
Definition: lte-rrc-sap.h:465
ns3::LteEnbRrc::m_ueMap
std::map< uint16_t, Ptr< UeManager > > m_ueMap
The UeMap attribute.
Definition: lte-enb-rrc.h:1534
ns3::LteEnbRrc::m_rrcTimeoutTrace
TracedCallback< uint64_t, uint16_t, uint16_t, std::string > m_rrcTimeoutTrace
The 'TimerExpiry' Trace source.
Definition: lte-enb-rrc.h:1688
ns3::LteRrcSap::SCellToAddMod::haveRadioResourceConfigDedicatedSCell
bool haveRadioResourceConfigDedicatedSCell
have radio resource config dedicated SCell?
Definition: lte-rrc-sap.h:824
ns3::LteEnbRrc::SetLteCcmRrcSapProvider
void SetLteCcmRrcSapProvider(LteCcmRrcSapProvider *s)
set the Component Carrier Management SAP this RRC should interact with
Definition: lte-enb-rrc.cc:1915
ns3::UeManager::BuildRrcConnectionReconfiguration
LteRrcSap::RrcConnectionReconfiguration BuildRrcConnectionReconfiguration()
Definition: lte-enb-rrc.cc:1361
ns3::LteRrcSap::PdschConfigDedicated::pa
uint8_t pa
P_A value.
Definition: lte-rrc-sap.h:171
ns3::LteRlcSm::GetTypeId
static TypeId GetTypeId(void)
Get the type ID.
Definition: lte-rlc.cc:191
ns3::LteEnbCmacSapProvider::AllocateNcRaPreambleReturnValue::raPreambleId
uint8_t raPreambleId
random access preamble id
Definition: lte-enb-cmac-sap.h:158
ns3::UeManager::SendUeContextRelease
void SendUeContextRelease()
send the UE CONTEXT RELEASE X2 message to the source eNB, thus successfully terminating an X2 handove...
Definition: lte-enb-rrc.cc:860
ns3::LteRrcSap::PhysicalConfigDedicatedSCell::haveNonUlConfiguration
bool haveNonUlConfiguration
have non UL configuration?
Definition: lte-rrc-sap.h:786
ns3::LteRrcSap::MeasResults::rsrpResult
uint8_t rsrpResult
RSRP result.
Definition: lte-rrc-sap.h:681
ns3::LteEnbRrc::DoRecvRrcConnectionReestablishmentRequest
void DoRecvRrcConnectionReestablishmentRequest(uint16_t rnti, LteRrcSap::RrcConnectionReestablishmentRequest msg)
Part of the RRC protocol.
Definition: lte-enb-rrc.cc:2414
ns3::LteEnbRrc::m_ueSrsConfigurationIndexSet
std::set< uint16_t > m_ueSrsConfigurationIndexSet
UE SRS configuration index set.
Definition: lte-enb-rrc.h:1580
ns3::LteEnbRrc::GetS1SapUser
EpcEnbS1SapUser * GetS1SapUser()
Definition: lte-enb-rrc.cc:2019
ns3::LteRrcSap::RrcConnectionReestablishment::radioResourceConfigDedicated
RadioResourceConfigDedicated radioResourceConfigDedicated
radio resource config dedicated
Definition: lte-rrc-sap.h:868
ns3::UeManager::RecvRrcConnectionReconfigurationCompleted
void RecvRrcConnectionReconfigurationCompleted(LteRrcSap::RrcConnectionReconfigurationCompleted msg)
Implement the LteEnbRrcSapProvider::RecvRrcConnectionReconfigurationCompleted interface.
Definition: lte-enb-rrc.cc:1021
NS_LOG_WARN
#define NS_LOG_WARN(msg)
Use NS_LOG to output a message of level LOG_WARN.
Definition: log.h:265
ns3::LteEnbRrcSapUser::SendSystemInformation
virtual void SendSystemInformation(uint16_t cellId, SystemInformation msg)=0
Send a SystemInformation message to all attached UEs during a system information acquisition procedur...
ns3::LteEnbRrc::MemberLteHandoverManagementSapUser< LteEnbRrc >
friend class MemberLteHandoverManagementSapUser< LteEnbRrc >
allow MemberLteHandoverManagementSapUser<LteEnbRrc> class friend access
Definition: lte-enb-rrc.h:640
ns3::g_srsCiLow
static const uint16_t g_srsCiLow[SRS_ENTRIES]
The lower bound (inclusive) of the SRS configuration indices (ISRS) which use the corresponding SRS p...
Definition: lte-enb-rrc.cc:2930
ns3::LteEnbRrc::ConnectionRequestTimeout
void ConnectionRequestTimeout(uint16_t rnti)
Method triggered when a UE is expected to request for connection but does not do so in a reasonable t...
Definition: lte-enb-rrc.cc:2319
ns3::LteRrcSap::FreqInfo::ulCarrierFreq
uint32_t ulCarrierFreq
UL carrier frequency.
Definition: lte-rrc-sap.h:90
ns3::UeManager::Bid2Drbid
uint8_t Bid2Drbid(uint8_t bid)
Definition: lte-enb-rrc.cc:1460
ns3::LteEnbRrc::HasUeManager
bool HasUeManager(uint16_t rnti) const
Definition: lte-enb-rrc.cc:2068
ns3::LteRrcSap::ReportConfigEutra::purpose
enum ns3::LteRrcSap::ReportConfigEutra::report purpose
purpose
ns3::LteEnbRrc::m_admitHandoverRequest
bool m_admitHandoverRequest
The AdmitHandoverRequest attribute.
Definition: lte-enb-rrc.h:1594
ns3::LteRrcSap::MeasResults::haveScellsMeas
bool haveScellsMeas
has SCells measure
Definition: lte-rrc-sap.h:685
ns3::LtePdcpSapProvider::TransmitPdcpSduParameters::pdcpSdu
Ptr< Packet > pdcpSdu
the RRC PDU
Definition: lte-pdcp-sap.h:45
ns3::LteRrcSap::RlcConfig::AM
@ AM
Definition: lte-rrc-sap.h:100
ns3::Ipv4Address
Ipv4 addresses are stored in host order in this class.
Definition: ipv4-address.h:41
ns3::LteEnbRrc::DoDispose
virtual void DoDispose(void)
Destructor implementation.
Definition: lte-enb-rrc.cc:1654
ns3::EpcX2Sap::SnStatusTransferParams::erabsSubjectToStatusTransferList
std::vector< ErabsSubjectToStatusTransferItem > erabsSubjectToStatusTransferList
ERABs subject to status transfer list.
Definition: epc-x2-sap.h:282
ns3::LteEnbRrc::m_connectionSetupTimeoutDuration
Time m_connectionSetupTimeoutDuration
The ConnectionSetupTimeoutDuration attribute.
Definition: lte-enb-rrc.h:1625
ns3::EpcX2Sap::HandoverRequestAckParams::oldEnbUeX2apId
uint16_t oldEnbUeX2apId
old ENB UE X2 AP ID
Definition: epc-x2-sap.h:248
ns3::LteRrcSap::MeasConfig::quantityConfig
QuantityConfig quantityConfig
quantity config
Definition: lte-rrc-sap.h:527
ns3::LteRrcSap::MobilityControlInfo::carrierBandwidth
CarrierBandwidthEutra carrierBandwidth
carrier bandwidth
Definition: lte-rrc-sap.h:564
ns3::PointerValue
Hold objects of type Ptr<T>.
Definition: pointer.h:37
ns3::UeManager::m_packetBuffer
std::list< std::pair< uint8_t, Ptr< Packet > > > m_packetBuffer
Packet buffer for when UE is doing the handover.
Definition: lte-enb-rrc.h:623
ns3::LteRrcSap::RrcConnectionReconfigurationCompleted
RrcConnectionReconfigurationCompleted structure.
Definition: lte-rrc-sap.h:852
ns3::LteEnbRrc::ConnectionRejectedTimeout
void ConnectionRejectedTimeout(uint16_t rnti)
Method triggered a while after sending RRC Connection Rejected.
Definition: lte-enb-rrc.cc:2341
ns3::LteEnbCmacSapProvider::UeConfig::m_rnti
uint16_t m_rnti
UE id within this cell.
Definition: lte-enb-cmac-sap.h:118
ns3::LteRrcSap::ThresholdEutra::choice
enum ns3::LteRrcSap::ThresholdEutra::@0 choice
Threshold enumeration.
ns3::LteRrcSap::MasterInformationBlock::systemFrameNumber
uint16_t systemFrameNumber
system frame number
Definition: lte-rrc-sap.h:590
ns3::EpcX2Sap::HandoverRequestAckParams::rrcContext
Ptr< Packet > rrcContext
RRC context.
Definition: epc-x2-sap.h:254
ns3::LteEnbCmacSapUser::UeConfig::m_transmissionMode
uint8_t m_transmissionMode
Transmission mode 1..7
Definition: lte-enb-cmac-sap.h:214
ns3::LteRrcSap::RrcConnectionReject
RrcConnectionReject structure.
Definition: lte-rrc-sap.h:890
ns3::ObjectPtrContainerValue
Container for a set of ns3::Object pointers.
Definition: object-ptr-container.h:46
ns3::LteRrcSap::HandoverPreparationInfo
HandoverPreparationInfo structure.
Definition: lte-rrc-sap.h:896
ns3::TypeId::ATTR_GET
@ ATTR_GET
The attribute can be read.
Definition: type-id.h:64
ns3::LteEnbRrc::SetCellId
void SetCellId(uint16_t m_cellId)
set the cell id of this eNB
Definition: lte-enb-rrc.cc:2262
ns3::UeManager::m_srb0
Ptr< LteSignalingRadioBearerInfo > m_srb0
The Srb0 attribute.
Definition: lte-enb-rrc.h:520
ns3::LteRrcSap::ReportConfigEutra::threshold1
ThresholdEutra threshold1
Threshold for event A1, A2, A4, and A5.
Definition: lte-rrc-sap.h:381
ns3::UeManager::m_needPhyMacConfiguration
bool m_needPhyMacConfiguration
need Phy MAC configuration
Definition: lte-enb-rrc.h:571
ns3::EpcX2Sap::UeContextReleaseParams
Parameters of the UE CONTEXT RELEASE message.
Definition: epc-x2-sap.h:291
ns3::LteRrcSap::PrachConfigSCell::index
uint16_t index
the index
Definition: lte-rrc-sap.h:733
ns3::LteEnbRrc::SendData
bool SendData(Ptr< Packet > p)
Enqueue an IP data packet on the proper bearer for downlink transmission.
Definition: lte-enb-rrc.cc:2299
ns3::LteEnbRrc::DoTriggerHandover
void DoTriggerHandover(uint16_t rnti, uint16_t targetCellId)
Trigger handover function.
Definition: lte-enb-rrc.cc:2724
ns3::LteEnbCmacSapProvider::LcInfo
Logical Channel information to be passed to CmacSapProvider::ConfigureLc.
Definition: lte-enb-cmac-sap.h:73
ns3::EpcX2SapProvider::SendHandoverRequestAck
virtual void SendHandoverRequestAck(HandoverRequestAckParams params)=0
Send handover request ack function.
ns3::EpcX2Sap::HandoverRequestParams
Parameters of the HANDOVER REQUEST message.
Definition: epc-x2-sap.h:229
ns3::LteRrcSap::DrbToAddMod
DrbToAddMod structure.
Definition: lte-rrc-sap.h:236
ns3::EpcEnbS1SapProvider::PathSwitchRequestParameters::cellId
uint16_t cellId
cell ID
Definition: epc-enb-s1-sap.h:70
ns3::LteRrcSap::RrcConnectionSetup
RrcConnectionSetup structure.
Definition: lte-rrc-sap.h:699
ns3::LteRrcSap::ReportConfigEutra::RSRP
@ RSRP
Reference Signal Received Power.
Definition: lte-rrc-sap.h:406
ns3::EnbRrcMemberLteEnbCmacSapUser::m_rrc
LteEnbRrc * m_rrc
the RRC
Definition: lte-enb-rrc.cc:79
ns3::LteEnbRrc::m_cmacSapUser
std::vector< LteEnbCmacSapUser * > m_cmacSapUser
Receive API calls from the eNodeB MAC instance.
Definition: lte-enb-rrc.h:1473
ns3::LteEnbRrc::RLC_SM_ALWAYS
@ RLC_SM_ALWAYS
Definition: lte-enb-rrc.h:1040
ns3::LtePdcpSapUser::ReceivePdcpSduParameters
Parameters for LtePdcpSapUser::ReceivePdcpSdu.
Definition: lte-pdcp-sap.h:78
ns3::LteEnbRrc::m_x2uTeidInfoMap
std::map< uint32_t, X2uTeidInfo > m_x2uTeidInfoMap
TEID, RNTI, DRBID.
Definition: lte-enb-rrc.h:1559
ns3::LteEnbRrc::ConfigureCell
void ConfigureCell(std::map< uint8_t, Ptr< ComponentCarrierBaseStation > > ccPhyConf)
Configure cell-specific parameters.
Definition: lte-enb-rrc.cc:2174
ns3::UeManager::SetSrsConfigurationIndex
void SetSrsConfigurationIndex(uint16_t srsConfIndex)
Set the SRS configuration index and do the necessary reconfiguration.
Definition: lte-enb-rrc.cc:1265
ns3::EpcX2Sap::HandoverPreparationFailureParams::targetCellId
uint16_t targetCellId
target cell ID
Definition: epc-x2-sap.h:266
ns3::EpcX2Sap::ErabToBeSetupItem::transportLayerAddress
Ipv4Address transportLayerAddress
transport layer address
Definition: epc-x2-sap.h:64
ns3::LteEnbRrc::X2uTeidInfo
X2uTeidInfo structure.
Definition: lte-enb-rrc.h:1553
ns3::LteRrcSap::PhysicalConfigDedicated::havePdschConfigDedicated
bool havePdschConfigDedicated
have PDSCH config dedicated?
Definition: lte-rrc-sap.h:222
ns3::LteEnbRrc::m_carriersConfigured
bool m_carriersConfigured
are carriers configured
Definition: lte-enb-rrc.h:1692
ns3::Simulator::Schedule
static EventId Schedule(Time const &delay, FUNC f, Ts &&... args)
Schedule an event to expire after delay.
Definition: simulator.h:557
ns3::LteRrcSap::SoundingRsUlConfigCommon::srsBandwidthConfig
uint16_t srsBandwidthConfig
SRS bandwidth config.
Definition: lte-rrc-sap.h:124
ns3::MakeBooleanAccessor
Ptr< const AttributeAccessor > MakeBooleanAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
Definition: boolean.h:85
ns3::LteRrcSap::PhysicalConfigDedicated::antennaInfo
AntennaInfoDedicated antennaInfo
antenna info
Definition: lte-rrc-sap.h:221
ns3::UeManager::m_pendingStartDataRadioBearers
bool m_pendingStartDataRadioBearers
Pending start data radio bearers.
Definition: lte-enb-rrc.h:611
ns3::EpcEnbS1SapUser::DataRadioBearerSetupRequestParameters::gtpTeid
uint32_t gtpTeid
S1-bearer GTP tunnel endpoint identifier, see 36.423 9.2.1.
Definition: epc-enb-s1-sap.h:132
ns3::LtePdcpSapUser::ReceivePdcpSduParameters::lcid
uint8_t lcid
the logical channel id corresponding to the sending RLC instance
Definition: lte-pdcp-sap.h:81
ns3::UeManager::m_componentCarrierId
uint8_t m_componentCarrierId
ID of the primary CC for this UE.
Definition: lte-enb-rrc.h:538
ns3::LteEnbRrc::MemberLteEnbRrcSapProvider< LteEnbRrc >
friend class MemberLteEnbRrcSapProvider< LteEnbRrc >
allow MemberLteEnbRrcSapProvider<LteEnbRrc> class friend access
Definition: lte-enb-rrc.h:646
ns3::LteRrcSap::RadioResourceConfigCommonSib::rachConfigCommon
RachConfigCommon rachConfigCommon
RACH config common.
Definition: lte-rrc-sap.h:280
ns3::UeManager::DoReceivePdcpSdu
void DoReceivePdcpSdu(LtePdcpSapUser::ReceivePdcpSduParameters params)
Receive PDCP SDU function.
Definition: lte-enb-rrc.cc:1225
ns3::LteRrcSap::MeasObjectEutra::presenceAntennaPort1
bool presenceAntennaPort1
antenna port 1 present?
Definition: lte-rrc-sap.h:329
ns3::UeManager::RecvHandoverRequestAck
void RecvHandoverRequestAck(EpcX2SapUser::HandoverRequestAckParams params)
take the necessary actions in response to the reception of an X2 HANDOVER REQUEST ACK message
Definition: lte-enb-rrc.cc:692
ns3::LteRrcSap::RachConfigCommon::raSupervisionInfo
RaSupervisionInfo raSupervisionInfo
RA supervision info.
Definition: lte-rrc-sap.h:267
ns3::LteEnbRrc::DoRecvUeData
void DoRecvUeData(EpcX2SapUser::UeDataParams params)
Receive UE data function.
Definition: lte-enb-rrc.cc:2653
ns3::TypeId::SetParent
TypeId SetParent(TypeId tid)
Set the parent TypeId.
Definition: type-id.cc:923
ns3::EpcX2Sap::ErabAdmittedItem
E-RABs admitted item as it is used in the HANDOVER REQUEST ACKNOWLEDGE message.
Definition: epc-x2-sap.h:76
ns3::EnumValue
Hold variables of type enum.
Definition: enum.h:55
ns3::LteEnbRrc::m_handoverStartTrace
TracedCallback< uint64_t, uint16_t, uint16_t, uint16_t > m_handoverStartTrace
The HandoverStart trace source.
Definition: lte-enb-rrc.h:1666
ns3::LteEnbRrc::m_numberOfComponentCarriers
uint16_t m_numberOfComponentCarriers
number of component carriers
Definition: lte-enb-rrc.h:1690
ns3::LteEnbCmacSapProvider::RachConfig
struct defining the RACH configuration of the MAC
Definition: lte-enb-cmac-sap.h:138
ns3::LteEnbRrc::GetLteCcmRrcSapUser
LteCcmRrcSapUser * GetLteCcmRrcSapUser()
Get the Component Carrier Management SAP offered by this RRC.
Definition: lte-enb-rrc.cc:1922
ns3::LteEnbRrc::MemberEpcEnbS1SapUser< LteEnbRrc >
friend class MemberEpcEnbS1SapUser< LteEnbRrc >
allow MemberLteEnbRrcSapProvider<LteEnbRrc> class friend access
Definition: lte-enb-rrc.h:648
ns3::LteEnbCmacSapProvider::LcInfo::lcGroup
uint8_t lcGroup
logical channel group
Definition: lte-enb-cmac-sap.h:76
ns3::LteHandoverManagementSapProvider
Service Access Point (SAP) offered by the handover algorithm instance to the eNodeB RRC instance.
Definition: lte-handover-management-sap.h:39
ns3::LteRlc::SetRnti
void SetRnti(uint16_t rnti)
Definition: lte-rlc.cc:133
ns3::LteEnbRrc::m_dlBandwidth
uint16_t m_dlBandwidth
Downlink transmission bandwidth configuration in number of Resource Blocks.
Definition: lte-enb-rrc.h:1522
ns3::UeManager::INITIAL_RANDOM_ACCESS
@ INITIAL_RANDOM_ACCESS
Definition: lte-enb-rrc.h:88
ns3::MakeTraceSourceAccessor
Ptr< const TraceSourceAccessor > MakeTraceSourceAccessor(T a)
Create a TraceSourceAccessor which will control access to the underlying trace source.
Definition: trace-source-accessor.h:202
ns3::UeManager::SendData
void SendData(uint8_t bid, Ptr< Packet > p)
Send a data packet over the appropriate Data Radio Bearer.
Definition: lte-enb-rrc.cc:790
ns3::LteCcmRrcSapUser
Service Access Point (SAP) offered by the eNodeB RRC instance to the component carrier manager (CCM) ...
Definition: lte-ccm-rrc-sap.h:152
ns3::EpcX2Sap::SnStatusTransferParams::newEnbUeX2apId
uint16_t newEnbUeX2apId
new ENB UE X2 AP ID
Definition: epc-x2-sap.h:279
ns3::LteEnbRrc::m_lastAllocatedRnti
uint16_t m_lastAllocatedRnti
Last allocated RNTI.
Definition: lte-enb-rrc.h:1526
ns3::LteEnbRrc::DoAddUeMeasReportConfigForFfr
uint8_t DoAddUeMeasReportConfigForFfr(LteRrcSap::ReportConfigEutra reportConfig)
Add UE measure report config for FFR function.
Definition: lte-enb-rrc.cc:2775
ns3::LteRrcSap::MeasConfig::measIdToAddModList
std::list< MeasIdToAddMod > measIdToAddModList
measure ID to add mod list
Definition: lte-rrc-sap.h:525
ns3::UeManager::m_drbsToBeStarted
std::list< uint8_t > m_drbsToBeStarted
DRBS to be started.
Definition: lte-enb-rrc.h:570
ns3::LteRrcSap::SCellToAddMod::radioResourceConfigCommonSCell
RadioResourceConfigCommonSCell radioResourceConfigCommonSCell
radio resource config common SCell
Definition: lte-rrc-sap.h:823
ns3::LteRrcSap::UlConfiguration::ulPowerControlCommonSCell
UlPowerControlCommonSCell ulPowerControlCommonSCell
3GPP TS 36.331 v.11.10 R11 pag.223
Definition: lte-rrc-sap.h:756
ns3::LteRrcSap::RrcConnectionReconfiguration::rrcTransactionIdentifier
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
Definition: lte-rrc-sap.h:838
ns3::UeManager::GetRnti
uint16_t GetRnti(void) const
Definition: lte-enb-rrc.cc:1241
ns3::LteEnbRrc::RemoveUe
void RemoveUe(uint16_t rnti)
remove a UE from the cell
Definition: lte-enb-rrc.cc:2829
ns3::EpcX2Sap::HandoverRequestParams::ueAggregateMaxBitRateUplink
uint64_t ueAggregateMaxBitRateUplink
UE aggregrate max bit rate uplink.
Definition: epc-x2-sap.h:236
ns3::LteRrcSap::ReportConfigEutra::reportQuantity
enum ns3::LteRrcSap::ReportConfigEutra::@4 reportQuantity
Report type enumeration.
ns3::UeManager::RecordDataRadioBearersToBeStarted
void RecordDataRadioBearersToBeStarted()
Start all configured data radio bearers.
Definition: lte-enb-rrc.cc:500
ns3::EpcEnbS1SapProvider
This class implements the Service Access Point (SAP) between the LteEnbRrc and the EpcEnbApplication.
Definition: epc-enb-s1-sap.h:39
ns3::LteRrcSap::UlConfiguration::ulFreqInfo
FreqInfo ulFreqInfo
UL frequency info.
Definition: lte-rrc-sap.h:755
ns3::LteEnbCmacSapProvider::LcInfo::mbrUl
uint64_t mbrUl
maximum bitrate in uplink
Definition: lte-enb-cmac-sap.h:79
ns3::UeManager::m_imsi
uint64_t m_imsi
International Mobile Subscriber Identity assigned to this UE.
Definition: lte-enb-rrc.h:534
ns3::UeManager::DoDispose
virtual void DoDispose()
Destructor implementation.
Definition: lte-enb-rrc.cc:317
ns3::LteRlc::GetLteMacSapUser
LteMacSapUser * GetLteMacSapUser()
Definition: lte-rlc.cc:168
ns3::UeManager::CompleteSetupUe
void CompleteSetupUe(LteEnbRrcSapProvider::CompleteSetupUeParameters params)
Implement the LteEnbRrcSapProvider::CompleteSetupUe interface.
Definition: lte-enb-rrc.cc:932
ns3::LteEnbRrc::AddUeMeasReportConfig
uint8_t AddUeMeasReportConfig(LteRrcSap::ReportConfigEutra config)
Add a new UE measurement reporting configuration.
Definition: lte-enb-rrc.cc:2086
ns3::LteEnbRrcSapProvider::CompleteSetupUeParameters
CompleteSetupUeParameters structure.
Definition: lte-rrc-sap.h:1205
ns3::LteRlcAm
LTE RLC Acknowledged Mode (AM), see 3GPP TS 36.322.
Definition: lte-rlc-am.h:37
ns3::EpcX2Sap::ErabsSubjectToStatusTransferItem::dlPdcpSn
uint16_t dlPdcpSn
DL PDCP SN.
Definition: epc-x2-sap.h:107
ns3::g_srsPeriodicity
static const uint16_t g_srsPeriodicity[SRS_ENTRIES]
Sounding Reference Symbol (SRS) periodicity (TSRS) in milliseconds.
Definition: lte-enb-rrc.cc:2924
ns3::EpcX2Sap::HandoverPreparationFailureParams
Parameters of the HANDOVER PREPARATION FAILURE message.
Definition: epc-x2-sap.h:263
ns3::EpcX2Sap::LoadInformationParams::cellInformationList
std::vector< CellInformationItem > cellInformationList
cell information list
Definition: epc-x2-sap.h:306
ns3::LteRrcSap::CellSelectionInfo::qQualMin
int8_t qQualMin
INTEGER (-34..-3), actual value = IE value [dB].
Definition: lte-rrc-sap.h:84
ns3::LteEnbRrc::DoRecvRrcConnectionSetupCompleted
void DoRecvRrcConnectionSetupCompleted(uint16_t rnti, LteRrcSap::RrcConnectionSetupCompleted msg)
Part of the RRC protocol.
Definition: lte-enb-rrc.cc:2400
ns3::LteEnbRrc::ConfigureCarriers
void ConfigureCarriers(std::map< uint8_t, Ptr< ComponentCarrierBaseStation >> ccPhyConf)
Configure carriers.
Definition: lte-enb-rrc.cc:1630
ns3::LteRrcSap::RaSupervisionInfo::preambleTransMax
uint8_t preambleTransMax
preamble transmit maximum
Definition: lte-rrc-sap.h:253
ns3::Ptr
Smart pointer class similar to boost::intrusive_ptr.
Definition: ptr.h:74
ns3::LteRrcSap::NonUlConfiguration::dlBandwidth
uint16_t dlBandwidth
1: Cell characteristics
Definition: lte-rrc-sap.h:741
ns3::LteEnbRrc::m_componentCarrierMeasIds
std::set< uint8_t > m_componentCarrierMeasIds
List of measurement identities which are intended for component carrier management purposes.
Definition: lte-enb-rrc.h:1549
NS_FATAL_ERROR
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
Definition: fatal-error.h:165
ns3::LteRrcSap::ReportConfigEutra::eventId
enum ns3::LteRrcSap::ReportConfigEutra::@2 eventId
Event enumeration.
ns3::LteEnbRrc::m_ccmRrcSapProvider
LteCcmRrcSapProvider * m_ccmRrcSapProvider
Interface to the LteEnbComponentCarrierManager instance.
Definition: lte-enb-rrc.h:1485
ns3::LteRrcSap::PdschConfigDedicated
PdschConfigDedicated structure.
Definition: lte-rrc-sap.h:155
ns3::UeManager::m_sourceX2apId
uint16_t m_sourceX2apId
source X2 ap ID
Definition: lte-enb-rrc.h:566
ns3::UeManager::m_physicalConfigDedicated
LteRrcSap::PhysicalConfigDedicated m_physicalConfigDedicated
physical config dedicated
Definition: lte-enb-rrc.h:542
ns3::LteEnbRrc::X2uTeidInfo::rnti
uint16_t rnti
RNTI.
Definition: lte-enb-rrc.h:1554
ns3::LteRrcSap::RadioResourceConfigCommonSCell::haveUlConfiguration
bool haveUlConfiguration
have UL configuration
Definition: lte-rrc-sap.h:808
ns3::LteEnbRrc::m_x2SapUser
EpcX2SapUser * m_x2SapUser
Interface to receive messages from neighbour eNodeB over the X2 interface.
Definition: lte-enb-rrc.h:1468
ns3::LteEnbRrc::m_forwardUpCallback
Callback< void, Ptr< Packet > > m_forwardUpCallback
forward up callback function
Definition: lte-enb-rrc.h:1465
ns3::EpcX2Sap::HandoverRequestParams::ueAggregateMaxBitRateDownlink
uint64_t ueAggregateMaxBitRateDownlink
UE aggregrate max bit rate downlink.
Definition: epc-x2-sap.h:235
ns3::LteRrcSap::ReportConfigEutra::EVENT_A2
@ EVENT_A2
Event A2: Serving becomes worse than absolute threshold.
Definition: lte-rrc-sap.h:374
ns3::EpcX2Sap::ErabToBeSetupItem::erabLevelQosParameters
EpsBearer erabLevelQosParameters
E-RAB level QOS parameters.
Definition: epc-x2-sap.h:62
ns3::SRS_ENTRIES
static const uint8_t SRS_ENTRIES
Number of distinct SRS periodicity plus one.
Definition: lte-enb-rrc.cc:2919
ns3::LteRrcSap::RrcConnectionReject::waitTime
uint8_t waitTime
wait time
Definition: lte-rrc-sap.h:891
ns3::LteRrcSap::SoundingRsUlConfigDedicated::SETUP
@ SETUP
Definition: lte-rrc-sap.h:134
ns3::LteFfrRrcSapUser
Service Access Point (SAP) offered by the eNodeB RRC instance to the Frequency Reuse algorithm instan...
Definition: lte-ffr-rrc-sap.h:89
ns3::LteRrcSap::AntennaInfoCommon::antennaPortsCount
uint16_t antennaPortsCount
antenna ports count
Definition: lte-rrc-sap.h:721
ns3::LteRlc
This abstract base class defines the API to interact with the Radio Link Control (LTE_RLC) in LTE,...
Definition: lte-rlc.h:51
ns3::LteRrcSap::MeasConfig::reportConfigToAddModList
std::list< ReportConfigToAddMod > reportConfigToAddModList
report config to add mod list
Definition: lte-rrc-sap.h:523
ns3::LteRrcSap::PuschConfigDedicatedSCell::nPuschIdentity
uint16_t nPuschIdentity
3GPP TS 36.331 v.11.10 R11 page 216
Definition: lte-rrc-sap.h:772
ns3::LteEnbRrc::m_componentCarrierPhyConf
std::map< uint8_t, Ptr< ComponentCarrierBaseStation > > m_componentCarrierPhyConf
component carrier phy configuration
Definition: lte-enb-rrc.h:1694
ns3::UeManager::RecvRrcConnectionReestablishmentComplete
void RecvRrcConnectionReestablishmentComplete(LteRrcSap::RrcConnectionReestablishmentComplete msg)
Implement the LteEnbRrcSapProvider::RecvRrcConnectionReestablishmentComplete interface.
Definition: lte-enb-rrc.cc:1127
ns3::LteRrcSap::RachConfigCommon::preambleInfo
PreambleInfo preambleInfo
preamble info
Definition: lte-rrc-sap.h:266
ns3::LteRrcSap::ReportConfigEutra::triggerQuantity
enum ns3::LteRrcSap::ReportConfigEutra::@3 triggerQuantity
Trigger type enumeration.
ns3::EpcX2Sap::ErabAdmittedItem::erabId
uint16_t erabId
E-RAB ID.
Definition: epc-x2-sap.h:77
ns3::LteRrcSap::TxFailParam::connEstFailCount
uint8_t connEstFailCount
Number of times that the UE detects T300 expiry on the same cell.
Definition: lte-rrc-sap.h:260
ns3::EpcX2Sap::HandoverPreparationFailureParams::oldEnbUeX2apId
uint16_t oldEnbUeX2apId
old ENB UE X2 AP ID
Definition: epc-x2-sap.h:264
ns3::LteRrcSap::HandoverPreparationInfo::asConfig
AsConfig asConfig
AS config.
Definition: lte-rrc-sap.h:897
ns3::LteEnbRrc::DoCompleteSetupUe
void DoCompleteSetupUe(uint16_t rnti, LteEnbRrcSapProvider::CompleteSetupUeParameters params)
Part of the RRC protocol.
Definition: lte-enb-rrc.cc:2386
ns3::LteEnbRrc::SetEpcX2SapProvider
void SetEpcX2SapProvider(EpcX2SapProvider *s)
Set the X2 SAP this RRC should interact with.
Definition: lte-enb-rrc.cc:1851
ns3::LteEnbRrc::HandoverJoiningTimeout
void HandoverJoiningTimeout(uint16_t rnti)
Method triggered when a UE is expected to join the cell for a handover but does not do so in a reason...
Definition: lte-enb-rrc.cc:2352
ns3::LteEnbCmacSapProvider::LcInfo::gbrUl
uint64_t gbrUl
guaranteed bitrate in uplink
Definition: lte-enb-cmac-sap.h:81
ns3::LteEnbRrc::SetLteEnbCmacSapProvider
void SetLteEnbCmacSapProvider(LteEnbCmacSapProvider *s)
set the CMAC SAP this RRC should interact with
Definition: lte-enb-rrc.cc:1865
ns3::LteEnbRrc::m_macSapProvider
LteMacSapProvider * m_macSapProvider
Interface to the eNodeB MAC instance, to be used by RLC instances.
Definition: lte-enb-rrc.h:1503
ns3::LteRrcSap::PhysicalConfigDedicated::pdschConfigDedicated
PdschConfigDedicated pdschConfigDedicated
PDSCH config dedicated.
Definition: lte-rrc-sap.h:223
ns3::EpcEnbS1SapProvider::BearerToBeSwitched
BearerToBeSwitched structure.
Definition: epc-enb-s1-sap.h:61
ns3::UeManager::RecvRrcConnectionReestablishmentRequest
void RecvRrcConnectionReestablishmentRequest(LteRrcSap::RrcConnectionReestablishmentRequest msg)
Implement the LteEnbRrcSapProvider::RecvRrcConnectionReestablishmentRequest interface.
Definition: lte-enb-rrc.cc:1102
ns3::LteRrcSap::MeasConfig::haveQuantityConfig
bool haveQuantityConfig
have quantity config?
Definition: lte-rrc-sap.h:526
ns3::LteRrcSap::PhysicalConfigDedicatedSCell::crossCarrierSchedulingConfig
bool crossCarrierSchedulingConfig
currently implemented as boolean variable --> implementing crossCarrierScheduling is out of the scope...
Definition: lte-rrc-sap.h:789
ns3::UeManager::AddDataRadioBearerInfo
uint8_t AddDataRadioBearerInfo(Ptr< LteDataRadioBearerInfo > radioBearerInfo)
Add a new LteDataRadioBearerInfo structure to the UeManager.
Definition: lte-enb-rrc.cc:1316
ns3::UeManager::m_lastAllocatedDrbid
uint8_t m_lastAllocatedDrbid
last allocated Data Radio Bearer ID
Definition: lte-enb-rrc.h:509
ns3::LteRrcSap::SystemInformationBlockType1::cellAccessRelatedInfo
CellAccessRelatedInfo cellAccessRelatedInfo
cell access related info
Definition: lte-rrc-sap.h:596
ns3::EpcX2Sap::ErabsSubjectToStatusTransferItem::ulPdcpSn
uint16_t ulPdcpSn
UL PDCP SN.
Definition: epc-x2-sap.h:105
ns3::Object
A base class which provides memory management and object aggregation.
Definition: object.h:88
ns3::LteEnbRrc::DoAddUeMeasReportConfigForAnr
uint8_t DoAddUeMeasReportConfigForAnr(LteRrcSap::ReportConfigEutra reportConfig)
Add UE measure report config for ANR function.
Definition: lte-enb-rrc.cc:2766
ns3::LteRrcSap::RrcConnectionRequest
RrcConnectionRequest structure.
Definition: lte-rrc-sap.h:693
ns3::LteRrcSap::MeasObjectToAddMod
MeasObjectToAddMod structure.
Definition: lte-rrc-sap.h:451
ns3::LteRrcSap::ReportConfigToAddMod::reportConfigId
uint8_t reportConfigId
report config ID
Definition: lte-rrc-sap.h:459
ns3::LteEnbRrc::GetLogicalChannelGroup
uint8_t GetLogicalChannelGroup(EpsBearer bearer)
Definition: lte-enb-rrc.cc:3033
ns3::LteAnrSapProvider
Service Access Point (SAP) offered by the ANR instance to the eNodeB RRC instance.
Definition: lte-anr-sap.h:38
ns3::EpcEnbS1SapProvider::BearerToBeSwitched::teid
uint32_t teid
TEID.
Definition: epc-enb-s1-sap.h:63
ns3::LteRrcSap::SoundingRsUlConfigDedicated::srsConfigIndex
uint16_t srsConfigIndex
SRS config index.
Definition: lte-rrc-sap.h:137
ns3::LteEnbRrc::m_admitRrcConnectionRequest
bool m_admitRrcConnectionRequest
The AdmitRrcConnectionRequest attribute.
Definition: lte-enb-rrc.h:1599
NS_LOG_INFO
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO.
Definition: log.h:281
ns3::EpcX2Sap::UeDataParams
Parameters of the UE DATA primitive.
Definition: epc-x2-sap.h:329
ns3::LteEnbRrcSapProvider::CompleteSetupUeParameters::srb0SapUser
LteRlcSapUser * srb0SapUser
SRB0 SAP user.
Definition: lte-rrc-sap.h:1206
ns3::LteEnbRrc::m_configured
bool m_configured
True if ConfigureCell() has been completed.
Definition: lte-enb-rrc.h:1516
ns3::LteRrcSap::PhysicalConfigDedicated::haveAntennaInfoDedicated
bool haveAntennaInfoDedicated
have antenna info dedicated?
Definition: lte-rrc-sap.h:220
ns3::LteRrcSap::ThresholdEutra::THRESHOLD_RSRP
@ THRESHOLD_RSRP
RSRP is used for the threshold.
Definition: lte-rrc-sap.h:354
ns3::LteRrcSap::PhysicalConfigDedicatedSCell::soundingRsUlConfigDedicated
SoundingRsUlConfigDedicated soundingRsUlConfigDedicated
sounding RS UL config dedicated
Definition: lte-rrc-sap.h:800
ns3::LteEnbRrc::DoRecvRrcConnectionReestablishmentComplete
void DoRecvRrcConnectionReestablishmentComplete(uint16_t rnti, LteRrcSap::RrcConnectionReestablishmentComplete msg)
Part of the RRC protocol.
Definition: lte-enb-rrc.cc:2421
ns3::LteEnbRrc
The LTE Radio Resource Control entity at the eNB.
Definition: lte-enb-rrc.h:635
ns3::EpcEnbS1SapUser::DataRadioBearerSetupRequestParameters::transportLayerAddress
Ipv4Address transportLayerAddress
IP Address of the SGW, see 36.423 9.2.1.
Definition: epc-enb-s1-sap.h:133
ns3::LteRrcSap::PlmnIdentityInfo::plmnIdentity
uint32_t plmnIdentity
PLMN identity.
Definition: lte-rrc-sap.h:68
ns3::MilliSeconds
Time MilliSeconds(uint64_t value)
Construct a Time in the indicated unit.
Definition: nstime.h:1297
ns3::LteEnbCmacSapProvider::AllocateNcRaPreambleReturnValue::raPrachMaskIndex
uint8_t raPrachMaskIndex
PRACH mask index.
Definition: lte-enb-cmac-sap.h:159
ns3::LteRlc::SetLteMacSapProvider
void SetLteMacSapProvider(LteMacSapProvider *s)
Definition: lte-rlc.cc:161
ns3::LteRrcSap::RachConfigDedicated::raPrachMaskIndex
uint8_t raPrachMaskIndex
RA PRACH mask index.
Definition: lte-rrc-sap.h:554
ns3::LteRrcSap::SoundingRsUlConfigCommon::srsSubframeConfig
uint8_t srsSubframeConfig
SRS subframe config.
Definition: lte-rrc-sap.h:125
ns3::LteRrcSap::ReportConfigEutra
Specifies criteria for triggering of an E-UTRA measurement reporting event.
Definition: lte-rrc-sap.h:362
ns3::LteRrcSap::DrbToAddMod::logicalChannelIdentity
uint8_t logicalChannelIdentity
logical channel identify
Definition: lte-rrc-sap.h:240
ns3::LteRrcSap::SoundingRsUlConfigDedicated::srsBandwidth
uint16_t srsBandwidth
SRS bandwidth.
Definition: lte-rrc-sap.h:136
ns3::EventId::Cancel
void Cancel(void)
This method is syntactic sugar for the ns3::Simulator::Cancel method.
Definition: event-id.cc:53
ns3::UeManager::CONNECTION_SETUP
@ CONNECTION_SETUP
Definition: lte-enb-rrc.h:89
ns3::LteRrcSap::MeasConfig::haveMeasGapConfig
bool haveMeasGapConfig
have measure gap config?
Definition: lte-rrc-sap.h:528
ns3::ObjectFactory
Instantiate subclasses of ns3::Object.
Definition: object-factory.h:48
ns3::UeManager::m_caSupportConfigured
bool m_caSupportConfigured
Define if the Carrier Aggregation was already configure for the current UE on not.
Definition: lte-enb-rrc.h:608
ns3::LteRrcSap::ReportConfigEutra::BOTH
@ BOTH
Both the RSRP and RSRQ quantities are to be included in the measurement report.
Definition: lte-rrc-sap.h:414
ns3::LteRrcSap::PhysicalConfigDedicatedSCell::haveAntennaInfoDedicated
bool haveAntennaInfoDedicated
have antenna info dedicated?
Definition: lte-rrc-sap.h:787
ns3::EnbRrcMemberLteEnbCmacSapUser::NotifyLcConfigResult
virtual void NotifyLcConfigResult(uint16_t rnti, uint8_t lcid, bool success)
notify the result of the last LC config operation
Definition: lte-enb-rrc.cc:96
ns3::LteEnbRrc::SetSrsPeriodicity
void SetSrsPeriodicity(uint32_t p)
Definition: lte-enb-rrc.cc:2939
ns3::EpcX2Sap::SnStatusTransferParams::targetCellId
uint16_t targetCellId
target cell ID
Definition: epc-x2-sap.h:281
ns3::UeManager::m_pendingRrcConnectionReconfiguration
bool m_pendingRrcConnectionReconfiguration
pending RRC connection reconfiguration
Definition: lte-enb-rrc.h:550
ns3::UeManager::m_connectionSetupTimeout
EventId m_connectionSetupTimeout
Time limit before a connection setup timeout occurs.
Definition: lte-enb-rrc.h:585
ns3::UeManager::CONNECTED_NORMALLY
@ CONNECTED_NORMALLY
Definition: lte-enb-rrc.h:92
ns3::EpcX2Sap::UeContextReleaseParams::newEnbUeX2apId
uint16_t newEnbUeX2apId
new ENB UE X2 AP ID
Definition: epc-x2-sap.h:293
ns3::EpcEnbS1SapUser
This class implements the Service Access Point (SAP) between the LteEnbRrc and the EpcEnbApplication.
Definition: epc-enb-s1-sap.h:104
ns3::LteRrcSap::MeasObjectEutra::carrierFreq
uint32_t carrierFreq
carrier frequency
Definition: lte-rrc-sap.h:327
ns3::EpcEnbS1SapProvider::PathSwitchRequestParameters::bearersToBeSwitched
std::list< BearerToBeSwitched > bearersToBeSwitched
list of bearers to be switched
Definition: epc-enb-s1-sap.h:72
ns3::LteRrcSap::ReportConfigEutra::RSRQ
@ RSRQ
Reference Signal Received Quality.
Definition: lte-rrc-sap.h:407
ns3::LteRrcSap::RachConfigDedicated::raPreambleIndex
uint8_t raPreambleIndex
RA preamble index.
Definition: lte-rrc-sap.h:553
ns3::EpcX2Sap::HandoverRequestAckParams
Parameters of the HANDOVER REQUEST ACKNOWLEDGE message.
Definition: epc-x2-sap.h:247
ns3::EpsBearer::gbrQosInfo
GbrQosInformation gbrQosInfo
GBR QOS information.
Definition: eps-bearer.h:131
ns3::MakeBooleanChecker
Ptr< const AttributeChecker > MakeBooleanChecker(void)
Definition: boolean.cc:121
ns3::LteRrcSap::RadioResourceConfigCommonSib::pdschConfigCommon
PdschConfigCommon pdschConfigCommon
PDSCH config common.
Definition: lte-rrc-sap.h:281
ns3::LteEnbRrc::X2uTeidInfo::drbid
uint8_t drbid
DRBID.
Definition: lte-enb-rrc.h:1555
ns3::UeManager::RecvSnStatusTransfer
void RecvSnStatusTransfer(EpcX2SapUser::SnStatusTransferParams params)
Take the necessary actions in response to the reception of an X2 SN STATUS TRANSFER message.
Definition: lte-enb-rrc.cc:902
ns3::EpsBearerTag::GetRnti
uint16_t GetRnti(void) const
Get RNTI function.
Definition: eps-bearer-tag.cc:100
ns3::UeManager::RecvRrcConnectionSetupCompleted
void RecvRrcConnectionSetupCompleted(LteRrcSap::RrcConnectionSetupCompleted msg)
Implement the LteEnbRrcSapProvider::RecvRrcConnectionSetupCompleted interface.
Definition: lte-enb-rrc.cc:989
ns3::LteRrcSap::RadioResourceConfigCommon::rachConfigCommon
RachConfigCommon rachConfigCommon
RACH config common.
Definition: lte-rrc-sap.h:274
ns3::UeManager::m_stateTransitionTrace
TracedCallback< uint64_t, uint16_t, uint16_t, State, State > m_stateTransitionTrace
The StateTransition trace source.
Definition: lte-enb-rrc.h:557
ns3::LteEnbRrc::GetSrsPeriodicity
uint32_t GetSrsPeriodicity() const
Definition: lte-enb-rrc.cc:2960
ns3::LteEnbRrcSapUser::SetupUeParameters::srb1SapProvider
LtePdcpSapProvider * srb1SapProvider
SRB1 SAP provider.
Definition: lte-rrc-sap.h:1088
ns3::LteRrcSap::UlConfiguration::prachConfigSCell
PrachConfigSCell prachConfigSCell
PRACH config SCell.
Definition: lte-rrc-sap.h:758
ns3::UeManager::CONNECTION_REJECTED
@ CONNECTION_REJECTED
Definition: lte-enb-rrc.h:90
ns3::UeManager::HANDOVER_JOINING
@ HANDOVER_JOINING
Definition: lte-enb-rrc.h:96
ns3::Time
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:104
ns3::LteEnbRrc::m_ffrRrcSapProvider
std::vector< LteFfrRrcSapProvider * > m_ffrRrcSapProvider
Interface to the FFR algorithm instance.
Definition: lte-enb-rrc.h:1495
ns3::EpcX2Sap::SnStatusTransferParams
Parameters of the SN STATUS TRANSFER message.
Definition: epc-x2-sap.h:277
ns3::LteEnbCmacSapProvider::LcInfo::gbrDl
uint64_t gbrDl
guaranteed bitrate in downlink
Definition: lte-enb-cmac-sap.h:82
ns3::LteEnbRrc::m_connectionRequestTimeoutDuration
Time m_connectionRequestTimeoutDuration
The ConnectionRequestTimeoutDuration attribute.
Definition: lte-enb-rrc.h:1618
ns3::LtePdcp::Status::txSn
uint16_t txSn
TX sequence number.
Definition: lte-pdcp.h:103
ns3::LteRrcSap::PhysicalConfigDedicatedSCell::haveUlConfiguration
bool haveUlConfiguration
have UL configuration?
Definition: lte-rrc-sap.h:794
ns3::EpcEnbS1SapUser::PathSwitchRequestAcknowledgeParameters::rnti
uint16_t rnti
RNTI.
Definition: epc-enb-s1-sap.h:147
ns3::LteRrcSap::PhysicalConfigDedicatedSCell::haveAntennaInfoUlDedicated
bool haveAntennaInfoUlDedicated
have antenna info UL dedicated?
Definition: lte-rrc-sap.h:795
ns3::LteRrcSap::RrcConnectionReconfiguration::nonCriticalExtension
NonCriticalExtensionConfiguration nonCriticalExtension
3GPP TS 36.331 v.11.10 R11 Sec. 6.2.2 pag. 147 (also known as ETSI TS 136 331 v.11....
Definition: lte-rrc-sap.h:847
ns3::LteRrcSap::RrcConnectionReconfiguration::haveNonCriticalExtension
bool haveNonCriticalExtension
have critical extension?
Definition: lte-rrc-sap.h:845
ns3::LteRrcSap::RrcConnectionRequest::ueIdentity
uint64_t ueIdentity
UE identity.
Definition: lte-rrc-sap.h:694
NS_ABORT_MSG_IF
#define NS_ABORT_MSG_IF(cond, msg)
Abnormal program termination if a condition is true, with a message.
Definition: abort.h:108
ns3::LteRrcSap::CarrierFreqEutra::dlCarrierFreq
uint32_t dlCarrierFreq
DL carrier frequency.
Definition: lte-rrc-sap.h:539
ns3::LteRrcSap::RrcConnectionReestablishment
RrcConnectionReestablishment structure.
Definition: lte-rrc-sap.h:866
ns3::EnbRrcMemberLteEnbCmacSapUser::AllocateTemporaryCellRnti
virtual uint16_t AllocateTemporaryCellRnti()
request the allocation of a Temporary C-RNTI
Definition: lte-enb-rrc.cc:90
ns3::LteEnbCmacSapProvider::UeConfig
Parameters for [re]configuring the UE.
Definition: lte-enb-cmac-sap.h:114
ns3::EpcX2Sap::UeContextReleaseParams::sourceCellId
uint16_t sourceCellId
source cell ID
Definition: epc-x2-sap.h:294
ns3::LteEnbRrc::DoSendReleaseDataRadioBearer
void DoSendReleaseDataRadioBearer(uint64_t imsi, uint16_t rnti, uint8_t bearerId)
This function acts as an interface to trigger Release indication messages towards eNB and EPC.
Definition: lte-enb-rrc.cc:571
ns3::EnbRrcMemberLteEnbCmacSapUser::EnbRrcMemberLteEnbCmacSapUser
EnbRrcMemberLteEnbCmacSapUser(LteEnbRrc *rrc, uint8_t componentCarrierId)
Constructor.
Definition: lte-enb-rrc.cc:83
ns3::LteEnbRrcSapProvider
Part of the RRC protocol.
Definition: lte-rrc-sap.h:1201
NS_ASSERT_MSG
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
Definition: assert.h:88
ns3::LteEnbRrc::DoAllocateTemporaryCellRnti
uint16_t DoAllocateTemporaryCellRnti(uint8_t componentCarrierId)
Allocate temporary cell RNTI function.
Definition: lte-enb-rrc.cc:2678
ns3::EpcEnbS1SapUser::PathSwitchRequestAcknowledgeParameters
PathSwitchRequestAcknowledgeParameters structure.
Definition: epc-enb-s1-sap.h:146
ns3::EpcX2Sap::HandoverRequestAckParams::targetCellId
uint16_t targetCellId
target cell ID
Definition: epc-x2-sap.h:251
ns3::UeManager::CmacUeConfigUpdateInd
void CmacUeConfigUpdateInd(LteEnbCmacSapUser::UeConfig cmacParams)
CMAC UE config update indication function.
Definition: lte-enb-rrc.cc:1208
ns3::Object::DoInitialize
virtual void DoInitialize(void)
Initialize() implementation.
Definition: object.cc:353
ns3::LteEnbRrc::m_x2SapProvider
EpcX2SapProvider * m_x2SapProvider
Interface to send messages to neighbour eNodeB over the X2 interface.
Definition: lte-enb-rrc.h:1470
ns3::EpcX2SapProvider
These service primitives of this part of the X2 SAP are provided by the X2 entity and issued by RRC e...
Definition: epc-x2-sap.h:344
ns3::LteEnbRrc::SetCsgId
void SetCsgId(uint32_t csgId, bool csgIndication)
Associate this RRC entity with a particular CSG information.
Definition: lte-enb-rrc.cc:2907
ns3::LteRrcSap::RrcConnectionReconfiguration::haveMeasConfig
bool haveMeasConfig
have measure config
Definition: lte-rrc-sap.h:839
ns3::LteRrcSap::RrcConnectionReestablishmentRequest
RrcConnectionReestablishmentRequest structure.
Definition: lte-rrc-sap.h:859
ns3::UeManager::m_drbMap
std::map< uint8_t, Ptr< LteDataRadioBearerInfo > > m_drbMap
The DataRadioBearerMap attribute.
Definition: lte-enb-rrc.h:515
ns3::EpcEnbS1SapUser::DataRadioBearerSetupRequestParameters::rnti
uint16_t rnti
the RNTI identifying the UE for which the DataRadioBearer is to be created
Definition: epc-enb-s1-sap.h:128
ns3::LteRrcSap::MobilityControlInfo::rachConfigDedicated
RachConfigDedicated rachConfigDedicated
RACH config dedicated.
Definition: lte-rrc-sap.h:568
ns3::LteRrcSap::UlPowerControlDedicatedSCell::pSrsOffset
uint16_t pSrsOffset
3GPP TS 36.331 v.11.10 R11 page 234
Definition: lte-rrc-sap.h:779
ns3::LteRrcSap::DrbToAddMod::drbIdentity
uint8_t drbIdentity
DRB identity.
Definition: lte-rrc-sap.h:238
ns3::LteEnbCmacSapProvider::AllocateNcRaPreambleReturnValue
AllocateNcRaPreambleReturnValue structure.
Definition: lte-enb-cmac-sap.h:156
ns3::LteRrcSap::MeasResults::measResultListEutra
std::list< MeasResultEutra > measResultListEutra
measure result list eutra
Definition: lte-rrc-sap.h:684
ns3::LteRrcSap::SCellToAddMod
SCellToAddMod structure.
Definition: lte-rrc-sap.h:820
ns3::MemberLteFfrRrcSapUser
Template for the implementation of the LteFfrRrcSapUser as a member of an owner class of type C to wh...
Definition: lte-ffr-rrc-sap.h:206
ns3::LteRrcSap::PdschConfigCommon::referenceSignalPower
int8_t referenceSignalPower
INTEGER (-60..50),.
Definition: lte-rrc-sap.h:149
ns3::EpcX2Sap::HandoverRequestParams::rrcContext
Ptr< Packet > rrcContext
RRC context.
Definition: epc-x2-sap.h:238
ns3::UeManager::DoInitialize
virtual void DoInitialize()
Initialize() implementation.
Definition: lte-enb-rrc.cc:174
ns3::LteRrcSap::MeasurementReport
MeasurementReport structure.
Definition: lte-rrc-sap.h:902
ns3::LteEnbCmacSapProvider
Service Access Point (SAP) offered by the eNB MAC to the eNB RRC See Femto Forum MAC Scheduler Interf...
Definition: lte-enb-cmac-sap.h:42
ns3::UeManager::m_connectionRequestTimeout
EventId m_connectionRequestTimeout
Time limit before a connection request timeout occurs.
Definition: lte-enb-rrc.h:579
ns3::LteRrcSap::RrcConnectionReconfiguration::haveMobilityControlInfo
bool haveMobilityControlInfo
have mobility control info
Definition: lte-rrc-sap.h:841
ns3::LteRlcUm::GetTypeId
static TypeId GetTypeId(void)
Get the type ID.
Definition: lte-rlc-um.cc:55
ns3::LteRrcSap::CarrierBandwidthEutra::ulBandwidth
uint16_t ulBandwidth
UL bandwidth.
Definition: lte-rrc-sap.h:547
ns3::LteEnbRrc::m_ulBandwidth
uint16_t m_ulBandwidth
Uplink transmission bandwidth configuration in number of Resource Blocks.
Definition: lte-enb-rrc.h:1524
ns3::LteEnbCphySapUser
Service Access Point (SAP) offered by the UE PHY to the UE RRC for control purposes.
Definition: lte-enb-cphy-sap.h:129
ns3::EpcX2Sap::SnStatusTransferParams::sourceCellId
uint16_t sourceCellId
source cell ID
Definition: epc-x2-sap.h:280
ns3::LteEnbRrc::m_connectionRejectedTimeoutDuration
Time m_connectionRejectedTimeoutDuration
The ConnectionRejectedTimeoutDuration attribute.
Definition: lte-enb-rrc.h:1630
ns3::LtePdcpSapProvider
Service Access Point (SAP) offered by the PDCP entity to the RRC entity See 3GPP 36....
Definition: lte-pdcp-sap.h:36
ns3::UeManager::m_state
State m_state
The current UeManager state.
Definition: lte-enb-rrc.h:546
ns3::LteRrcSap::PhysicalConfigDedicatedSCell::pushConfigDedicatedSCell
PuschConfigDedicatedSCell pushConfigDedicatedSCell
PUSCH config dedicated SCell.
Definition: lte-rrc-sap.h:797
ns3::LteEnbRrc::m_ulEarfcn
uint32_t m_ulEarfcn
Uplink E-UTRA Absolute Radio Frequency Channel Number.
Definition: lte-enb-rrc.h:1520
NS_LOG_LOGIC
#define NS_LOG_LOGIC(msg)
Use NS_LOG to output a message of level LOG_LOGIC.
Definition: log.h:289
ns3::MakePointerAccessor
Ptr< const AttributeAccessor > MakePointerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
Definition: pointer.h:227
ns3::LteEnbRrc::m_rsrqFilterCoefficient
uint8_t m_rsrqFilterCoefficient
The RsrqFilterCoefficient attribute.
Definition: lte-enb-rrc.h:1611
ns3::LteEnbRrc::GetLteEnbCmacSapUser
LteEnbCmacSapUser * GetLteEnbCmacSapUser()
Get the CMAC SAP offered by this RRC.
Definition: lte-enb-rrc.cc:1887
ns3::LteEnbRrc::m_recvMeasurementReportTrace
TracedCallback< uint64_t, uint16_t, uint16_t, LteRrcSap::MeasurementReport > m_recvMeasurementReportTrace
The RecvMeasurementReport trace source.
Definition: lte-enb-rrc.h:1676
ns3::UeManager::GetRadioResourceConfigForHandoverPreparationInfo
LteRrcSap::RadioResourceConfigDedicated GetRadioResourceConfigForHandoverPreparationInfo()
Definition: lte-enb-rrc.cc:754
ns3::LteEnbRrc::m_handoverManagementSapUser
LteHandoverManagementSapUser * m_handoverManagementSapUser
Receive API calls from the handover algorithm instance.
Definition: lte-enb-rrc.h:1478
ns3::EpcEnbS1SapUser::InitialContextSetupRequestParameters::rnti
uint16_t rnti
the RNTI identifying the UE
Definition: epc-enb-s1-sap.h:113
NS_ABORT_IF
#define NS_ABORT_IF(cond)
Abnormal program termination if a condition is true.
Definition: abort.h:77
ns3::LteRrcSap::RadioResourceConfigCommonSCell::nonUlConfiguration
NonUlConfiguration nonUlConfiguration
non UL configuration
Definition: lte-rrc-sap.h:807
ns3::EnbRrcMemberLteEnbCmacSapUser::IsRandomAccessCompleted
virtual bool IsRandomAccessCompleted(uint16_t rnti)
Is random access completed function.
Definition: lte-enb-rrc.cc:108
ns3::g_srsCiHigh
static const uint16_t g_srsCiHigh[SRS_ENTRIES]
The upper bound (inclusive) of the SRS configuration indices (ISRS) which use the corresponding SRS p...
Definition: lte-enb-rrc.cc:2936
ns3::LteRrcSap::MeasResultServFreqList::measResultScell
std::list< MeasResultScell > measResultScell
measure results Scells
Definition: lte-rrc-sap.h:672
ns3::LteEnbRrc::m_connectionReleaseTrace
TracedCallback< uint64_t, uint16_t, uint16_t > m_connectionReleaseTrace
The NotifyConnectionRelease trace source.
Definition: lte-enb-rrc.h:1682
lte-enb-rrc.h
ns3::LteRrcSap::MeasConfig::haveSpeedStatePars
bool haveSpeedStatePars
have speed state parameters?
Definition: lte-rrc-sap.h:532
ns3::LteRrcSap::RadioResourceConfigDedicatedSCell::physicalConfigDedicatedSCell
PhysicalConfigDedicatedSCell physicalConfigDedicatedSCell
physical config dedicated SCell
Definition: lte-rrc-sap.h:815
ns3::LteRrcSap::ReportConfigEutra::EVENT_A4
@ EVENT_A4
Event A4: Neighbour becomes better than absolute threshold.
Definition: lte-rrc-sap.h:376
ns3::Packet::AddPacketTag
void AddPacketTag(const Tag &tag) const
Add a packet tag.
Definition: packet.cc:956
ns3::EpcX2Sap::LoadInformationParams
Parameters of the LOAD INFORMATION message.
Definition: epc-x2-sap.h:304
ns3::UeManager::GetComponentCarrierId
uint8_t GetComponentCarrierId() const
Definition: lte-enb-rrc.cc:1253
ns3::LteRrcSap::MeasConfig::measObjectToAddModList
std::list< MeasObjectToAddMod > measObjectToAddModList
measure object to add mod list
Definition: lte-rrc-sap.h:521
ns3::UeManager::GetNewRrcTransactionIdentifier
uint8_t GetNewRrcTransactionIdentifier()
Definition: lte-enb-rrc.cc:1420
ns3::LteEnbRrc::m_cmacSapProvider
std::vector< LteEnbCmacSapProvider * > m_cmacSapProvider
Interface to the eNodeB MAC instance.
Definition: lte-enb-rrc.h:1475
ns3::LteEnbRrc::CellToComponentCarrierId
uint8_t CellToComponentCarrierId(uint16_t cellId)
convert the cell id to component carrier id
Definition: lte-enb-rrc.cc:2278
ns3::LteRrcSap::RadioResourceConfigDedicated::srbToAddModList
std::list< SrbToAddMod > srbToAddModList
SRB to add mod list.
Definition: lte-rrc-sap.h:287
ns3::LteEnbCmacSapProvider::RachConfig::preambleTransMax
uint8_t preambleTransMax
preamble transmit maximum
Definition: lte-enb-cmac-sap.h:140
ns3::LtePdcp::Status
Status variables of the PDCP.
Definition: lte-pdcp.h:102
ns3::LteRlc::SetLteRlcSapUser
void SetLteRlcSapUser(LteRlcSapUser *s)
Definition: lte-rlc.cc:147
ns3::LteEnbRrcSapUser
Part of the RRC protocol.
Definition: lte-rrc-sap.h:1082
ns3::LteEnbRrc::m_ffrRrcSapUser
std::vector< LteFfrRrcSapUser * > m_ffrRrcSapUser
Receive API calls from the FFR algorithm instance.
Definition: lte-enb-rrc.h:1493
ns3::LteEnbCmacSapProvider::UeConfig::m_transmissionMode
uint8_t m_transmissionMode
Transmission mode 1..7
Definition: lte-enb-cmac-sap.h:122
ns3::LteRrcSap::SoundingRsUlConfigDedicated::type
enum ns3::LteRrcSap::SoundingRsUlConfigDedicated::action type
action type
ns3::LteRrcSap::SystemInformationBlockType2::freqInfo
FreqInfo freqInfo
frequency info
Definition: lte-rrc-sap.h:604
ns3::LteEnbRrc::m_rrcSapUser
LteEnbRrcSapUser * m_rrcSapUser
Interface to send messages to UE over the RRC protocol.
Definition: lte-enb-rrc.h:1498
ns3::UeManager::GetDataRadioBearerInfo
Ptr< LteDataRadioBearerInfo > GetDataRadioBearerInfo(uint8_t drbid)
Definition: lte-enb-rrc.cc:1340
ns3::UeManager::RemoveDataRadioBearerInfo
void RemoveDataRadioBearerInfo(uint8_t drbid)
remove the LteDataRadioBearerInfo corresponding to a bearer being released
Definition: lte-enb-rrc.cc:1351
ns3::EpcX2Sap::ErabToBeSetupItem
E-RABs to be setup item as it is used in the HANDOVER REQUEST message.
Definition: epc-x2-sap.h:60
ns3::LteRrcSap::UlPowerControlCommonSCell::alpha
uint16_t alpha
alpha value
Definition: lte-rrc-sap.h:727
ns3::LteEnbRrc::m_ffrMeasIds
std::set< uint8_t > m_ffrMeasIds
List of measurement identities which are intended for FFR purpose.
Definition: lte-enb-rrc.h:1547
ns3::LteRrcSap::MeasResults::haveMeasResultNeighCells
bool haveMeasResultNeighCells
have measure result neighbor cells
Definition: lte-rrc-sap.h:683
ns3::EpcEnbS1SapProvider::PathSwitchRequestParameters
PathSwitchRequestParameters structure.
Definition: epc-enb-s1-sap.h:68
ns3::LteRrcSap::MeasConfig::haveSmeasure
bool haveSmeasure
have S measure?
Definition: lte-rrc-sap.h:530
ns3::GbrQosInformation::gbrUl
uint64_t gbrUl
Guaranteed Bit Rate (bit/s) in uplink.
Definition: eps-bearer.h:43
ns3::g_ueManagerStateName
static const std::string g_ueManagerStateName[UeManager::NUM_STATES]
Map each of UE Manager states to its string representation.
Definition: lte-enb-rrc.cc:121
ns3::LteRrcSap::PdschConfigCommon::pb
int8_t pb
INTEGER (0..3),.
Definition: lte-rrc-sap.h:150
ns3::LteRrcSap::MobilityControlInfo::carrierFreq
CarrierFreqEutra carrierFreq
carrier frequency
Definition: lte-rrc-sap.h:562
ns3::UeManager::m_connectionRejectedTimeout
EventId m_connectionRejectedTimeout
The delay before a connection rejected timeout occurs.
Definition: lte-enb-rrc.h:591
ns3::UeManager::SetupDataRadioBearer
void SetupDataRadioBearer(EpsBearer bearer, uint8_t bearerId, uint32_t gtpTeid, Ipv4Address transportLayerAddress)
Setup a new data radio bearer, including both the configuration within the eNB and the necessary RRC ...
Definition: lte-enb-rrc.cc:395
ns3::LteEnbRrc::DoPathSwitchRequestAcknowledge
void DoPathSwitchRequestAcknowledge(EpcEnbS1SapUser::PathSwitchRequestAcknowledgeParameters params)
Path switch request acknowledge function.
Definition: lte-enb-rrc.cc:2465
ns3::LteMacSapUser
Service Access Point (SAP) offered by the MAC to the RLC See Femto Forum MAC Scheduler Interface Spec...
Definition: lte-mac-sap.h:96
ns3::UeManager::CONNECTION_RECONFIGURATION
@ CONNECTION_RECONFIGURATION
Definition: lte-enb-rrc.h:93
ns3::EpsBearer
This class contains the specification of EPS Bearers.
Definition: eps-bearer.h:92
ns3::UeManager::GetTypeId
static TypeId GetTypeId(void)
Get the type ID.
Definition: lte-enb-rrc.cc:330
ns3::UeManager::BuildRadioResourceConfigDedicated
LteRrcSap::RadioResourceConfigDedicated BuildRadioResourceConfigDedicated()
Definition: lte-enb-rrc.cc:1388
ns3::LteAnrSapProvider::GetNoX2
virtual bool GetNoX2(uint16_t cellId) const =0
Get the value of No X2 field of a neighbouring cell from the Neighbour Relation Table (NRT).
ns3::LteEnbRrc::m_connectionEstablishedTrace
TracedCallback< uint64_t, uint16_t, uint16_t > m_connectionEstablishedTrace
The ConnectionEstablished trace source.
Definition: lte-enb-rrc.h:1656
ns3::LteEnbRrc::m_srsCurrentPeriodicityId
uint16_t m_srsCurrentPeriodicityId
The SrsPeriodicity attribute.
Definition: lte-enb-rrc.h:1579
ns3::LteEnbRrc::SetLteHandoverManagementSapProvider
void SetLteHandoverManagementSapProvider(LteHandoverManagementSapProvider *s)
set the Handover Management SAP this RRC should interact with
Definition: lte-enb-rrc.cc:1901
ns3::LteEnbRrc::RemoveSrsConfigurationIndex
void RemoveSrsConfigurationIndex(uint16_t srcCi)
remove a previously allocated SRS configuration index
Definition: lte-enb-rrc.cc:3024
ns3::LteRrcSap::RlcConfig::UM_BI_DIRECTIONAL
@ UM_BI_DIRECTIONAL
Definition: lte-rrc-sap.h:101
ns3::LteAnrSapProvider::GetNoHo
virtual bool GetNoHo(uint16_t cellId) const =0
Get the value of No HO field of a neighbouring cell from the Neighbour Relation Table (NRT).
NS_LOG_DEBUG
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG.
Definition: log.h:273
ns3::EpcX2Sap::UeContextReleaseParams::targetCellId
uint16_t targetCellId
target cell ID
Definition: epc-x2-sap.h:295
ns3::UeManager::m_targetX2apId
uint16_t m_targetX2apId
target X2 ap ID
Definition: lte-enb-rrc.h:567
ns3::LteEnbRrc::DoRecvIdealUeContextRemoveRequest
void DoRecvIdealUeContextRemoveRequest(uint16_t rnti)
Part of the RRC protocol.
Definition: lte-enb-rrc.cc:2443
ns3::LteRlc::SetLcId
void SetLcId(uint8_t lcId)
Definition: lte-rlc.cc:140
ns3::LteRrcSap::SystemInformationBlockType1
SystemInformationBlockType1 structure.
Definition: lte-rrc-sap.h:595
ns3::EpsBearerTag
Tag used to define the RNTI and EPS bearer ID for packets interchanged between the EpcEnbApplication ...
Definition: eps-bearer-tag.h:37
ns3::LteEnbRrc::AddX2Neighbour
void AddX2Neighbour(uint16_t cellId)
Add a neighbour with an X2 interface.
Definition: lte-enb-rrc.cc:2896
ns3::LteEnbRrc::PER_BASED
@ PER_BASED
Definition: lte-enb-rrc.h:1043
ns3::LteEnbRrc::DoRecvMeasurementReport
void DoRecvMeasurementReport(uint16_t rnti, LteRrcSap::MeasurementReport msg)
Part of the RRC protocol.
Definition: lte-enb-rrc.cc:2428
ns3::LteEnbCmacSapProvider::LcInfo::isGbr
bool isGbr
true if the bearer is GBR, false if the bearer is NON-GBR
Definition: lte-enb-cmac-sap.h:78
ns3::LteEnbRrc::GetEpcX2SapUser
EpcX2SapUser * GetEpcX2SapUser()
Get the X2 SAP offered by this RRC.
Definition: lte-enb-rrc.cc:1858
ns3::LteEnbRrc::DoAddUeMeasReportConfigForHandover
uint8_t DoAddUeMeasReportConfigForHandover(LteRrcSap::ReportConfigEutra reportConfig)
Add UE measure report config for handover function.
Definition: lte-enb-rrc.cc:2700
ns3::LteEnbRrc::m_ccmRrcSapUser
LteCcmRrcSapUser * m_ccmRrcSapUser
Receive API calls from the LteEnbComponentCarrierManager instance.
Definition: lte-enb-rrc.h:1483
ns3::LteRrcSap::AsConfig::sourceMasterInformationBlock
MasterInformationBlock sourceMasterInformationBlock
source master information block
Definition: lte-rrc-sap.h:620
ns3::EpcX2Sap::HandoverRequestParams::bearers
std::vector< ErabToBeSetupItem > bearers
bearers
Definition: epc-x2-sap.h:237
ns3::Seconds
Time Seconds(double value)
Construct a Time in the indicated unit.
Definition: nstime.h:1289
ns3::LtePdcpSapProvider::TransmitPdcpSduParameters
Parameters for LtePdcpSapProvider::TransmitPdcpSdu.
Definition: lte-pdcp-sap.h:44
ns3::LteEnbRrc::m_dlEarfcn
uint32_t m_dlEarfcn
Downlink E-UTRA Absolute Radio Frequency Channel Number.
Definition: lte-enb-rrc.h:1518
ns3::LteEnbRrc::DoSetPdschConfigDedicated
void DoSetPdschConfigDedicated(uint16_t rnti, LteRrcSap::PdschConfigDedicated pa)
Set PDSCH config dedicated function.
Definition: lte-enb-rrc.cc:2784
ns3::UeManager::BuildNonCriticalExtentionConfigurationCa
LteRrcSap::NonCriticalExtensionConfiguration BuildNonCriticalExtentionConfigurationCa()
Definition: lte-enb-rrc.cc:1517
ns3::LteEnbRrc::GetLteAnrSapUser
LteAnrSapUser * GetLteAnrSapUser()
Get the ANR SAP offered by this RRC.
Definition: lte-enb-rrc.cc:1936
ns3::EpsBearer::GBR_CONV_VOICE
@ GBR_CONV_VOICE
GBR Conversational Voice.
Definition: eps-bearer.h:108
ns3::LteRrcSap::MeasObjectEutra::allowedMeasBandwidth
uint16_t allowedMeasBandwidth
allowed measure bandwidth
Definition: lte-rrc-sap.h:328
ns3::LteEnbRrc::EpcX2SpecificEpcX2SapUser< LteEnbRrc >
friend class EpcX2SpecificEpcX2SapUser< LteEnbRrc >
allow MemberEpcEnbS1SapUser<LteEnbRrc> class friend access
Definition: lte-enb-rrc.h:650
ns3::LtePdcpSapProvider::TransmitPdcpSdu
virtual void TransmitPdcpSdu(TransmitPdcpSduParameters params)=0
Send RRC PDU parameters to the PDCP for transmission.
ns3::UeManager::GetErabList
std::vector< EpcX2Sap::ErabToBeSetupItem > GetErabList()
Definition: lte-enb-rrc.cc:840
ns3::UeManager::m_targetCellId
uint16_t m_targetCellId
target cell ID
Definition: lte-enb-rrc.h:569
ns3::LtePdcpSapProvider::TransmitPdcpSduParameters::lcid
uint8_t lcid
the logical channel id corresponding to the sending RLC instance
Definition: lte-pdcp-sap.h:47
ns3::MakeEnumAccessor
Ptr< const AttributeAccessor > MakeEnumAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
Definition: enum.h:203
ns3::EpcX2Sap::HandoverRequestAckParams::newEnbUeX2apId
uint16_t newEnbUeX2apId
new ENB UE X2 AP ID
Definition: epc-x2-sap.h:249
ns3::EpcX2Sap::HandoverRequestParams::oldEnbUeX2apId
uint16_t oldEnbUeX2apId
old ENB UE X2 AP ID
Definition: epc-x2-sap.h:230
ns3::UeManager::CONNECTION_REESTABLISHMENT
@ CONNECTION_REESTABLISHMENT
Definition: lte-enb-rrc.h:94
ns3::UeManager::RecvRrcConnectionRequest
void RecvRrcConnectionRequest(LteRrcSap::RrcConnectionRequest msg)
Implement the LteEnbRrcSapProvider::RecvRrcConnectionRequest interface.
Definition: lte-enb-rrc.cc:940
ns3::LteEnbRrc::DoRecvResourceStatusUpdate
void DoRecvResourceStatusUpdate(EpcX2SapUser::ResourceStatusUpdateParams params)
Receive resource status update function.
Definition: lte-enb-rrc.cc:2641
ns3::LteRrcSap::MeasResults::measId
uint8_t measId
measure ID
Definition: lte-rrc-sap.h:680
ns3::LteEnbRrc::m_newUeContextTrace
TracedCallback< uint16_t, uint16_t > m_newUeContextTrace
The NewUeContext trace source.
Definition: lte-enb-rrc.h:1651
ns3::LteEnbRrc::~LteEnbRrc
virtual ~LteEnbRrc()
Destructor.
Definition: lte-enb-rrc.cc:1647
ns3::Packet::RemovePacketTag
bool RemovePacketTag(Tag &tag)
Remove a packet tag.
Definition: packet.cc:963
ns3::TimeValue
AttributeValue implementation for Time.
Definition: nstime.h:1353
ns3::LteEnbRrc::GetTypeId
static TypeId GetTypeId(void)
Get the type ID.
Definition: lte-enb-rrc.cc:1683
ns3::LteRrcSap::SCellToAddMod::sCellIndex
uint32_t sCellIndex
SCell index.
Definition: lte-rrc-sap.h:821
ns3::LteRlc::GetLteRlcSapProvider
LteRlcSapProvider * GetLteRlcSapProvider()
Definition: lte-rlc.cc:154
ns3::LteEnbRrc::SendSystemInformation
void SendSystemInformation()
method used to periodically send System Information
Definition: lte-enb-rrc.cc:3052
NS_LOG_FUNCTION
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
Definition: log-macros-enabled.h:244
ns3::EpcX2Sap::HandoverPreparationFailureParams::sourceCellId
uint16_t sourceCellId
source cell ID
Definition: epc-x2-sap.h:265
ns3::UeManager::m_drbCreatedTrace
TracedCallback< uint64_t, uint16_t, uint16_t, uint8_t > m_drbCreatedTrace
The DrbCreated trace source.
Definition: lte-enb-rrc.h:564
ns3::LteEnbRrc::GetLteEnbRrcSapProvider
LteEnbRrcSapProvider * GetLteEnbRrcSapProvider()
Definition: lte-enb-rrc.cc:1998
ns3::LteRrcSap::RadioResourceConfigDedicated::drbToReleaseList
std::list< uint8_t > drbToReleaseList
DRB to release list.
Definition: lte-rrc-sap.h:289
ns3::LteRrcSap::PhysicalConfigDedicated::soundingRsUlConfigDedicated
SoundingRsUlConfigDedicated soundingRsUlConfigDedicated
sounding RS UL config dedicated
Definition: lte-rrc-sap.h:219
ns3::LteRrcSap::PhysicalConfigDedicatedSCell::pdschConfigDedicated
PdschConfigDedicated pdschConfigDedicated
PDSCH config dedicated.
Definition: lte-rrc-sap.h:791
ns3::LteEnbRrc::m_handoverLeavingTimeoutDuration
Time m_handoverLeavingTimeoutDuration
The HandoverLeavingTimeoutDuration attribute.
Definition: lte-enb-rrc.h:1645
ns3::LteRrcSap::ReportConfigEutra::EVENT_A5
@ EVENT_A5
Event A5: PCell becomes worse than absolute threshold1 AND Neighbour becomes better than another abso...
Definition: lte-rrc-sap.h:377
ns3::LteEnbRrc::MemberLteCcmRrcSapUser< LteEnbRrc >
friend class MemberLteCcmRrcSapUser< LteEnbRrc >
allow MemberLteCcmRrcSapUser<LteEnbRrc> class friend access
Definition: lte-enb-rrc.h:654
ns3::LteRrcSap::CellIdentification::physCellId
uint32_t physCellId
physical cell ID
Definition: lte-rrc-sap.h:714
ns3::LteAnrSapUser
Service Access Point (SAP) offered by the eNodeB RRC instance to the ANR instance.
Definition: lte-anr-sap.h:98
ns3::LteRrcSap::ReportConfigEutra::REPORT_STRONGEST_CELLS
@ REPORT_STRONGEST_CELLS
Definition: lte-rrc-sap.h:399
ns3::EnbRrcMemberLteEnbCmacSapUser::RrcConfigurationUpdateInd
virtual void RrcConfigurationUpdateInd(UeConfig params)
Notify the RRC of a UE config updated requested by the MAC (normally, by the scheduler)
Definition: lte-enb-rrc.cc:102
ns3::UeManager::SendPacket
void SendPacket(uint8_t bid, Ptr< Packet > p)
Send a data packet over the appropriate Data Radio Bearer.
Definition: lte-enb-rrc.cc:768
ns3::UeManager::CancelPendingEvents
void CancelPendingEvents()
Cancel all timers which are running for the UE.
Definition: lte-enb-rrc.cc:1305
ns3::LteRrcSap::SystemInformation::sib2
SystemInformationBlockType2 sib2
SIB2.
Definition: lte-rrc-sap.h:611
ns3::LtePdcpSapUser::ReceivePdcpSduParameters::rnti
uint16_t rnti
the C-RNTI identifying the UE
Definition: lte-pdcp-sap.h:80
ns3::EpcX2Sap::UeDataParams::sourceCellId
uint16_t sourceCellId
source cell ID
Definition: epc-x2-sap.h:330
ns3::LteRrcSap::RrcConnectionReconfiguration
RrcConnectionReconfiguration structure.
Definition: lte-rrc-sap.h:837
ns3::LteRrcSap::SystemInformationBlockType2::radioResourceConfigCommon
RadioResourceConfigCommonSib radioResourceConfigCommon
radio resource config common
Definition: lte-rrc-sap.h:603
ns3::EpsBearerTag::SetBid
void SetBid(uint8_t bid)
Set the bearer id to the given value.
Definition: eps-bearer-tag.cc:74
ns3::LteRrcSap::MeasResults::measScellResultList
MeasResultServFreqList measScellResultList
measure SCell result list
Definition: lte-rrc-sap.h:686
ns3::UeManager::HANDOVER_PATH_SWITCH
@ HANDOVER_PATH_SWITCH
Definition: lte-enb-rrc.h:97
ns3::LteRrcSap::RrcConnectionReconfiguration::mobilityControlInfo
MobilityControlInfo mobilityControlInfo
mobility control info
Definition: lte-rrc-sap.h:842
ns3::LteEnbRrc::DoRecvRrcConnectionReconfigurationCompleted
void DoRecvRrcConnectionReconfigurationCompleted(uint16_t rnti, LteRrcSap::RrcConnectionReconfigurationCompleted msg)
Part of the RRC protocol.
Definition: lte-enb-rrc.cc:2407
ns3::LteEnbRrc::m_s1SapUser
EpcEnbS1SapUser * m_s1SapUser
Interface to receive messages from core network over the S1 protocol.
Definition: lte-enb-rrc.h:1508
ns3::LteRrcSap::SrbToAddMod
SrbToAddMod structure.
Definition: lte-rrc-sap.h:229
ns3::LteRrcSap::SCellToAddMod::cellIdentification
CellIdentification cellIdentification
cell identification
Definition: lte-rrc-sap.h:822
ns3::LteRrcSap::PreambleInfo::numberOfRaPreambles
uint8_t numberOfRaPreambles
number of RA preambles
Definition: lte-rrc-sap.h:247
ns3::EpcX2Sap::HandoverPreparationFailureParams::criticalityDiagnostics
uint16_t criticalityDiagnostics
criticality diagnostics
Definition: epc-x2-sap.h:268
ns3::LteRrcSap::PhysicalConfigDedicatedSCell::havePdschConfigDedicated
bool havePdschConfigDedicated
have PDSCH config dedicated?
Definition: lte-rrc-sap.h:790
ns3::EpcX2Sap::HandoverPreparationFailureParams::cause
uint16_t cause
cause
Definition: epc-x2-sap.h:267
ns3::LteRrcSap::QuantityConfig::filterCoefficientRSRP
uint8_t filterCoefficientRSRP
filter coefficient RSRP
Definition: lte-rrc-sap.h:297
ns3::EpcX2Sap::HandoverRequestAckParams::admittedBearers
std::vector< ErabAdmittedItem > admittedBearers
admitted bearers
Definition: epc-x2-sap.h:252
ns3::LteRrcSap::RaSupervisionInfo::raResponseWindowSize
uint8_t raResponseWindowSize
RA response window size.
Definition: lte-rrc-sap.h:254
ns3::EpsBearer::qci
enum ns3::EpsBearer::Qci qci
Qos class indicator.
ns3::LteEnbRrc::m_systemInformationPeriodicity
Time m_systemInformationPeriodicity
The SystemInformationPeriodicity attribute.
Definition: lte-enb-rrc.h:1575
ns3::EnbRrcMemberLteEnbCmacSapUser::m_componentCarrierId
uint8_t m_componentCarrierId
Component carrier ID.
Definition: lte-enb-rrc.cc:80
ns3::ObjectFactory::SetTypeId
void SetTypeId(TypeId tid)
Set the TypeId of the Objects to be created by this factory.
Definition: object-factory.cc:40
ns3::UeManager::HANDOVER_LEAVING
@ HANDOVER_LEAVING
Definition: lte-enb-rrc.h:98
ns3::UintegerValue
Hold an unsigned integer type.
Definition: uinteger.h:44
ns3::LteRrcSap::RadioResourceConfigDedicated::drbToAddModList
std::list< DrbToAddMod > drbToAddModList
DRB to add mod list.
Definition: lte-rrc-sap.h:288
ns3::LteEnbRrc::RLC_AM_ALWAYS
@ RLC_AM_ALWAYS
Definition: lte-enb-rrc.h:1042
ns3::LteEnbRrc::GetLteFfrRrcSapUser
LteFfrRrcSapUser * GetLteFfrRrcSapUser()
Get the FFR SAP offered by this RRC.
Definition: lte-enb-rrc.cc:1976
ns3::LteEnbRrc::m_qRxLevMin
int8_t m_qRxLevMin
The QRxLevMin attribute.
Definition: lte-enb-rrc.h:1589
ns3::LteEnbRrc::GetRlcType
TypeId GetRlcType(EpsBearer bearer)
Definition: lte-enb-rrc.cc:2861
ns3::LteEnbRrc::m_handoverMeasIds
std::set< uint8_t > m_handoverMeasIds
List of measurement identities which are intended for handover purpose.
Definition: lte-enb-rrc.h:1543
ns3::LteEnbRrc::m_handoverEndOkTrace
TracedCallback< uint64_t, uint16_t, uint16_t > m_handoverEndOkTrace
The HandoverEndOk trace source.
Definition: lte-enb-rrc.h:1671
ns3::ObjectFactory::Create
Ptr< Object > Create(void) const
Create an Object instance of the configured TypeId.
Definition: object-factory.cc:98
ns3::MemberLteEnbCphySapUser
Template for the implementation of the LteEnbCphySapUser as a member of an owner class of type C to w...
Definition: lte-enb-cphy-sap.h:270
ns3::EpcEnbS1SapProvider::PathSwitchRequestParameters::rnti
uint16_t rnti
RNTI.
Definition: epc-enb-s1-sap.h:69
ns3::LteRrcSap::PdschConfigDedicated::dB0
@ dB0
Definition: lte-rrc-sap.h:166
ns3::LteRrcSap::CellSelectionInfo::qRxLevMin
int8_t qRxLevMin
INTEGER (-70..-22), actual value = IE value * 2 [dBm].
Definition: lte-rrc-sap.h:83
ns3::LteRrcSap::AsConfig::sourceUeIdentity
uint16_t sourceUeIdentity
source UE identity
Definition: lte-rrc-sap.h:619
ns3::UeManager::InitialContextSetupRequest
void InitialContextSetupRequest()
Process Initial context setup request message from the MME.
Definition: lte-enb-rrc.cc:380
ns3::UeManager::RecvUeContextRelease
void RecvUeContextRelease(EpcX2SapUser::UeContextReleaseParams params)
Take the necessary actions in response to the reception of an X2 UE CONTEXT RELEASE message.
Definition: lte-enb-rrc.cc:921
ns3::LteRrcSap::MeasIdToAddMod::reportConfigId
uint8_t reportConfigId
report config ID
Definition: lte-rrc-sap.h:468
ns3::LteEnbCmacSapProvider::RachConfig::numberOfRaPreambles
uint8_t numberOfRaPreambles
number of RA preambles
Definition: lte-enb-cmac-sap.h:139
ns3::LteEnbRrc::m_rrcSapProvider
LteEnbRrcSapProvider * m_rrcSapProvider
Interface to receive messages from UE over the RRC protocol.
Definition: lte-enb-rrc.h:1500
ns3::LteEnbRrc::DoRecvUeContextRelease
void DoRecvUeContextRelease(EpcX2SapUser::UeContextReleaseParams params)
Receive UE context release function.
Definition: lte-enb-rrc.cc:2613
ns3::LteEnbRrc::DoInitialContextSetupRequest
void DoInitialContextSetupRequest(EpcEnbS1SapUser::InitialContextSetupRequestParameters params)
Initial context setup request function.
Definition: lte-enb-rrc.cc:2435
ns3::LteEnbRrc::m_cphySapUser
std::vector< LteEnbCphySapUser * > m_cphySapUser
Receive API calls from the eNodeB PHY instances.
Definition: lte-enb-rrc.h:1511
ns3::EpcX2Sap::HandoverRequestParams::sourceCellId
uint16_t sourceCellId
source cell ID
Definition: epc-x2-sap.h:232
ns3::LtePdcpSapProvider::TransmitPdcpSduParameters::rnti
uint16_t rnti
the C-RNTI identifying the UE
Definition: lte-pdcp-sap.h:46
ns3::LteEnbCmacSapProvider::RachConfig::connEstFailCount
uint8_t connEstFailCount
the counter value for T300 timer expiration
Definition: lte-enb-cmac-sap.h:142
ns3::UeManager::GetRrcConnectionReconfigurationForHandover
LteRrcSap::RrcConnectionReconfiguration GetRrcConnectionReconfigurationForHandover()
Definition: lte-enb-rrc.cc:761
ns3::LteEnbRrc::GetNewSrsConfigurationIndex
uint16_t GetNewSrsConfigurationIndex(void)
Allocate a new SRS configuration index for a new UE.
Definition: lte-enb-rrc.cc:2970
ns3::UeManager::ScheduleRrcConnectionReconfiguration
void ScheduleRrcConnectionReconfiguration()
schedule an RRC Connection Reconfiguration procedure with the UE
Definition: lte-enb-rrc.cc:601
ns3::LteEnbRrc::SetLteMacSapProvider
void SetLteMacSapProvider(LteMacSapProvider *s)
set the MAC SAP provider.
Definition: lte-enb-rrc.cc:2005
ns3::LteRrcSap::MobilityControlInfo::haveCarrierFreq
bool haveCarrierFreq
have carrier frequency?
Definition: lte-rrc-sap.h:561
ns3::LtePdcpSapUser::ReceivePdcpSduParameters::pdcpSdu
Ptr< Packet > pdcpSdu
the RRC PDU
Definition: lte-pdcp-sap.h:79
ns3::EpsBearer::GetPacketErrorLossRate
double GetPacketErrorLossRate() const
Definition: eps-bearer.cc:137
ns3::LteRrcSap::SCellToAddMod::radioResourceConfigDedicateSCell
RadioResourceConfigDedicatedSCell radioResourceConfigDedicateSCell
radio resource config dedicated SCell
Definition: lte-rrc-sap.h:825
ns3::LteEnbRrc::DoRecvSnStatusTransfer
void DoRecvSnStatusTransfer(EpcX2SapUser::SnStatusTransferParams params)
Receive SN status transfer function.
Definition: lte-enb-rrc.cc:2597
ns3::MakeUintegerAccessor
Ptr< const AttributeAccessor > MakeUintegerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
Definition: uinteger.h:45
ns3::LteEnbRrc::SetLteAnrSapProvider
void SetLteAnrSapProvider(LteAnrSapProvider *s)
set the ANR SAP this RRC should interact with
Definition: lte-enb-rrc.cc:1929
ns3::EpcX2Sap::ErabToBeSetupItem::dlForwarding
bool dlForwarding
DL forwarding.
Definition: epc-x2-sap.h:63
ns3::UeManager::StartDataRadioBearers
void StartDataRadioBearers()
Start the data radio bearers that have been previously recorded to be started using RecordDataRadioBe...
Definition: lte-enb-rrc.cc:512
ns3::LteEnbRrc::m_rsrpFilterCoefficient
uint8_t m_rsrpFilterCoefficient
The RsrpFilterCoefficient attribute.
Definition: lte-enb-rrc.h:1605
ns3::LteEnbRrc::DoRecvHandoverRequest
void DoRecvHandoverRequest(EpcX2SapUser::HandoverRequestParams params)
Receive handover request function.
Definition: lte-enb-rrc.cc:2473
ns3::UeManager::UeManager
UeManager()
Definition: lte-enb-rrc.cc:149
ns3::EpcEnbS1SapUser::DataRadioBearerSetupRequestParameters::bearerId
uint8_t bearerId
the EPS Bearer Identifier
Definition: epc-enb-s1-sap.h:131
ns3::LteEnbRrcSapUser::RemoveUe
virtual void RemoveUe(uint16_t rnti)=0
Remove UE function.
ns3::LteRrcSap::PhysicalConfigDedicated::haveSoundingRsUlConfigDedicated
bool haveSoundingRsUlConfigDedicated
have sounding RS UL config dedicated?
Definition: lte-rrc-sap.h:218
ns3::LteRrcSap::NonUlConfiguration::pdschConfigCommon
PdschConfigCommon pdschConfigCommon
4: Physical configuration, physical channels pdsch-ConfigCommon-r10
Definition: lte-rrc-sap.h:747
ns3::UeManager::HANDOVER_PREPARATION
@ HANDOVER_PREPARATION
Definition: lte-enb-rrc.h:95
ns3::LteRrcSap::MeasIdToAddMod::measId
uint8_t measId
measure ID
Definition: lte-rrc-sap.h:466
ns3::LteEnbRrc::GetLteHandoverManagementSapUser
LteHandoverManagementSapUser * GetLteHandoverManagementSapUser()
Get the Handover Management SAP offered by this RRC.
Definition: lte-enb-rrc.cc:1908
ns3::UeManager::m_handoverLeavingTimeout
EventId m_handoverLeavingTimeout
Time limit before a handover leaving timeout occurs.
Definition: lte-enb-rrc.h:605
ns3::UeManager::GetSrsConfigurationIndex
uint16_t GetSrsConfigurationIndex(void) const
Definition: lte-enb-rrc.cc:1259
ns3::UeManager::~UeManager
virtual ~UeManager(void)
Definition: lte-enb-rrc.cc:312
MAX_NO_CC
#define MAX_NO_CC
Definition: lte-enb-rrc.h:57
ns3::LteRrcSap::ThresholdEutra::THRESHOLD_RSRQ
@ THRESHOLD_RSRQ
RSRQ is used for the threshold.
Definition: lte-rrc-sap.h:355
ns3::LteRrcSap::NonCriticalExtensionConfiguration
NonCriticalExtensionConfiguration structure.
Definition: lte-rrc-sap.h:830
ns3::LteRrcSap::AsConfig::sourceDlCarrierFreq
uint32_t sourceDlCarrierFreq
source DL carrier frequency
Definition: lte-rrc-sap.h:623
ns3::LteRrcSap::RrcConnectionReconfiguration::haveRadioResourceConfigDedicated
bool haveRadioResourceConfigDedicated
have radio resource config dedicated
Definition: lte-rrc-sap.h:843
ns3::LteEnbRrc::m_handoverJoiningTimeoutDuration
Time m_handoverJoiningTimeoutDuration
The HandoverJoiningTimeoutDuration attribute.
Definition: lte-enb-rrc.h:1639
ns3::UeManager::m_rrc
Ptr< LteEnbRrc > m_rrc
Pointer to the parent eNodeB RRC.
Definition: lte-enb-rrc.h:544
ns3::LteEnbCmacSapProvider::LcInfo::qci
uint8_t qci
QoS Class Identifier.
Definition: lte-enb-cmac-sap.h:77
ns3::LteEnbCphySapProvider
Service Access Point (SAP) offered by the UE PHY to the UE RRC for control purposes.
Definition: lte-enb-cphy-sap.h:41
ns3::LteEnbRrc::AddUe
uint16_t AddUe(UeManager::State state, uint8_t componentCarrierId)
Allocate a new RNTI for a new UE.
Definition: lte-enb-rrc.cc:2800
ns3::LteRrcSap::RadioResourceConfigDedicated::havePhysicalConfigDedicated
bool havePhysicalConfigDedicated
have physical config dedicated?
Definition: lte-rrc-sap.h:290
ns3::LteRrcSap::ConvertPdschConfigDedicated2Double
static double ConvertPdschConfigDedicated2Double(PdschConfigDedicated pdschConfigDedicated)
Convert PDSCH config dedicated function.
Definition: lte-rrc-sap.h:180
ns3::LteRrcSap::NonCriticalExtensionConfiguration::sCellsToAddModList
std::list< SCellToAddMod > sCellsToAddModList
SCell to add mod list.
Definition: lte-rrc-sap.h:831
ns3::LteEnbRrc::DoNotifyLcConfigResult
void DoNotifyLcConfigResult(uint16_t rnti, uint8_t lcid, bool success)
Notify LC config result function.
Definition: lte-enb-rrc.cc:2692
ns3::LteEnbRrc::DoDataRadioBearerSetupRequest
void DoDataRadioBearerSetupRequest(EpcEnbS1SapUser::DataRadioBearerSetupRequestParameters params)
Data radio beaerer setup request function.
Definition: lte-enb-rrc.cc:2457
ns3::LteEnbRrc::SetForwardUpCallback
void SetForwardUpCallback(Callback< void, Ptr< Packet > > cb)
set the callback used to forward data packets up the stack
Definition: lte-enb-rrc.cc:2313
ns3::EpcX2Sap::UeDataParams::targetCellId
uint16_t targetCellId
target cell ID
Definition: epc-x2-sap.h:331
ns3::LteEnbCmacSapProvider::LcInfo::rnti
uint16_t rnti
C-RNTI identifying the UE.
Definition: lte-enb-cmac-sap.h:74
ns3::LteRrcSap::RrcConnectionReestablishmentComplete
RrcConnectionReestablishmentComplete structure.
Definition: lte-rrc-sap.h:873
ns3::LteFfrRrcSapProvider
Service Access Point (SAP) offered by the Frequency Reuse algorithm instance to the eNodeB RRC instan...
Definition: lte-ffr-rrc-sap.h:39
ns3::LteEnbCmacSapProvider::LcInfo::mbrDl
uint64_t mbrDl
maximum bitrate in downlink
Definition: lte-enb-cmac-sap.h:80
ns3::UeManager::m_rnti
uint16_t m_rnti
The C-RNTI attribute.
Definition: lte-enb-rrc.h:529
ns3::LteRrcSap::RadioResourceConfigDedicated
RadioResourceConfigDedicated structure.
Definition: lte-rrc-sap.h:286
ns3::LteRrcSap::MeasIdToAddMod::measObjectId
uint8_t measObjectId
measure object ID
Definition: lte-rrc-sap.h:467
ns3::UeManager::Drbid2Lcid
uint8_t Drbid2Lcid(uint8_t drbid)
Definition: lte-enb-rrc.cc:1436
ns3::LteRrcSap::UlConfiguration::soundingRsUlConfigCommon
SoundingRsUlConfigCommon soundingRsUlConfigCommon
sounding RS UL config common
Definition: lte-rrc-sap.h:757
ns3::UeManager::SetSource
void SetSource(uint16_t sourceCellId, uint16_t sourceX2apId)
Set the identifiers of the source eNB for the case where a UE joins the current eNB as part of a hand...
Definition: lte-enb-rrc.cc:367
ns3::LteEnbRrc::GetUeManager
Ptr< UeManager > GetUeManager(uint16_t rnti)
Definition: lte-enb-rrc.cc:2076
ns3::LteEnbRrc::m_lastAllocatedConfigurationIndex
uint16_t m_lastAllocatedConfigurationIndex
last allocated configuration index
Definition: lte-enb-rrc.h:1581
ns3::LteRrcSap::AntennaInfoDedicated::transmissionMode
uint8_t transmissionMode
transmission mode
Definition: lte-rrc-sap.h:143
ns3::LteRrcSap::QuantityConfig::filterCoefficientRSRQ
uint8_t filterCoefficientRSRQ
filter coefficient RSRQ
Definition: lte-rrc-sap.h:298
ns3::EpcX2Sap::HandoverRequestParams::cause
uint16_t cause
cause
Definition: epc-x2-sap.h:231
ns3::LteEnbRrc::SetLteEnbRrcSapUser
void SetLteEnbRrcSapUser(LteEnbRrcSapUser *s)
set the RRC SAP this RRC should interact with
Definition: lte-enb-rrc.cc:1991
ns3::LteEnbRrc::GetLteEnbCphySapUser
LteEnbCphySapUser * GetLteEnbCphySapUser()
Definition: lte-enb-rrc.cc:2039
ns3::LteRrcSap::RrcConnectionReestablishment::rrcTransactionIdentifier
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
Definition: lte-rrc-sap.h:867
ns3::EnbRrcMemberLteEnbCmacSapUser
Class for forwarding CMAC SAP User functions.
Definition: lte-enb-rrc.cc:63
ns3::LteRrcSap::SystemInformation::haveSib2
bool haveSib2
have SIB2?
Definition: lte-rrc-sap.h:610
ns3::LteEnbRrc::LteEnbRrc
LteEnbRrc()
create an RRC instance for use within an eNB
Definition: lte-enb-rrc.cc:1598
ns3::LteEnbRrc::m_cphySapProvider
std::vector< LteEnbCphySapProvider * > m_cphySapProvider
Interface to the eNodeB PHY instances.
Definition: lte-enb-rrc.h:1513
ns3::EpcX2Sap::ErabsSubjectToStatusTransferItem
ErabsSubjectToStatusTransferItem structure.
Definition: epc-x2-sap.h:102
ns3::EpsBearer::IsGbr
bool IsGbr() const
Definition: eps-bearer.cc:119
ns3::EpcEnbS1SapProvider::BearerToBeSwitched::epsBearerId
uint8_t epsBearerId
Bearer ID.
Definition: epc-enb-s1-sap.h:62
ns3::MakeTimeAccessor
Ptr< const AttributeAccessor > MakeTimeAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
Definition: nstime.h:1354
ns3::EpcX2SapUser
These service primitives of this part of the X2 SAP are provided by the RRC entity and issued by the ...
Definition: epc-x2-sap.h:407
ns3::LteEnbCmacSapProvider::AllocateNcRaPreambleReturnValue::valid
bool valid
true if a valid RA config was allocated, false otherwise
Definition: lte-enb-cmac-sap.h:157
ns3::LteEnbRrcSapUser::SetupUeParameters::srb0SapProvider
LteRlcSapProvider * srb0SapProvider
SRB0 SAP provider.
Definition: lte-rrc-sap.h:1087
ns3::UeManager::LtePdcpSpecificLtePdcpSapUser< UeManager >
friend class LtePdcpSpecificLtePdcpSapUser< UeManager >
allow LtePdcpSpecificLtePdcpSapUser<UeManager> class friend access
Definition: lte-enb-rrc.h:77
ns3::LteEnbRrc::m_s1SapProvider
EpcEnbS1SapProvider * m_s1SapProvider
Interface to send messages to core network over the S1 protocol.
Definition: lte-enb-rrc.h:1506
ns3::LteEnbRrc::DoRrcConfigurationUpdateInd
void DoRrcConfigurationUpdateInd(LteEnbCmacSapUser::UeConfig params)
RRC configuration update indication function.
Definition: lte-enb-rrc.cc:2685
ns3::LteEnbCmacSapUser::UeConfig
Parameters for [re]configuring the UE.
Definition: lte-enb-cmac-sap.h:206
ns3::EpcX2Sap::HandoverDesirableForRadioReason
@ HandoverDesirableForRadioReason
Definition: epc-x2-sap.h:218
ns3::EpcX2Sap::ResourceStatusUpdateParams
Parameters of the RESOURCE STATUS UPDATE message.
Definition: epc-x2-sap.h:315
ns3::LteRrcSap::FreqInfo::ulBandwidth
uint16_t ulBandwidth
UL bandwidth.
Definition: lte-rrc-sap.h:91
ns3::LteEnbRrc::ComponentCarrierToCellId
uint16_t ComponentCarrierToCellId(uint8_t componentCarrierId)
convert the component carrier id to cell id
Definition: lte-enb-rrc.cc:2292
ns3::LteRrcSap::PhysicalConfigDedicatedSCell::antennaInfoUl
AntennaInfoDedicated antennaInfoUl
antenna info UL
Definition: lte-rrc-sap.h:796
ns3::UeManager::SetImsi
void SetImsi(uint64_t imsi)
Set the IMSI.
Definition: lte-enb-rrc.cc:374
ns3::LteRrcSap::AsConfig::sourceSystemInformationBlockType2
SystemInformationBlockType2 sourceSystemInformationBlockType2
source system information block type 2
Definition: lte-rrc-sap.h:622
ns3::UeManager::ATTACH_REQUEST
@ ATTACH_REQUEST
Definition: lte-enb-rrc.h:91
ns3::LteEnbRrc::DoRecvHandoverPreparationFailure
void DoRecvHandoverPreparationFailure(EpcX2SapUser::HandoverPreparationFailureParams params)
Receive handover preparation failure function.
Definition: lte-enb-rrc.cc:2579
ns3::LteRrcSap::DrbToAddMod::rlcConfig
RlcConfig rlcConfig
RLC config.
Definition: lte-rrc-sap.h:239
ns3::EpcX2Sap::HandoverRequestAckParams::sourceCellId
uint16_t sourceCellId
source cell ID
Definition: epc-x2-sap.h:250
MIN_NO_CC
#define MIN_NO_CC
Definition: lte-enb-rrc.h:56