29#include <ns3/fatal-error.h>
31#include <ns3/object-factory.h>
32#include <ns3/object-map.h>
33#include <ns3/packet.h>
34#include <ns3/pointer.h>
35#include <ns3/simulator.h>
71 uint8_t componentCarrierId)
73 m_componentCarrierId{componentCarrierId}
107 "INITIAL_RANDOM_ACCESS",
109 "CONNECTION_REJECTED",
111 "CONNECTED_NORMALLY",
112 "CONNECTION_RECONFIGURATION",
113 "CONNECTION_REESTABLISHMENT",
114 "HANDOVER_PREPARATION",
116 "HANDOVER_PATH_SWITCH",
124static const std::string&
138 : m_lastAllocatedDrbid(0),
141 m_componentCarrierId(componentCarrierId),
142 m_lastRrcTransactionIdentifier(0),
145 m_pendingRrcConnectionReconfiguration(false),
148 m_needPhyMacConfiguration(false),
149 m_caSupportConfigured(false),
150 m_pendingStartDataRadioBearers(false)
165 m_rrc->GetNewSrsConfigurationIndex();
172 for (uint16_t i = 0; i <
m_rrc->m_numberOfComponentCarriers; i++)
183 rlc->SetLteMacSapProvider(
m_rrc->m_macSapProvider);
189 m_srb0->m_srbIdentity = 0;
208 m_rrc->m_ccmRrcSapProvider->ConfigureSignalBearer(lcinfo, rlc->GetLteMacSapUser());
211 m_rrc->m_ccmRrcSapProvider->AddLc(lcinfo, lteMacSapUser);
219 rlc->SetLteMacSapProvider(
m_rrc->m_macSapProvider);
227 pdcp->SetLteRlcSapProvider(rlc->GetLteRlcSapProvider());
228 rlc->SetLteRlcSapUser(pdcp->GetLteRlcSapUser());
233 m_srb1->m_srbIdentity = 1;
234 m_srb1->m_logicalChannelConfig.priority = 1;
235 m_srb1->m_logicalChannelConfig.prioritizedBitRateKbps = 100;
236 m_srb1->m_logicalChannelConfig.bucketSizeDurationMs = 100;
237 m_srb1->m_logicalChannelConfig.logicalChannelGroup = 0;
252 m_rrc->m_ccmRrcSapProvider->ConfigureSignalBearer(lcinfo, rlc->GetLteMacSapUser());
255 m_rrc->m_ccmRrcSapProvider->AddLc(lcinfo, MacSapUserForRlc);
269 for (uint16_t i = 0; i <
m_rrc->m_numberOfComponentCarriers; i++)
271 m_rrc->m_cmacSapProvider.at(i)->UeUpdateConfigurationReq(req);
272 m_rrc->m_cphySapProvider.at(i)->SetTransmissionMode(
275 m_rrc->m_cphySapProvider.at(i)->SetSrsConfigurationIndex(
281 Time maxConnectionDelay;
316 m_rrc->m_x2uTeidInfoMap.erase(it->second->m_gtpTeid);
326 .AddConstructor<UeManager>()
327 .AddAttribute(
"DataRadioBearerMap",
328 "List of UE DataRadioBearerInfo by DRBID.",
332 .AddAttribute(
"Srb0",
333 "SignalingRadioBearerInfo for SRB0",
337 .AddAttribute(
"Srb1",
338 "SignalingRadioBearerInfo for SRB1",
342 .AddAttribute(
"C-RNTI",
343 "Cell Radio Network Temporary Identifier",
348 .AddTraceSource(
"StateTransition",
349 "fired upon every UE state transition seen by the "
350 "UeManager at the eNB RRC",
352 "ns3::UeManager::StateTracedCallback")
353 .AddTraceSource(
"DrbCreated",
354 "trace fired after DRB is created",
356 "ns3::UeManager::ImsiCidRntiLcIdTracedCallback");
402 <<
", the assumption that ID are allocated in the same "
403 "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;
416 x2uTeidInfo.
drbid = drbid;
417 auto ret =
m_rrc->m_x2uTeidInfoMap.insert(
418 std::pair<uint32_t, LteEnbRrc::X2uTeidInfo>(gtpTeid, x2uTeidInfo));
419 NS_ASSERT_MSG(ret.second ==
true,
"overwriting a pre-existing entry in m_x2uTeidInfoMap");
427 rlc->SetLteMacSapProvider(
m_rrc->m_macSapProvider);
431 drbInfo->m_rlc = rlc;
443 pdcp->SetLteRlcSapProvider(rlc->GetLteRlcSapProvider());
444 rlc->SetLteRlcSapUser(pdcp->GetLteRlcSapUser());
445 drbInfo->m_pdcp = pdcp;
450 std::vector<LteCcmRrcSapProvider::LcsConfig> lcOnCcMapping =
451 m_rrc->m_ccmRrcSapProvider->SetupDataRadioBearer(bearer,
455 m_rrc->GetLogicalChannelGroup(bearer),
456 rlc->GetLteMacSapUser());
469 auto itLcOnCcMapping = lcOnCcMapping.begin();
470 NS_ASSERT_MSG(itLcOnCcMapping != lcOnCcMapping.end(),
"Problem");
471 for (itLcOnCcMapping = lcOnCcMapping.begin(); itLcOnCcMapping != lcOnCcMapping.end();
474 NS_LOG_DEBUG(
this <<
" RNTI " << itLcOnCcMapping->lc.rnti <<
"Lcid "
475 << (uint16_t)itLcOnCcMapping->lc.lcId <<
" lcGroup "
476 << (uint16_t)itLcOnCcMapping->lc.lcGroup <<
" ComponentCarrierId "
477 << itLcOnCcMapping->componentCarrierId);
478 uint8_t index = itLcOnCcMapping->componentCarrierId;
481 m_rrc->m_cmacSapProvider.at(index)->AddLc(lcinfo, msu);
482 m_rrc->m_ccmRrcSapProvider->AddLc(lcinfo, msu);
494 drbInfo->m_logicalChannelIdentity = lcid;
495 drbInfo->m_logicalChannelConfig.priority =
m_rrc->GetLogicalChannelPriority(bearer);
496 drbInfo->m_logicalChannelConfig.logicalChannelGroup =
m_rrc->GetLogicalChannelGroup(bearer);
499 drbInfo->m_logicalChannelConfig.prioritizedBitRateKbps = bearer.
gbrQosInfo.
gbrUl;
503 drbInfo->m_logicalChannelConfig.prioritizedBitRateKbps = 0;
505 drbInfo->m_logicalChannelConfig.bucketSizeDurationMs = 1000;
526 auto drbIt =
m_drbMap.find(*drbIdIt);
528 drbIt->second->m_rlc->Initialize();
529 if (drbIt->second->m_pdcp)
531 drbIt->second->m_pdcp->Initialize();
544 "request to remove radio bearer with unknown drbid " << drbid);
547 m_rrc->m_x2uTeidInfoMap.erase(it->second->m_gtpTeid);
550 std::vector<uint8_t> ccToRelease =
551 m_rrc->m_ccmRrcSapProvider->ReleaseDataRadioBearer(
m_rnti, lcid);
552 auto itCcToRelease = ccToRelease.begin();
554 "request to remove radio bearer with unknown drbid (ComponentCarrierManager)");
555 for (itCcToRelease = ccToRelease.begin(); itCcToRelease != ccToRelease.end(); ++itCcToRelease)
557 m_rrc->m_cmacSapProvider.at(*itCcToRelease)->ReleaseLc(
m_rnti, lcid);
570 msg.haveMobilityControlInfo =
false;
571 msg.radioResourceConfigDedicated = rrcd;
572 msg.haveRadioResourceConfigDedicated =
true;
575 msg.haveNonCriticalExtension =
false;
577 m_rrc->m_rrcSapUser->SendRrcConnectionReconfiguration(
m_rnti, msg);
590 ueManager->ReleaseDataRadioBearer(bearerId);
602 if (
m_rrc->m_s1SapProvider !=
nullptr)
607 << (uint16_t)(it.first)
608 <<
"LCID : " << (uint16_t)(it.second->m_logicalChannelIdentity));
610 m_rrc->m_s1SapProvider->DoSendReleaseIndication(
GetImsi(), rnti, it.first);
636 m_rrc->m_rrcSapUser->SendRrcConnectionReconfiguration(
m_rnti, msg);
661 if (
m_rrc->HasCellId(cellId))
664 NS_LOG_DEBUG(
"Intra-eNB handover for cellId " << cellId);
665 uint8_t componentCarrierId =
m_rrc->CellToComponentCarrierId(cellId);
668 m_rrc->m_cmacSapProvider.at(componentCarrierId)->AllocateNcRaPreamble(rnti);
671 NS_LOG_INFO(
this <<
" failed to allocate a preamble for non-contention based RA => "
672 "cannot perform HO");
673 NS_FATAL_ERROR(
"should trigger HO Preparation Failure, but it is not implemented");
678 ueManager->SetSource(sourceComponentCarrier->GetCellId(),
m_rnti);
679 ueManager->SetImsi(
m_imsi);
684 ueManager->SetupDataRadioBearer(it.second->m_epsBearer,
685 it.second->m_epsBearerIdentity,
686 it.second->m_gtpTeid,
687 it.second->m_transportLayerAddress);
701 m_rrc->m_cmacSapProvider.at(componentCarrierId)->GetRachConfig();
709 m_rrc->m_rrcSapUser->SendRrcConnectionReconfiguration(
m_rnti, handoverCommand);
718 sourceComponentCarrier->GetCellId(),
725 NS_LOG_DEBUG(
"Inter-eNB handover (i.e., X2) for cellId " << cellId);
727 params.oldEnbUeX2apId =
m_rnti;
730 params.targetCellId = cellId;
731 params.mmeUeS1apId =
m_imsi;
732 params.ueAggregateMaxBitRateDownlink = 200 * 1000;
733 params.ueAggregateMaxBitRateUplink = 100 * 1000;
743 sourceComponentCarrier->GetDlBandwidth();
747 .cellAccessRelatedInfo.plmnIdentityInfo.plmnIdentity;
765 sourceComponentCarrier->GetUlEarfcn();
767 sourceComponentCarrier->GetUlBandwidth();
768 params.rrcContext =
m_rrc->m_rrcSapUser->EncodeHandoverPreparationInformation(hpi);
770 NS_LOG_LOGIC(
"oldEnbUeX2apId = " << params.oldEnbUeX2apId);
776 m_rrc->m_x2SapProvider->SendHandoverRequest(params);
794 "not admission of some bearers upon handover is not supported");
796 "not enough bearers in admittedBearers");
804 Ptr<Packet> encodedHandoverCommand = params.rrcContext;
806 m_rrc->m_rrcSapUser->DecodeHandoverCommand(encodedHandoverCommand);
812 m_rrc->m_numberOfComponentCarriers)
816 NS_FATAL_ERROR(
"The source and target eNBs have unequal number of component carriers. "
819 <<
" Source eNB CCs = " <<
m_rrc->m_numberOfComponentCarriers);
822 m_rrc->m_rrcSapUser->SendRrcConnectionReconfiguration(
m_rnti, handoverCommand);
846 if (drbIt->second->m_rlc->GetObject<
LteRlcAm>())
855 m_rrc->m_x2SapProvider->SendSnStatusTransfer(sst);
872 auto targetComponentCarrier =
881 targetComponentCarrier->GetDlBandwidth();
883 targetComponentCarrier->GetUlBandwidth();
890 for (
auto& it :
m_rrc->m_componentCarrierPhyConf)
892 uint8_t ccId = it.first;
953 NS_LOG_INFO(
"queueing data on PDCP for transmission over the air");
966 NS_LOG_INFO(
"forwarding data to target eNB over X2-U");
973 m_rrc->m_x2SapProvider->SendUeData(params);
983std::vector<EpcX2Sap::ErabToBeSetupItem>
987 std::vector<EpcX2Sap::ErabToBeSetupItem> ret;
991 etbsi.
erabId = it->second->m_epsBearerIdentity;
995 etbsi.
gtpTeid = it->second->m_gtpTeid;
996 ret.push_back(etbsi);
1008 NS_LOG_INFO(
"Send UE CONTEXT RELEASE from target eNB to source eNB");
1016 m_rrc->m_x2SapProvider->SendUeContextRelease(ueCtxReleaseParams);
1020 NS_LOG_INFO(
"Not sending UE CONTEXT RELEASE because handover is internal");
1021 m_rrc->DoRecvUeContextRelease(ueCtxReleaseParams);
1043 NS_LOG_INFO(
"target eNB sent HO preparation failure, aborting HO");
1048 NS_LOG_INFO(
"target eNB sent HO preparation failure, aborting HO");
1063 for (
auto erabIt = params.erabsSubjectToStatusTransferList.begin();
1064 erabIt != params.erabsSubjectToStatusTransferList.end();
1101 m_rrc->m_rrcSapUser->SendRrcConnectionRelease(m_rnti, msg);
1117 m_srb0->m_rlc->SetLteRlcSapUser(params.srb0SapUser);
1118 m_srb1->m_pdcp->SetLtePdcpSapUser(params.srb1SapUser);
1130 if (
m_rrc->m_admitRrcConnectionRequest)
1138 m_rrc->m_rrcSapUser->SendRrcConnectionSetup(
m_rnti, msg2);
1154 m_rrc->m_rrcSapUser->SendRrcConnectionReject(
m_rnti, rejectMsg);
1186 if (
m_rrc->m_s1SapProvider !=
nullptr)
1221 for (uint16_t i = 0; i <
m_rrc->m_numberOfComponentCarriers; i++)
1223 m_rrc->m_cmacSapProvider.at(i)->UeUpdateConfigurationReq(req);
1226 m_rrc->m_cphySapProvider.at(i)->SetTransmissionMode(req.
m_rnti,
1230 m_rrc->m_cphySapProvider.at(i)->SetPa(
m_rnti, paDouble);
1236 m_rrc->m_connectionReconfigurationTrace(
1245 NS_LOG_INFO(
"ignoring RecvRrcConnectionReconfigurationCompleted in state "
1250 NS_LOG_INFO(
"ignoring RecvRrcConnectionReconfigurationCompleted in state "
1260 std::pair<uint8_t, Ptr<Packet>> bidPacket =
m_packetBuffer.front();
1261 uint8_t bid = bidPacket.first;
1264 NS_LOG_LOGIC(
"queueing data on PDCP for transmission over the air");
1270 NS_LOG_INFO(
"Send PATH SWITCH REQUEST to the MME");
1274 params.mmeUeS1Id =
m_imsi;
1280 b.
teid = it->second->m_gtpTeid;
1281 params.bearersToBeSwitched.push_back(b);
1283 m_rrc->m_s1SapProvider->PathSwitchRequest(params);
1315 m_rrc->m_rrcSapUser->SendRrcConnectionReestablishment(
m_rnti, msg2);
1333 "measId " << (uint16_t)measId <<
" haveMeasResultNeighCells "
1347 NS_LOG_LOGIC(
"neighbour cellId " << it->physCellId <<
" RSRP "
1348 << (it->haveRsrpResult ? (uint16_t)it->rsrpResult : 255)
1350 << (it->haveRsrqResult ? (uint16_t)it->rsrqResult : 255));
1353 if ((
m_rrc->m_handoverManagementSapProvider !=
nullptr) &&
1354 (
m_rrc->m_handoverMeasIds.find(measId) !=
m_rrc->m_handoverMeasIds.end()))
1360 if ((
m_rrc->m_ccmRrcSapProvider !=
nullptr) &&
1361 (
m_rrc->m_componentCarrierMeasIds.find(measId) !=
m_rrc->m_componentCarrierMeasIds.end()))
1367 if ((
m_rrc->m_anrSapProvider !=
nullptr) &&
1368 (
m_rrc->m_anrMeasIds.find(measId) !=
m_rrc->m_anrMeasIds.end()))
1374 if ((!
m_rrc->m_ffrRrcSapProvider.empty()) &&
1375 (
m_rrc->m_ffrMeasIds.find(measId) !=
m_rrc->m_ffrMeasIds.end()))
1424 if (params.lcid > 2)
1430 params.pdcpSdu->AddPacketTag(tag);
1431 m_rrc->m_forwardUpCallback(params.pdcpSdu);
1464 for (uint16_t i = 0; i <
m_rrc->m_numberOfComponentCarriers; i++)
1466 m_rrc->m_cphySapProvider.at(i)->SetSrsConfigurationIndex(
m_rnti, srsConfIndex);
1519 res.criticalityDiagnostics = 0;
1529 res.oldEnbUeX2apId =
m_rnti;
1542 const uint8_t MAX_DRB_ID = 32;
1544 drbid = (drbid + 1) % MAX_DRB_ID)
1551 drbInfo->m_drbIdentity = drbid;
1577 "request to remove radio bearer with unknown drbid " << drbid);
1587 msg.haveRadioResourceConfigDedicated =
true;
1589 msg.haveMobilityControlInfo =
false;
1590 msg.haveMeasConfig =
true;
1591 msg.measConfig =
m_rrc->m_ueMeasConfig;
1596 msg.haveNonCriticalExtension =
true;
1598 NS_LOG_FUNCTION(
this <<
" haveNonCriticalExtension " << msg.haveNonCriticalExtension);
1602 msg.haveNonCriticalExtension =
false;
1627 dtam.
rlcConfig = it->second->m_rlcConfig;
1736 for (
auto& it :
m_rrc->m_componentCarrierPhyConf)
1738 uint8_t ccId = it.first;
1758 eNbCcm->GetDlBandwidth();
1766 eNbCcm->GetUlEarfcn();
1768 eNbCcm->GetUlBandwidth();
1824 : m_x2SapProvider(nullptr),
1825 m_cmacSapProvider(0),
1826 m_handoverManagementSapProvider(nullptr),
1827 m_ccmRrcSapProvider(nullptr),
1828 m_anrSapProvider(nullptr),
1829 m_ffrRrcSapProvider(0),
1830 m_rrcSapUser(nullptr),
1831 m_macSapProvider(nullptr),
1832 m_s1SapProvider(nullptr),
1833 m_cphySapProvider(0),
1834 m_configured(false),
1835 m_lastAllocatedRnti(0),
1836 m_srsCurrentPeriodicityId(0),
1837 m_lastAllocatedConfigurationIndex(0),
1838 m_reconfigureUes(false),
1839 m_numberOfComponentCarriers(0),
1840 m_carriersConfigured(false)
1860 " Number of component carriers "
1861 "are not equal to the number of he component carrier configuration provided");
1912 .SetGroupName(
"Lte")
1914 .AddAttribute(
"UeMap",
1915 "List of UeManager by C-RNTI.",
1919 .AddAttribute(
"DefaultTransmissionMode",
1920 "The default UEs' transmission mode (0: SISO)",
1925 "EpsBearerToRlcMapping",
1926 "Specify which type of RLC will be used for each type of EPS bearer.",
1936 "PacketErrorRateBased"))
1937 .AddAttribute(
"SystemInformationPeriodicity",
1938 "The interval for sending system information (Time value)",
1946 "The SRS periodicity in milliseconds",
1952 .AddAttribute(
"ConnectionRequestTimeoutDuration",
1953 "After a RA attempt, if no RRC CONNECTION REQUEST is "
1954 "received before this time, the UE context is destroyed. "
1955 "Must account for reception of RAR and transmission of "
1956 "RRC CONNECTION REQUEST over UL GRANT. The value of this"
1957 "timer should not be greater than T300 timer at UE RRC",
1961 .AddAttribute(
"ConnectionSetupTimeoutDuration",
1962 "After accepting connection request, if no RRC CONNECTION "
1963 "SETUP COMPLETE is received before this time, the UE "
1964 "context is destroyed. Must account for the UE's reception "
1965 "of RRC CONNECTION SETUP and transmission of RRC CONNECTION "
1970 .AddAttribute(
"ConnectionRejectedTimeoutDuration",
1971 "Time to wait between sending a RRC CONNECTION REJECT and "
1972 "destroying the UE context",
1976 .AddAttribute(
"HandoverJoiningTimeoutDuration",
1977 "After accepting a handover request, if no RRC CONNECTION "
1978 "RECONFIGURATION COMPLETE is received before this time, the "
1979 "UE context is destroyed. Must account for reception of "
1980 "X2 HO REQ ACK by source eNB, transmission of the Handover "
1981 "Command, non-contention-based random access and reception "
1982 "of the RRC CONNECTION RECONFIGURATION COMPLETE message.",
1986 .AddAttribute(
"HandoverLeavingTimeoutDuration",
1987 "After issuing a Handover Command, if neither RRC "
1988 "CONNECTION RE-ESTABLISHMENT nor X2 UE Context Release has "
1989 "been previously received, the UE context is destroyed.",
1995 .AddAttribute(
"QRxLevMin",
1996 "One of information transmitted within the SIB1 message, "
1997 "indicating the required minimum RSRP level that any UE must "
1998 "receive from this cell before it is allowed to camp to this "
1999 "cell. The default value -70 corresponds to -140 dBm and is "
2000 "the lowest possible value as defined by Section 6.3.4 of "
2001 "3GPP TS 36.133. This restriction, however, only applies to "
2002 "initial cell selection and EPC-enabled simulation.",
2007 .AddAttribute(
"NumberOfComponentCarriers",
2008 "Number of Component Carriers",
2014 .AddAttribute(
"AdmitHandoverRequest",
2015 "Whether to admit an X2 handover request from another eNB",
2019 .AddAttribute(
"AdmitRrcConnectionRequest",
2020 "Whether to admit a connection request from a UE",
2026 .AddAttribute(
"RsrpFilterCoefficient",
2027 "Determines the strength of smoothing effect induced by "
2028 "layer 3 filtering of RSRP in all attached UE; "
2029 "if set to 0, no layer 3 filtering is applicable",
2034 .AddAttribute(
"RsrqFilterCoefficient",
2035 "Determines the strength of smoothing effect induced by "
2036 "layer 3 filtering of RSRQ in all attached UE; "
2037 "if set to 0, no layer 3 filtering is applicable",
2044 .AddTraceSource(
"NewUeContext",
2045 "Fired upon creation of a new UE context.",
2047 "ns3::LteEnbRrc::NewUeContextTracedCallback")
2048 .AddTraceSource(
"ConnectionEstablished",
2049 "Fired upon successful RRC connection establishment.",
2051 "ns3::LteEnbRrc::ConnectionHandoverTracedCallback")
2052 .AddTraceSource(
"ConnectionReconfiguration",
2053 "trace fired upon RRC connection reconfiguration",
2055 "ns3::LteEnbRrc::ConnectionHandoverTracedCallback")
2056 .AddTraceSource(
"HandoverStart",
2057 "trace fired upon start of a handover procedure",
2059 "ns3::LteEnbRrc::HandoverStartTracedCallback")
2060 .AddTraceSource(
"HandoverEndOk",
2061 "trace fired upon successful termination of a handover procedure",
2063 "ns3::LteEnbRrc::ConnectionHandoverTracedCallback")
2064 .AddTraceSource(
"RecvMeasurementReport",
2065 "trace fired when measurement report is received",
2067 "ns3::LteEnbRrc::ReceiveReportTracedCallback")
2068 .AddTraceSource(
"NotifyConnectionRelease",
2069 "trace fired when an UE is released",
2071 "ns3::LteEnbRrc::ConnectionHandoverTracedCallback")
2072 .AddTraceSource(
"RrcTimeout",
2073 "trace fired when a timer expires",
2075 "ns3::LteEnbRrc::TimerExpiryTracedCallback")
2077 "HandoverFailureNoPreamble",
2078 "trace fired upon handover failure due to non-allocation of non-contention based "
2079 "preamble at eNB for UE to handover due to max count reached",
2081 "ns3::LteEnbRrc::HandoverFailureTracedCallback")
2083 "HandoverFailureMaxRach",
2084 "trace fired upon handover failure due to max RACH attempts from UE to target eNB",
2086 "ns3::LteEnbRrc::HandoverFailureTracedCallback")
2088 "HandoverFailureLeaving",
2089 "trace fired upon handover failure due to handover leaving timeout at source eNB",
2091 "ns3::LteEnbRrc::HandoverFailureTracedCallback")
2093 "HandoverFailureJoining",
2094 "trace fired upon handover failure due to handover joining timeout at target eNB",
2096 "ns3::LteEnbRrc::HandoverFailureTracedCallback");
2218 "You meant to store the pointer at position "
2219 <<
static_cast<uint32_t>(index) <<
" but it went to "
2236 "Invalid component carrier index:"
2237 << index <<
" provided in order to obtain FfrRrcSapUser.");
2345 "Measurement identities and reporting configuration should not have different quantity");
2349 NS_FATAL_ERROR(
"AddUeMeasReportConfig may not be called after the simulation has run");
2361 "The given triggerQuantity (RSRP) does not match with the given threshold2.choice");
2371 "The given triggerQuantity (RSRP) does not match with the given threshold1.choice");
2380 "The given triggerQuantity (RSRQ) does not match with the given threshold2.choice");
2390 "The given triggerQuantity (RSRQ) does not match with the given threshold1.choice");
2401 NS_FATAL_ERROR(
"Only REPORT_STRONGEST_CELLS purpose is supported");
2406 NS_LOG_WARN(
"reportQuantity = BOTH will be used instead of the given reportQuantity");
2419 std::vector<uint8_t> measIds;
2429 measIdToAddMod.
measId = measId;
2434 measIds.push_back(measId);
2443 auto it = ccPhyConf.begin();
2445 uint16_t ulBandwidth = it->second->GetUlBandwidth();
2446 uint16_t dlBandwidth = it->second->GetDlBandwidth();
2447 uint32_t ulEarfcn = it->second->GetUlEarfcn();
2448 uint32_t dlEarfcn = it->second->GetDlEarfcn();
2449 NS_LOG_FUNCTION(
this << ulBandwidth << dlBandwidth << ulEarfcn << dlEarfcn);
2452 for (
const auto& it : ccPhyConf)
2455 it.second->GetDlBandwidth());
2457 it.second->GetDlEarfcn());
2460 it.second->GetDlBandwidth());
2465 it.second->GetDlBandwidth());
2479 for (
const auto& it : ccPhyConf)
2501 m_sib1.reserve(ccPhyConf.size());
2502 for (
const auto& it : ccPhyConf)
2536 m_sib1.at(0).cellAccessRelatedInfo.cellIdentity = cellId;
2544 m_sib1.at(ccIndex).cellAccessRelatedInfo.cellIdentity = cellId;
2554 if (it.second->GetCellId() == cellId)
2574 if (it.second->GetCellId() == cellId)
2587 bool found = packet->RemovePacketTag(tag);
2588 NS_ASSERT_MSG(found,
"no EpsBearerTag found in packet to be sent");
2591 NS_LOG_INFO(
"Sending a packet of " << packet->GetSize() <<
" bytes to IMSI "
2592 << ueManager->GetImsi() <<
", RNTI " << ueManager->GetRnti()
2593 <<
", BID " << (uint16_t)tag.
GetBid());
2594 ueManager->SendData(tag.
GetBid(), packet);
2610 "ConnectionRequestTimeout in unexpected state "
2615 "ConnectionRequestTimeout");
2624 "ConnectionSetupTimeout in unexpected state "
2629 "ConnectionSetupTimeout");
2638 "ConnectionRejectedTimeout in unexpected state "
2643 "ConnectionRejectedTimeout");
2652 "HandoverJoiningTimeout in unexpected state "
2680 "HandoverLeavingTimeout in unexpected state "
2697 ueManager->SendRrcConnectionRelease();
2709 ueManager->PrepareHandover(cellId);
2731 GetUeManager(rnti)->RecvRrcConnectionSetupCompleted(msg);
2740 GetUeManager(rnti)->RecvRrcConnectionReconfigurationCompleted(msg);
2749 GetUeManager(rnti)->RecvRrcConnectionReestablishmentRequest(msg);
2758 GetUeManager(rnti)->RecvRrcConnectionReestablishmentComplete(msg);
2773 ueManager->InitialContextSetupRequest();
2802 GetUeManager(rnti)->RecvIdealUeContextRemoveRequest(rnti);
2814 ueManager->SetupDataRadioBearer(request.
bearer,
2826 ueManager->SendUeContextRelease();
2850 res.criticalityDiagnostics = 0;
2866 <<
" failed to allocate a preamble for non-contention based RA => cannot accept HO");
2889 for (
auto it = req.
bearers.begin(); it != req.
bearers.end(); ++it)
2891 ueManager->SetupDataRadioBearer(it->erabLevelQosParameters,
2894 it->transportLayerAddress);
2901 ueManager->GetRrcConnectionReconfigurationForHandover(componentCarrierId);
2922 ackParams.
rrcContext = encodedHandoverCommand;
2941 NS_LOG_LOGIC(
"oldEnbUeX2apId = " << params.oldEnbUeX2apId);
2942 NS_LOG_LOGIC(
"newEnbUeX2apId = " << params.newEnbUeX2apId);
2943 NS_LOG_LOGIC(
"sourceCellId = " << params.sourceCellId);
2944 NS_LOG_LOGIC(
"targetCellId = " << params.targetCellId);
2946 uint16_t rnti = params.oldEnbUeX2apId;
2948 ueManager->RecvHandoverRequestAck(params);
2956 NS_LOG_LOGIC(
"Recv X2 message: HANDOVER PREPARATION FAILURE");
2958 NS_LOG_LOGIC(
"oldEnbUeX2apId = " << params.oldEnbUeX2apId);
2959 NS_LOG_LOGIC(
"sourceCellId = " << params.sourceCellId);
2960 NS_LOG_LOGIC(
"targetCellId = " << params.targetCellId);
2962 NS_LOG_LOGIC(
"criticalityDiagnostics = " << params.criticalityDiagnostics);
2964 uint16_t rnti = params.oldEnbUeX2apId;
2970 ueManager->RecvHandoverPreparationFailure(params.targetCellId);
2981 NS_LOG_LOGIC(
"oldEnbUeX2apId = " << params.oldEnbUeX2apId);
2982 NS_LOG_LOGIC(
"newEnbUeX2apId = " << params.newEnbUeX2apId);
2983 NS_LOG_LOGIC(
"erabsSubjectToStatusTransferList size = "
2984 << params.erabsSubjectToStatusTransferList.size());
2986 uint16_t rnti = params.newEnbUeX2apId;
2992 ueManager->RecvSnStatusTransfer(params);
3003 NS_LOG_LOGIC(
"oldEnbUeX2apId = " << params.oldEnbUeX2apId);
3004 NS_LOG_LOGIC(
"newEnbUeX2apId = " << params.newEnbUeX2apId);
3006 uint16_t rnti = params.oldEnbUeX2apId;
3023 NS_LOG_LOGIC(
"Number of cellInformationItems = " << params.cellInformationList.size());
3034 NS_LOG_LOGIC(
"Recv X2 message: RESOURCE STATUS UPDATE");
3037 "Number of cellMeasurementResultItems = " << params.cellMeasurementResultList.size());
3039 NS_ASSERT(
"Processing of RESOURCE STATUS UPDATE X2 message IS NOT IMPLEMENTED");
3047 NS_LOG_LOGIC(
"Recv UE DATA FORWARDING through X2 interface");
3048 NS_LOG_LOGIC(
"sourceCellId = " << params.sourceCellId);
3049 NS_LOG_LOGIC(
"targetCellId = " << params.targetCellId);
3052 NS_LOG_LOGIC(
"ueData size = " << params.ueData->GetSize());
3057 GetUeManager(teidInfoIt->second.rnti)->SendData(teidInfoIt->second.drbid, params.ueData);
3072 NS_LOG_LOGIC(
"oldEnbUeX2apId = " << params.oldEnbUeX2apId);
3073 NS_LOG_LOGIC(
"newEnbUeX2apId = " << params.newEnbUeX2apId);
3074 NS_LOG_LOGIC(
"sourceCellId = " << params.sourceCellId);
3075 NS_LOG_LOGIC(
"targetCellId = " << params.targetCellId);
3078 uint16_t rnti = params.newEnbUeX2apId;
3082 ueManager->RecvHandoverCancel(params);
3083 GetUeManager(rnti)->RecvIdealUeContextRemoveRequest(rnti);
3094 NS_LOG_WARN(
"Not enough SRS configuration indices, UE context not created");
3104 ueManager->CmacUeConfigUpdateInd(cmacParams);
3143 bool isHandoverAllowed =
true;
3146 NS_ASSERT_MSG(ueManager,
"Cannot find UE context with RNTI " << rnti);
3155 <<
" targetCellId=" << targetCellId <<
" NRT.NoHo=" << noHo
3156 <<
" NRT.NoX2=" << noX2);
3160 isHandoverAllowed =
false;
3161 NS_LOG_LOGIC(
this <<
" handover to cell " << targetCellId <<
" is not allowed by ANR");
3167 isHandoverAllowed =
false;
3168 NS_LOG_LOGIC(
this <<
" handover is not allowed because the UE"
3169 <<
" rnti=" << rnti <<
" is in " <<
ToString(ueManager->GetState())
3173 if (isHandoverAllowed)
3176 ueManager->PrepareHandover(targetCellId);
3204 ueManager->SetPdschConfigDedicated(pdschConfigDedicated);
3230 NS_ASSERT_MSG(found,
"no more RNTIs available (do you have more than 65535 UEs in a cell?)");
3235 ueManager->Initialize();
3237 NS_LOG_DEBUG(
this <<
" New UE RNTI " << rnti <<
" cellId " << cellId <<
" srs CI "
3238 << ueManager->GetSrsConfigurationIndex());
3249 uint64_t imsi = it->second->GetImsi();
3250 uint16_t srsCi = (*it).second->GetSrsConfigurationIndex();
3252 it->second->CancelPendingEvents();
3321 for (std::size_t componentCarrierId = 0; componentCarrierId <
m_sib1.size();
3322 componentCarrierId++)
3324 m_sib1.at(componentCarrierId).cellAccessRelatedInfo.csgIdentity = csgId;
3325 m_sib1.at(componentCarrierId).cellAccessRelatedInfo.csgIndication = csgIndication;
3327 ->SetSystemInformationBlockType1(
m_sib1.at(componentCarrierId));
3364 std::ostringstream allowedValues;
3370 <<
". Allowed values: " << allowedValues.str());
3395 <<
") for current SRS periodicity "
3397 <<
", consider increasing the value of ns3::LteEnbRrc::SrsPeriodicity");
3411 NS_LOG_DEBUG(
this <<
" lower bound " << (*rit) <<
" of "
3445 "request to remove unknown SRS CI " << srcCi);
3485 uint8_t ccId = it.first;
3518 switch (ueManager->GetState())
Class for forwarding CMAC SAP User functions.
bool IsRandomAccessCompleted(uint16_t rnti) override
Is random access completed function.
EnbRrcMemberLteEnbCmacSapUser(LteEnbRrc *rrc, uint8_t componentCarrierId)
Constructor.
void RrcConfigurationUpdateInd(UeConfig params) override
Notify the RRC of a UE config updated requested by the MAC (normally, by the scheduler)
uint16_t AllocateTemporaryCellRnti() override
request the allocation of a Temporary C-RNTI
uint8_t m_componentCarrierId
Component carrier ID.
void NotifyLcConfigResult(uint16_t rnti, uint8_t lcid, bool success) override
notify the result of the last LC config operation
Hold variables of type enum.
This class implements the Service Access Point (SAP) between the LteEnbRrc and the EpcEnbApplication.
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 ...
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.
This class implements the Service Access Point (SAP) between the LteEnbRrc and the EpcEnbApplication.
@ HandoverDesirableForRadioReason
These service primitives of this part of the X2 SAP are provided by the X2 entity and issued by RRC e...
virtual void SendHandoverRequestAck(HandoverRequestAckParams params)=0
Send handover request ack function.
virtual void SendHandoverPreparationFailure(HandoverPreparationFailureParams params)=0
Send handover preparation failure function.
virtual void SendHandoverCancel(HandoverCancelParams params)=0
Send handover Cancel to the target eNB.
virtual void SendLoadInformation(LoadInformationParams params)=0
Send load information function.
These service primitives of this part of the X2 SAP are provided by the RRC entity and issued by the ...
This class contains the specification of EPS Bearers.
uint8_t GetResourceType() const
uint16_t GetPacketDelayBudgetMs() const
double GetPacketErrorLossRate() const
Qci qci
Qos class indicator.
GbrQosInformation gbrQosInfo
GBR QOS information.
@ GBR_CONV_VOICE
GBR Conversational Voice.
Tag used to define the RNTI and EPS bearer ID for packets interchanged between the EpcEnbApplication ...
uint8_t GetBid() const
Get Bearer Id function.
uint16_t GetRnti() const
Get RNTI function.
void SetRnti(uint16_t rnti)
Set the RNTI to the given value.
void SetBid(uint8_t bid)
Set the bearer id to the given value.
void Cancel()
This method is syntactic sugar for the ns3::Simulator::Cancel method.
Hold a signed integer type.
Ipv4 addresses are stored in host order in this class.
Service Access Point (SAP) offered by the ANR instance to the eNodeB RRC instance.
virtual void AddNeighbourRelation(uint16_t cellId)=0
Add a new Neighbour Relation entry.
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).
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).
Service Access Point (SAP) offered by the eNodeB RRC instance to the ANR instance.
Service Access Point (SAP) offered by the Component Carrier Manager (CCM) instance to the eNodeB RRC ...
virtual void AddUe(uint16_t rnti, uint8_t state)=0
Add a new UE in the LteEnbComponentCarrierManager.
virtual void RemoveUe(uint16_t rnti)=0
Remove an existing UE.
Service Access Point (SAP) offered by the eNodeB RRC instance to the component carrier manager (CCM) ...
Service Access Point (SAP) offered by the eNB MAC to the eNB RRC See Femto Forum MAC Scheduler Interf...
Service Access Point (SAP) offered by the MAC to the RRC See Femto Forum MAC Scheduler Interface Spec...
Service Access Point (SAP) offered by the UE PHY to the UE RRC for control purposes.
Service Access Point (SAP) offered by the UE PHY to the UE RRC for control purposes.
The LTE Radio Resource Control entity at the eNB.
~LteEnbRrc() override
Destructor.
LteEnbRrcSapProvider * GetLteEnbRrcSapProvider()
void SetCsgId(uint32_t csgId, bool csgIndication)
Associate this RRC entity with a particular CSG information.
void RemoveUe(uint16_t rnti)
remove a UE from the cell
void DoSetPdschConfigDedicated(uint16_t rnti, LteRrcSap::PdschConfigDedicated pa)
Set PDSCH config dedicated function.
std::map< uint8_t, Ptr< ComponentCarrierBaseStation > > m_componentCarrierPhyConf
component carrier phy configuration
void SetSrsPeriodicity(uint32_t p)
bool IsRandomAccessCompleted(uint16_t rnti)
Is random access completed function.
uint8_t GetLogicalChannelGroup(EpsBearer bearer)
int8_t m_qRxLevMin
The QRxLevMin attribute.
std::set< uint16_t > m_ueSrsConfigurationIndexSet
UE SRS configuration index set.
TracedCallback< uint64_t, uint16_t, uint16_t, uint16_t > m_handoverStartTrace
The HandoverStart trace source.
void DoSetNumberOfComponentCarriers(uint16_t numberOfComponentCarriers)
Set number of component carriers.
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.
void SendSystemInformation()
method used to periodically send System Information
void DoRecvRrcConnectionRequest(uint16_t rnti, LteRrcSap::RrcConnectionRequest msg)
Part of the RRC protocol.
std::set< uint8_t > m_ffrMeasIds
List of measurement identities which are intended for FFR purpose.
friend class MemberEpcEnbS1SapUser< LteEnbRrc >
allow MemberLteEnbRrcSapProvider<LteEnbRrc> class friend access
Callback< void, Ptr< Packet > > m_forwardUpCallback
forward up callback function
void DoRecvSnStatusTransfer(EpcX2SapUser::SnStatusTransferParams params)
Receive SN status transfer function.
void DoRecvHandoverRequest(EpcX2SapUser::HandoverRequestParams params)
Receive handover request function.
LteEnbRrc()
create an RRC instance for use within an eNB
std::set< uint8_t > m_anrMeasIds
List of measurement identities which are intended for ANR purpose.
uint8_t DoAddUeMeasReportConfigForFfr(LteRrcSap::ReportConfigEutra reportConfig)
Add UE measure report config for FFR function.
LteMacSapProvider * m_macSapProvider
Interface to the eNodeB MAC instance, to be used by RLC instances.
uint32_t GetSrsPeriodicity() const
bool SendData(Ptr< Packet > p)
Enqueue an IP data packet on the proper bearer for downlink transmission.
EpcEnbS1SapUser * GetS1SapUser()
void AddX2Neighbour(uint16_t cellId)
Add a neighbour with an X2 interface.
LteCcmRrcSapUser * m_ccmRrcSapUser
Receive API calls from the LteEnbComponentCarrierManager instance.
Time m_connectionRequestTimeoutDuration
The ConnectionRequestTimeoutDuration attribute.
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 ...
LteHandoverManagementSapUser * m_handoverManagementSapUser
Receive API calls from the handover algorithm instance.
static TypeId GetTypeId()
Get the type ID.
void DoRecvMeasurementReport(uint16_t rnti, LteRrcSap::MeasurementReport msg)
Part of the RRC protocol.
void SetLteAnrSapProvider(LteAnrSapProvider *s)
set the ANR SAP this RRC should interact with
void DoRecvHandoverRequestAck(EpcX2SapUser::HandoverRequestAckParams params)
Receive handover request acknowledge function.
LteEnbCphySapUser * GetLteEnbCphySapUser()
bool HasUeManager(uint16_t rnti) const
uint8_t m_rsrqFilterCoefficient
The RsrqFilterCoefficient attribute.
std::vector< uint8_t > DoAddUeMeasReportConfigForHandover(LteRrcSap::ReportConfigEutra reportConfig)
Add UE measure report config for handover function.
void DoRecvResourceStatusUpdate(EpcX2SapUser::ResourceStatusUpdateParams params)
Receive resource status update function.
uint16_t AddUe(UeManager::State state, uint8_t componentCarrierId)
Allocate a new RNTI for a new UE.
void DoSendLoadInformation(EpcX2Sap::LoadInformationParams params)
Send load information function.
uint8_t GetLogicalChannelPriority(EpsBearer bearer)
void DoCompleteSetupUe(uint16_t rnti, LteEnbRrcSapProvider::CompleteSetupUeParameters params)
Part of the RRC protocol.
uint16_t GetNewSrsConfigurationIndex()
Allocate a new SRS configuration index for a new UE.
uint8_t m_defaultTransmissionMode
The DefaultTransmissionMode attribute.
Time m_connectionRejectedTimeoutDuration
The ConnectionRejectedTimeoutDuration attribute.
Time m_connectionSetupTimeoutDuration
The ConnectionSetupTimeoutDuration attribute.
std::set< uint8_t > m_handoverMeasIds
List of measurement identities which are intended for handover purpose.
void DoPathSwitchRequestAcknowledge(EpcEnbS1SapUser::PathSwitchRequestAcknowledgeParameters params)
Path switch request acknowledge function.
std::vector< uint8_t > AddUeMeasReportConfig(LteRrcSap::ReportConfigEutra config)
Add a new UE measurement reporting configuration.
bool m_admitHandoverRequest
The AdmitHandoverRequest attribute.
uint16_t m_ulBandwidth
Uplink transmission bandwidth configuration in number of Resource Blocks.
LteAnrSapUser * m_anrSapUser
Receive API calls from the ANR instance.
LteHandoverManagementSapProvider * m_handoverManagementSapProvider
Interface to the handover algorithm instance.
friend class EpcX2SpecificEpcX2SapUser< LteEnbRrc >
allow MemberEpcEnbS1SapUser<LteEnbRrc> class friend access
uint8_t DoAddUeMeasReportConfigForComponentCarrier(LteRrcSap::ReportConfigEutra reportConfig)
Add UE measure report config for component carrier function.
std::vector< LteFfrRrcSapProvider * > m_ffrRrcSapProvider
Interface to the FFR algorithm instance.
uint8_t DoAddUeMeasReportConfigForAnr(LteRrcSap::ReportConfigEutra reportConfig)
Add UE measure report config for ANR function.
LteEnbRrcSapUser * m_rrcSapUser
Interface to send messages to UE over the RRC protocol.
std::map< uint16_t, Ptr< UeManager > > m_ueMap
The UeMap attribute.
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...
LteEpsBearerToRlcMapping_t m_epsBearerToRlcMapping
The EpsBearerToRlcMapping attribute.
Ptr< UeManager > GetUeManager(uint16_t rnti)
LteCcmRrcSapProvider * m_ccmRrcSapProvider
Interface to the LteEnbComponentCarrierManager instance.
void DoRecvRrcConnectionReestablishmentComplete(uint16_t rnti, LteRrcSap::RrcConnectionReestablishmentComplete msg)
Part of the RRC protocol.
void DoRrcConfigurationUpdateInd(LteEnbCmacSapUser::UeConfig params)
RRC configuration update indication function.
TracedCallback< uint64_t, uint16_t, uint16_t, LteRrcSap::MeasurementReport > m_recvMeasurementReportTrace
The RecvMeasurementReport trace source.
LteAnrSapProvider * m_anrSapProvider
Interface to the ANR instance.
std::set< uint8_t > m_componentCarrierMeasIds
List of measurement identities which are intended for component carrier management purposes.
std::vector< LteEnbCphySapProvider * > m_cphySapProvider
Interface to the eNodeB PHY instances.
void SetLteMacSapProvider(LteMacSapProvider *s)
set the MAC SAP provider.
void ConfigureCarriers(std::map< uint8_t, Ptr< ComponentCarrierBaseStation > > ccPhyConf)
Configure carriers.
uint16_t m_lastAllocatedConfigurationIndex
last allocated configuration index
TracedCallback< uint64_t, uint16_t, uint16_t > m_handoverFailureMaxRachTrace
The 'HandoverFailureMaxRach' Trace source.
friend class MemberLteCcmRrcSapUser< LteEnbRrc >
allow MemberLteCcmRrcSapUser<LteEnbRrc> class friend access
LteRrcSap::MeasConfig m_ueMeasConfig
List of measurement configuration which are active in every UE attached to this eNodeB instance.
friend class MemberLteEnbRrcSapProvider< LteEnbRrc >
allow MemberLteEnbRrcSapProvider<LteEnbRrc> class friend access
TracedCallback< uint64_t, uint16_t, uint16_t > m_handoverFailureNoPreambleTrace
The 'HandoverFailureNoPreamble' Trace source.
TracedCallback< uint16_t, uint16_t > m_newUeContextTrace
The NewUeContext trace source.
Time m_systemInformationPeriodicity
The SystemInformationPeriodicity attribute.
void DoRecvRrcConnectionReconfigurationCompleted(uint16_t rnti, LteRrcSap::RrcConnectionReconfigurationCompleted msg)
Part of the RRC protocol.
void SetLteEnbRrcSapUser(LteEnbRrcSapUser *s)
set the RRC SAP this RRC should interact with
friend class MemberLteAnrSapUser< LteEnbRrc >
allow MemberLteAnrSapUser<LteEnbRrc> class friend access
void DoRecvHandoverPreparationFailure(EpcX2SapUser::HandoverPreparationFailureParams params)
Receive handover preparation failure function.
LteHandoverManagementSapUser * GetLteHandoverManagementSapUser()
Get the Handover Management SAP offered by this RRC.
EpcX2SapUser * GetEpcX2SapUser()
Get the X2 SAP offered by this RRC.
std::vector< LteEnbCmacSapUser * > m_cmacSapUser
Receive API calls from the eNodeB MAC instance.
void DoInitialContextSetupRequest(EpcEnbS1SapUser::InitialContextSetupRequestParameters params)
Initial context setup request function.
uint32_t m_dlEarfcn
Downlink E-UTRA Absolute Radio Frequency Channel Number.
void SendHandoverRequest(uint16_t rnti, uint16_t cellId)
Send a HandoverRequest through the X2 SAP interface.
uint16_t m_numberOfComponentCarriers
number of component carriers
void DoNotifyLcConfigResult(uint16_t rnti, uint8_t lcid, bool success)
Notify LC config result function.
TypeId GetRlcType(EpsBearer bearer)
uint8_t m_rsrpFilterCoefficient
The RsrpFilterCoefficient attribute.
EpcEnbS1SapProvider * m_s1SapProvider
Interface to send messages to core network over the S1 protocol.
uint16_t m_lastAllocatedRnti
Last allocated RNTI.
uint32_t m_ulEarfcn
Uplink E-UTRA Absolute Radio Frequency Channel Number.
uint16_t ComponentCarrierToCellId(uint8_t componentCarrierId)
convert the component carrier id to cell id
LteFfrRrcSapUser * GetLteFfrRrcSapUser()
Get the FFR SAP offered by this RRC.
void SetS1SapProvider(EpcEnbS1SapProvider *s)
Set the S1 SAP Provider.
bool HasCellId(uint16_t cellId) const
TracedCallback< uint64_t, uint16_t, uint16_t > m_connectionReconfigurationTrace
The ConnectionReconfiguration trace source.
EpcX2SapUser * m_x2SapUser
Interface to receive messages from neighbour eNodeB over the X2 interface.
bool m_admitRrcConnectionRequest
The AdmitRrcConnectionRequest attribute.
void DoRecvUeData(EpcX2SapUser::UeDataParams params)
Receive UE data function.
uint16_t m_srsCurrentPeriodicityId
The SrsPeriodicity attribute.
void DoRecvRrcConnectionReestablishmentRequest(uint16_t rnti, LteRrcSap::RrcConnectionReestablishmentRequest msg)
Part of the RRC protocol.
bool m_configured
True if ConfigureCell() has been completed.
void ConnectionSetupTimeout(uint16_t rnti)
Method triggered when a UE is expected to complete a connection setup procedure but does not do so in...
friend class EnbRrcMemberLteEnbCmacSapUser
allow EnbRrcMemberLteEnbCmacSapUser class friend access
friend class MemberLteHandoverManagementSapUser< LteEnbRrc >
allow MemberLteHandoverManagementSapUser<LteEnbRrc> class friend access
LteEnbCmacSapUser * GetLteEnbCmacSapUser()
Get the CMAC SAP offered by this RRC.
void DoRecvRrcConnectionSetupCompleted(uint16_t rnti, LteRrcSap::RrcConnectionSetupCompleted msg)
Part of the RRC protocol.
TracedCallback< uint64_t, uint16_t, uint16_t > m_connectionReleaseTrace
The NotifyConnectionRelease trace source.
void ConnectionRejectedTimeout(uint16_t rnti)
Method triggered a while after sending RRC Connection Rejected.
void DoRecvUeContextRelease(EpcX2SapUser::UeContextReleaseParams params)
Receive UE context release function.
Time m_handoverLeavingTimeoutDuration
The HandoverLeavingTimeoutDuration attribute.
std::map< uint32_t, X2uTeidInfo > m_x2uTeidInfoMap
TEID, RNTI, DRBID.
void DoRecvLoadInformation(EpcX2SapUser::LoadInformationParams params)
Receive load information function.
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...
uint16_t DoAllocateTemporaryCellRnti(uint8_t componentCarrierId)
Allocate temporary cell RNTI function.
std::vector< LteEnbCphySapUser * > m_cphySapUser
Receive API calls from the eNodeB PHY instances.
TracedCallback< uint64_t, uint16_t, uint16_t > m_handoverFailureJoiningTrace
The 'HandoverFailureJoining' Trace source.
void SetLteHandoverManagementSapProvider(LteHandoverManagementSapProvider *s)
set the Handover Management SAP this RRC should interact with
void SetLteFfrRrcSapProvider(LteFfrRrcSapProvider *s)
set the FFR SAP this RRC should interact with
LteCcmRrcSapUser * GetLteCcmRrcSapUser()
Get the Component Carrier Management SAP offered by this RRC.
void SetLteEnbCphySapProvider(LteEnbCphySapProvider *s)
set the CPHY SAP this RRC should use to interact with the PHY
void DoDispose() override
Destructor implementation.
std::vector< LteFfrRrcSapUser * > m_ffrRrcSapUser
Receive API calls from the FFR algorithm instance.
EpcX2SapProvider * m_x2SapProvider
Interface to send messages to neighbour eNodeB over the X2 interface.
std::vector< LteEnbCmacSapProvider * > m_cmacSapProvider
Interface to the eNodeB MAC instance.
std::vector< LteRrcSap::SystemInformationBlockType1 > m_sib1
The System Information Block Type 1 that is currently broadcasted over BCH.
void DoDataRadioBearerSetupRequest(EpcEnbS1SapUser::DataRadioBearerSetupRequestParameters params)
Data radio beaerer setup request function.
LteAnrSapUser * GetLteAnrSapUser()
Get the ANR SAP offered by this RRC.
void SetLteCcmRrcSapProvider(LteCcmRrcSapProvider *s)
set the Component Carrier Management SAP this RRC should interact with
LteEnbRrcSapProvider * m_rrcSapProvider
Interface to receive messages from UE over the RRC protocol.
bool m_carriersConfigured
are carriers configured
void SetForwardUpCallback(Callback< void, Ptr< Packet > > cb)
set the callback used to forward data packets up the stack
TracedCallback< uint64_t, uint16_t, uint16_t > m_connectionEstablishedTrace
The ConnectionEstablished trace source.
TracedCallback< uint64_t, uint16_t, uint16_t > m_handoverFailureLeavingTrace
The 'HandoverFailureLeaving' Trace source.
TracedCallback< uint64_t, uint16_t, uint16_t, std::string > m_rrcTimeoutTrace
The 'TimerExpiry' Trace source.
void DoTriggerHandover(uint16_t rnti, uint16_t targetCellId)
Trigger handover function.
void DoRecvIdealUeContextRemoveRequest(uint16_t rnti)
Part of the RRC protocol.
void SetCellId(uint16_t m_cellId)
set the cell id of this eNB
EpcEnbS1SapUser * m_s1SapUser
Interface to receive messages from core network over the S1 protocol.
void RemoveSrsConfigurationIndex(uint16_t srcCi)
remove a previously allocated SRS configuration index
Time m_handoverJoiningTimeoutDuration
The HandoverJoiningTimeoutDuration attribute.
void ConfigureCell(std::map< uint8_t, Ptr< ComponentCarrierBaseStation > > ccPhyConf)
Configure cell-specific parameters.
void SetLteEnbCmacSapProvider(LteEnbCmacSapProvider *s)
set the CMAC SAP this RRC should interact with
uint16_t m_dlBandwidth
Downlink transmission bandwidth configuration in number of Resource Blocks.
TracedCallback< uint64_t, uint16_t, uint16_t > m_handoverEndOkTrace
The HandoverEndOk trace source.
uint8_t CellToComponentCarrierId(uint16_t cellId)
convert the cell id to component carrier id
void SetEpcX2SapProvider(EpcX2SapProvider *s)
Set the X2 SAP this RRC should interact with.
void DoRecvHandoverCancel(EpcX2SapUser::HandoverCancelParams params)
Receive Handover Cancel function.
Part of the RRC protocol.
Part of the RRC protocol.
virtual void SendSystemInformation(uint16_t cellId, SystemInformation msg)=0
Send a SystemInformation message to all attached UEs during a system information acquisition procedur...
virtual void RemoveUe(uint16_t rnti)=0
Remove UE function.
virtual Ptr< Packet > EncodeHandoverCommand(RrcConnectionReconfiguration msg)=0
Encode handover command.
Service Access Point (SAP) offered by the Frequency Reuse algorithm instance to the eNodeB RRC instan...
Service Access Point (SAP) offered by the eNodeB RRC instance to the Frequency Reuse algorithm instan...
Service Access Point (SAP) offered by the handover algorithm instance to the eNodeB RRC instance.
Service Access Point (SAP) offered by the eNodeB RRC instance to the handover algorithm instance.
Service Access Point (SAP) offered by the MAC to the RLC See Femto Forum MAC Scheduler Interface Spec...
Service Access Point (SAP) offered by the MAC to the RLC See Femto Forum MAC Scheduler Interface Spec...
Service Access Point (SAP) offered by the PDCP entity to the RRC entity See 3GPP 36....
virtual void TransmitPdcpSdu(TransmitPdcpSduParameters params)=0
Send RRC PDU parameters to the PDCP for transmission.
LTE RLC Acknowledged Mode (AM), see 3GPP TS 36.322.
static TypeId GetTypeId()
Get the type ID.
This abstract base class defines the API to interact with the Radio Link Control (LTE_RLC) in LTE,...
static TypeId GetTypeId()
Get the type ID.
static TypeId GetTypeId()
Get the type ID.
static double ConvertPdschConfigDedicated2Double(PdschConfigDedicated pdschConfigDedicated)
Convert PDSCH config dedicated function.
Template for the implementation of the LteEnbCphySapUser as a member of an owner class of type C to w...
Template for the implementation of the LteFfrRrcSapUser as a member of an owner class of type C to wh...
Instantiate subclasses of ns3::Object.
Ptr< Object > Create() const
Create an Object instance of the configured TypeId.
void SetTypeId(TypeId tid)
Set the TypeId of the Objects to be created by this factory.
A base class which provides memory management and object aggregation.
Ptr< T > GetObject() const
Get a pointer to the requested aggregated Object.
virtual void DoInitialize()
Initialize() implementation.
AttributeValue implementation for Pointer.
Smart pointer class similar to boost::intrusive_ptr.
static EventId Schedule(const Time &delay, FUNC f, Ts &&... args)
Schedule an event to expire after delay.
static Time Now()
Return the current simulation virtual time.
Simulation virtual time values and global simulation resolution.
a unique identifier for an interface.
@ ATTR_GET
The attribute can be read.
@ ATTR_CONSTRUCT
The attribute can be written at construction-time.
TypeId SetParent(TypeId tid)
Set the parent TypeId.
bool m_pendingStartDataRadioBearers
Pending start data radio bearers.
void RecvRrcConnectionReestablishmentRequest(LteRrcSap::RrcConnectionReestablishmentRequest msg)
Implement the LteEnbRrcSapProvider::RecvRrcConnectionReestablishmentRequest interface.
void InitialContextSetupRequest()
Process Initial context setup request message from the MME.
void RecvUeContextRelease(EpcX2SapUser::UeContextReleaseParams params)
Take the necessary actions in response to the reception of an X2 UE CONTEXT RELEASE message.
void RecordDataRadioBearersToBeStarted()
Start all configured data radio bearers.
std::map< uint8_t, Ptr< LteDataRadioBearerInfo > > m_drbMap
The DataRadioBearerMap attribute.
Ptr< LteSignalingRadioBearerInfo > m_srb1
The Srb1 attribute.
void PrepareHandover(uint16_t cellId)
Start the handover preparation and send the handover request.
void SetImsi(uint64_t imsi)
Set the IMSI.
void SendData(uint8_t bid, Ptr< Packet > p)
Send a data packet over the appropriate Data Radio Bearer.
void SendRrcConnectionRelease()
This function acts as an interface to trigger the connection release towards eNB, EPC and UE.
EpcX2Sap::HandoverCancelParams BuildHoCancelMsg()
build handover cancel message
void CompleteSetupUe(LteEnbRrcSapProvider::CompleteSetupUeParameters params)
Implement the LteEnbRrcSapProvider::CompleteSetupUe interface.
bool m_needPhyMacConfiguration
need Phy MAC configuration
State
The state of the UeManager at the eNB RRC.
@ CONNECTION_REESTABLISHMENT
@ CONNECTION_RECONFIGURATION
LteRrcSap::RadioResourceConfigDedicated GetRadioResourceConfigForHandoverPreparationInfo()
void CmacUeConfigUpdateInd(LteEnbCmacSapUser::UeConfig cmacParams)
CMAC UE config update indication function.
void RecvHandoverCancel(EpcX2SapUser::HandoverCancelParams params)
Take the necessary actions in response to the reception of an X2 UE CONTEXT RELEASE message.
void DoDispose() override
Destructor implementation.
LteRrcSap::RrcConnectionReconfiguration BuildRrcConnectionReconfiguration()
EventId m_handoverJoiningTimeout
Time limit before a handover joining timeout occurs.
uint8_t AddDataRadioBearerInfo(Ptr< LteDataRadioBearerInfo > radioBearerInfo)
Add a new LteDataRadioBearerInfo structure to the UeManager.
uint16_t GetSrsConfigurationIndex() const
uint8_t Lcid2Bid(uint8_t lcid)
uint16_t m_rnti
The C-RNTI attribute.
void RecvSnStatusTransfer(EpcX2SapUser::SnStatusTransferParams params)
Take the necessary actions in response to the reception of an X2 SN STATUS TRANSFER message.
uint8_t Bid2Lcid(uint8_t bid)
LteRrcSap::PhysicalConfigDedicated m_physicalConfigDedicated
physical config dedicated
void RecvRrcConnectionSetupCompleted(LteRrcSap::RrcConnectionSetupCompleted msg)
Implement the LteEnbRrcSapProvider::RecvRrcConnectionSetupCompleted interface.
std::list< uint8_t > m_drbsToBeStarted
DRBS to be started.
uint8_t m_lastAllocatedDrbid
last allocated Data Radio Bearer ID
uint8_t GetComponentCarrierId() const
void DoReceivePdcpSdu(LtePdcpSapUser::ReceivePdcpSduParameters params)
Receive PDCP SDU function.
EventId m_connectionRejectedTimeout
The delay before a connection rejected timeout occurs.
void RemoveDataRadioBearerInfo(uint8_t drbid)
remove the LteDataRadioBearerInfo corresponding to a bearer being released
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 ...
void RecvRrcConnectionReconfigurationCompleted(LteRrcSap::RrcConnectionReconfigurationCompleted msg)
Implement the LteEnbRrcSapProvider::RecvRrcConnectionReconfigurationCompleted interface.
TracedCallback< uint64_t, uint16_t, uint16_t, uint8_t > m_drbCreatedTrace
The DrbCreated trace source.
uint16_t m_targetX2apId
target X2 ap ID
uint8_t Drbid2Bid(uint8_t drbid)
static TypeId GetTypeId()
Get the type ID.
Ptr< LteSignalingRadioBearerInfo > m_srb0
The Srb0 attribute.
EventId m_connectionRequestTimeout
Time limit before a connection request timeout occurs.
uint64_t m_imsi
International Mobile Subscriber Identity assigned to this UE.
uint8_t GetNewRrcTransactionIdentifier()
bool m_caSupportConfigured
Define if the Carrier Aggregation was already configure for the current UE on not.
uint16_t m_targetCellId
target cell ID
void SetSrsConfigurationIndex(uint16_t srsConfIndex)
Set the SRS configuration index and do the necessary reconfiguration.
Ptr< LteDataRadioBearerInfo > GetDataRadioBearerInfo(uint8_t drbid)
void SendPacket(uint8_t bid, Ptr< Packet > p)
Send a data packet over the appropriate Data Radio Bearer.
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...
LteRrcSap::NonCriticalExtensionConfiguration BuildNonCriticalExtensionConfigurationCa()
std::list< std::pair< uint8_t, Ptr< Packet > > > m_packetBuffer
Packet buffer for when UE is doing the handover.
friend class LtePdcpSpecificLtePdcpSapUser< UeManager >
allow LtePdcpSpecificLtePdcpSapUser<UeManager> class friend access
uint8_t m_lastRrcTransactionIdentifier
last RRC transaction identifier
uint8_t m_componentCarrierId
ID of the primary CC for this UE.
State m_state
The current UeManager state.
void RecvMeasurementReport(LteRrcSap::MeasurementReport msg)
Implement the LteEnbRrcSapProvider::RecvMeasurementReport interface.
void DoInitialize() override
Initialize() implementation.
Ptr< LteEnbRrc > m_rrc
Pointer to the parent eNodeB RRC.
TracedCallback< uint64_t, uint16_t, uint16_t, State, State > m_stateTransitionTrace
The StateTransition trace source.
bool m_pendingRrcConnectionReconfiguration
pending RRC connection reconfiguration
void ReleaseDataRadioBearer(uint8_t drbid)
Release a given radio bearer.
void RecvRrcConnectionReestablishmentComplete(LteRrcSap::RrcConnectionReestablishmentComplete msg)
Implement the LteEnbRrcSapProvider::RecvRrcConnectionReestablishmentComplete interface.
uint8_t Bid2Drbid(uint8_t bid)
LteRrcSap::RrcConnectionReconfiguration GetRrcConnectionReconfigurationForHandover(uint8_t componentCarrierId)
void StartDataRadioBearers()
Start the data radio bearers that have been previously recorded to be started using RecordDataRadioBe...
void SendUeContextRelease()
send the UE CONTEXT RELEASE X2 message to the source eNB, thus successfully terminating an X2 handove...
void RecvHandoverRequestAck(EpcX2SapUser::HandoverRequestAckParams params)
take the necessary actions in response to the reception of an X2 HANDOVER REQUEST ACK message
LteRrcSap::RadioResourceConfigDedicated BuildRadioResourceConfigDedicated()
void CancelPendingEvents()
Cancel all timers which are running for the UE.
uint8_t Lcid2Drbid(uint8_t lcid)
void ScheduleRrcConnectionReconfiguration()
schedule an RRC Connection Reconfiguration procedure with the UE
uint16_t m_sourceCellId
source cell ID
void RecvHandoverPreparationFailure(uint16_t cellId)
Take the necessary actions in response to the reception of an X2 HO preparation failure message.
EpcX2Sap::HandoverPreparationFailureParams BuildHoPrepFailMsg()
build handover preparation failure message
EventId m_handoverLeavingTimeout
Time limit before a handover leaving timeout occurs.
uint16_t m_sourceX2apId
source X2 ap ID
std::vector< EpcX2Sap::ErabToBeSetupItem > GetErabList()
void RecvRrcConnectionRequest(LteRrcSap::RrcConnectionRequest msg)
Implement the LteEnbRrcSapProvider::RecvRrcConnectionRequest interface.
uint8_t Drbid2Lcid(uint8_t drbid)
LtePdcpSapUser * m_drbPdcpSapUser
DRB PDCP SAP user.
void SwitchToState(State s)
Switch the UeManager to the given state.
void SetPdschConfigDedicated(LteRrcSap::PdschConfigDedicated pdschConfigDedicated)
Configure PdschConfigDedicated (i.e.
EventId m_connectionSetupTimeout
Time limit before a connection setup timeout occurs.
void RecvIdealUeContextRemoveRequest(uint16_t rnti)
Implement the LteEnbRrcSapProvider::RecvIdealUeContextRemoveRequest interface.
Hold an unsigned integer type.
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file,...
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
Ptr< const AttributeAccessor > MakePointerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method.
Ptr< AttributeChecker > MakePointerChecker()
Create a PointerChecker for a type.
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
#define NS_ABORT_MSG_IF(cond, msg)
Abnormal program termination if a condition is true, with a message.
#define NS_ABORT_IF(cond)
Abnormal program termination if a condition is true.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG.
#define NS_LOG_LOGIC(msg)
Use NS_LOG to output a message of level LOG_LOGIC.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
#define NS_LOG_WARN(msg)
Use NS_LOG to output a message of level LOG_WARN.
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO.
Ptr< T > CreateObject(Args &&... args)
Create an object by type, with varying number of constructor parameters.
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
Time Seconds(double value)
Construct a Time in the indicated unit.
Time MilliSeconds(uint64_t value)
Construct a Time in the indicated unit.
Ptr< const TraceSourceAccessor > MakeTraceSourceAccessor(T a)
Create a TraceSourceAccessor which will control access to the underlying trace source.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Ptr< const AttributeChecker > MakeBooleanChecker()
Ptr< const AttributeChecker > MakeIntegerChecker()
Ptr< const AttributeAccessor > MakeIntegerAccessor(T1 a1)
Ptr< const AttributeChecker > MakeUintegerChecker()
Ptr< const AttributeAccessor > MakeTimeAccessor(T1 a1)
Ptr< const AttributeAccessor > MakeUintegerAccessor(T1 a1)
ObjectPtrContainerValue ObjectMapValue
ObjectMapValue is an alias for ObjectPtrContainerValue.
Ptr< const AttributeChecker > MakeEnumChecker(T v, std::string n, Ts... args)
Make an EnumChecker pre-configured with a set of allowed values by name.
Ptr< T1 > DynamicCast(const Ptr< T2 > &p)
Cast a Ptr.
constexpr uint32_t MIN_NO_CC
Minimum number of carrier components allowed by 3GPP up to R13.
constexpr uint32_t MAX_NO_CC
Maximum number of carrier components allowed by 3GPP up to R13.
static const std::string g_ueManagerStateName[UeManager::NUM_STATES]
Map each of UE Manager states to its string representation.
static const uint16_t g_srsCiLow[SRS_ENTRIES]
The lower bound (inclusive) of the SRS configuration indices (ISRS) which use the corresponding SRS p...
static const uint16_t g_srsCiHigh[SRS_ENTRIES]
The upper bound (inclusive) of the SRS configuration indices (ISRS) which use the corresponding SRS p...
static const uint8_t SRS_ENTRIES
Number of distinct SRS periodicity plus one.
static const uint16_t g_srsPeriodicity[SRS_ENTRIES]
Sounding Reference Symbol (SRS) periodicity (TSRS) in milliseconds.
Ptr< const AttributeAccessor > MakeBooleanAccessor(T1 a1)
Ptr< const AttributeAccessor > MakeObjectMapAccessor(U T::*memberVariable)
MakeAccessorHelper implementation for ObjectVector.
Ptr< const AttributeChecker > MakeObjectMapChecker()
Ptr< const AttributeAccessor > MakeEnumAccessor(T1 a1)
Ptr< const AttributeChecker > MakeTimeChecker()
Helper to make an unbounded Time checker.
static const std::string & ToString(EpcUeNas::State s)
BearerToBeSwitched structure.
uint8_t epsBearerId
Bearer ID.
PathSwitchRequestParameters structure.
Parameters passed to DataRadioBearerSetupRequest ()
EpsBearer bearer
the characteristics of the bearer to be setup
uint16_t rnti
the RNTI identifying the UE for which the DataRadioBearer is to be created
uint32_t gtpTeid
S1-bearer GTP tunnel endpoint identifier, see 36.423 9.2.1.
uint8_t bearerId
the EPS Bearer Identifier
Ipv4Address transportLayerAddress
IP Address of the SGW, see 36.423 9.2.1.
Parameters passed to InitialContextSetupRequest ()
uint16_t rnti
the RNTI identifying the UE
PathSwitchRequestAcknowledgeParameters structure.
E-RABs admitted item as it is used in the HANDOVER REQUEST ACKNOWLEDGE message.
E-RABs to be setup item as it is used in the HANDOVER REQUEST message.
bool dlForwarding
DL forwarding.
Ipv4Address transportLayerAddress
transport layer address
EpsBearer erabLevelQosParameters
E-RAB level QOS parameters.
ErabsSubjectToStatusTransferItem structure.
uint16_t ulPdcpSn
UL PDCP SN.
uint16_t dlPdcpSn
DL PDCP SN.
Parameters of the HANDOVER CANCEL message.
Parameters of the HANDOVER PREPARATION FAILURE message.
Parameters of the HANDOVER REQUEST ACKNOWLEDGE message.
std::vector< ErabAdmittedItem > admittedBearers
admitted bearers
uint16_t sourceCellId
source cell ID
uint16_t newEnbUeX2apId
new ENB UE X2 AP ID
uint16_t targetCellId
target cell ID
uint16_t oldEnbUeX2apId
old ENB UE X2 AP ID
Ptr< Packet > rrcContext
RRC context.
Parameters of the HANDOVER REQUEST message.
uint16_t oldEnbUeX2apId
old ENB UE X2 AP ID
uint16_t sourceCellId
source cell ID
uint16_t targetCellId
target cell ID
uint32_t mmeUeS1apId
MME UE S1 AP ID.
std::vector< ErabToBeSetupItem > bearers
bearers
Parameters of the RESOURCE STATUS UPDATE message.
Parameters of the SN STATUS TRANSFER message.
uint16_t newEnbUeX2apId
new ENB UE X2 AP ID
std::vector< ErabsSubjectToStatusTransferItem > erabsSubjectToStatusTransferList
ERABs subject to status transfer list.
uint16_t oldEnbUeX2apId
old ENB UE X2 AP ID
uint16_t targetCellId
target cell ID
uint16_t sourceCellId
source cell ID
Parameters of the UE CONTEXT RELEASE message.
uint16_t newEnbUeX2apId
new ENB UE X2 AP ID
uint16_t oldEnbUeX2apId
old ENB UE X2 AP ID
uint16_t sourceCellId
source cell ID
uint16_t targetCellId
target cell ID
Parameters of the UE DATA primitive.
AllocateNcRaPreambleReturnValue structure.
uint8_t raPreambleId
random access preamble id
bool valid
true if a valid RA config was allocated, false otherwise
uint8_t raPrachMaskIndex
PRACH mask index.
Logical Channel information to be passed to CmacSapProvider::ConfigureLc.
uint64_t gbrUl
guaranteed bitrate in uplink
uint8_t qci
QoS Class Identifier.
uint64_t mbrDl
maximum bitrate in downlink
uint64_t mbrUl
maximum bitrate in uplink
uint8_t lcGroup
logical channel group
uint8_t resourceType
0 if the bearer is NON-GBR, 1 if the bearer is GBR, 2 if the bearer in DC-GBR
uint64_t gbrDl
guaranteed bitrate in downlink
uint8_t lcId
logical channel identifier
uint16_t rnti
C-RNTI identifying the UE.
struct defining the RACH configuration of the MAC
Parameters for [re]configuring the UE.
uint16_t m_rnti
UE id within this cell.
uint8_t m_transmissionMode
Transmission mode [1..7] (i.e., SISO, MIMO, etc.)
Parameters for [re]configuring the UE.
uint16_t m_rnti
UE id within this cell.
uint8_t m_transmissionMode
Transmission mode [1..7] (i.e., SISO, MIMO, etc.)
CompleteSetupUeParameters structure.
SetupUeParameters structure.
LtePdcpSapProvider * srb1SapProvider
SRB1 SAP provider.
LteRlcSapProvider * srb0SapProvider
SRB0 SAP provider.
Status variables of the PDCP.
uint16_t rxSn
RX sequence number.
uint16_t txSn
TX sequence number.
Parameters for LtePdcpSapProvider::TransmitPdcpSdu.
Parameters for LtePdcpSapUser::ReceivePdcpSdu.
uint16_t antennaPortsCount
antenna ports count
uint8_t transmissionMode
transmission mode
RadioResourceConfigDedicated sourceRadioResourceConfig
source radio resource config
MasterInformationBlock sourceMasterInformationBlock
source master information block
uint16_t sourceUeIdentity
source UE identity
MeasConfig sourceMeasConfig
source measure config
uint32_t sourceDlCarrierFreq
source DL carrier frequency
SystemInformationBlockType1 sourceSystemInformationBlockType1
source system information block type 1
SystemInformationBlockType2 sourceSystemInformationBlockType2
source system information block type 2
uint16_t dlBandwidth
DL bandwidth.
uint16_t ulBandwidth
UL bandwidth.
uint32_t dlCarrierFreq
DL carrier frequency.
uint32_t ulCarrierFreq
UL carrier frequency.
uint32_t dlCarrierFreq
ARFCN - valueEUTRA.
uint32_t physCellId
physical cell ID
int8_t qRxLevMin
INTEGER (-70..-22), actual value = IE value * 2 [dBm].
int8_t qQualMin
INTEGER (-34..-3), actual value = IE value [dB].
uint8_t epsBearerIdentity
EPS bearer identity.
RlcConfig rlcConfig
RLC config.
uint8_t logicalChannelIdentity
logical channel identify
uint8_t drbIdentity
DRB identity.
LogicalChannelConfig logicalChannelConfig
logical channel config
uint32_t ulCarrierFreq
UL carrier frequency.
uint16_t ulBandwidth
UL bandwidth.
HandoverPreparationInfo structure.
AsConfig asConfig
AS config.
std::list< MeasObjectToAddMod > measObjectToAddModList
measure object to add mod list
bool haveMeasGapConfig
have measure gap config?
QuantityConfig quantityConfig
quantity config
bool haveSmeasure
have S measure?
bool haveSpeedStatePars
have speed state parameters?
std::list< ReportConfigToAddMod > reportConfigToAddModList
report config to add mod list
std::list< MeasIdToAddMod > measIdToAddModList
measure ID to add mod list
bool haveQuantityConfig
have quantity config?
MeasIdToAddMod structure.
uint8_t measObjectId
measure object ID
uint8_t reportConfigId
report config ID
bool haveCellForWhichToReportCGI
have cell for which to report CGI?
uint16_t allowedMeasBandwidth
allowed measure bandwidth
int8_t offsetFreq
offset frequency
uint8_t neighCellConfig
neighbor cell config
bool presenceAntennaPort1
antenna port 1 present?
uint32_t carrierFreq
carrier frequency
MeasObjectToAddMod structure.
uint8_t measObjectId
measure object ID
MeasObjectEutra measObjectEutra
measure object eutra
uint8_t rsrqResult
the RSRQ result
uint8_t rsrpResult
the RSRP result
bool haveMeasResultNeighCells
have measure result neighbor cells
std::list< MeasResultEutra > measResultListEutra
measure result list eutra
bool haveMeasResultServFreqList
has measResultServFreqList-r10
std::list< MeasResultServFreq > measResultServFreqList
MeasResultServFreqList-r10.
MeasResultPCell measResultPCell
measurement result primary cell
MeasurementReport structure.
MeasResults measResults
measure results
RadioResourceConfigCommon radioResourceConfigCommon
radio resource config common
RachConfigDedicated rachConfigDedicated
RACH config dedicated.
bool haveRachConfigDedicated
Have RACH config dedicated?
uint16_t newUeIdentity
new UE identity
bool haveCarrierBandwidth
have carrier bandwidth?
bool haveCarrierFreq
have carrier frequency?
CarrierBandwidthEutra carrierBandwidth
carrier bandwidth
CarrierFreqEutra carrierFreq
carrier frequency
uint16_t targetPhysCellId
target Phy cell ID
NonCriticalExtensionConfiguration structure.
std::list< uint8_t > sCellToReleaseList
SCell to release list.
std::list< SCellToAddMod > sCellToAddModList
SCell to add mod list.
AntennaInfoCommon antennaInfoCommon
2: Physical configuration, general antennaInfoCommon-r10
PdschConfigCommon pdschConfigCommon
4: Physical configuration, physical channels pdsch-ConfigCommon-r10
uint16_t dlBandwidth
1: Cell characteristics
int8_t referenceSignalPower
INTEGER (-60..50),.
int8_t pb
INTEGER (0..3),.
PdschConfigDedicated structure.
PdschConfigDedicated pdschConfigDedicated
PDSCH config dedicated.
bool haveAntennaInfoDedicated
have antenna info dedicated?
SoundingRsUlConfigDedicated soundingRsUlConfigDedicated
sounding RS UL config dedicated
bool haveSoundingRsUlConfigDedicated
have sounding RS UL config dedicated?
bool havePdschConfigDedicated
have PDSCH config dedicated?
AntennaInfoDedicated antennaInfo
antenna info
PuschConfigDedicatedSCell pushConfigDedicatedSCell
PUSCH config dedicated SCell.
AntennaInfoDedicated antennaInfoUl
antenna info UL
SoundingRsUlConfigDedicated soundingRsUlConfigDedicated
sounding RS UL config dedicated
PdschConfigDedicated pdschConfigDedicated
PDSCH config dedicated.
bool haveSoundingRsUlConfigDedicated
have sounding RS UL config dedicated?
bool haveUlConfiguration
have UL configuration?
bool haveAntennaInfoUlDedicated
have antenna info UL dedicated?
bool havePdschConfigDedicated
have PDSCH config dedicated?
bool crossCarrierSchedulingConfig
currently implemented as boolean variable --> implementing crossCarrierScheduling is out of the scope...
bool haveNonUlConfiguration
have non UL configuration?
AntennaInfoDedicated antennaInfo
antenna info dedicated
bool haveAntennaInfoDedicated
have antenna info dedicated?
UlPowerControlDedicatedSCell ulPowerControlDedicatedSCell
UL power control dedicated SCell.
uint32_t plmnIdentity
PLMN identity.
uint8_t numberOfRaPreambles
number of RA preambles
uint16_t nPuschIdentity
3GPP TS 36.331 v.11.10 R11 page 216
uint8_t filterCoefficientRSRQ
filter coefficient RSRQ
uint8_t filterCoefficientRSRP
filter coefficient RSRP
uint8_t raResponseWindowSize
RA response window size.
uint8_t preambleTransMax
preamble transmit maximum
RachConfigCommon structure.
TxFailParam txFailParam
txFailParams
PreambleInfo preambleInfo
preamble info
RaSupervisionInfo raSupervisionInfo
RA supervision info.
uint8_t raPreambleIndex
RA preamble index.
uint8_t raPrachMaskIndex
RA PRACH mask index.
RachConfigCommon rachConfigCommon
RACH config common.
NonUlConfiguration nonUlConfiguration
non UL configuration
bool haveUlConfiguration
have UL configuration
bool haveNonUlConfiguration
have non UL configuration?
UlConfiguration ulConfiguration
UL configuration.
RachConfigCommon rachConfigCommon
RACH config common.
PdschConfigCommon pdschConfigCommon
PDSCH config common.
RadioResourceConfigDedicated structure.
PhysicalConfigDedicated physicalConfigDedicated
physical config dedicated
std::list< uint8_t > drbToReleaseList
DRB to release list.
bool havePhysicalConfigDedicated
have physical config dedicated?
std::list< DrbToAddMod > drbToAddModList
DRB to add mod list.
std::list< SrbToAddMod > srbToAddModList
SRB to add mod list.
PhysicalConfigDedicatedSCell physicalConfigDedicatedSCell
physical config dedicated SCell
Specifies criteria for triggering of an E-UTRA measurement reporting event.
enum ns3::LteRrcSap::ReportConfigEutra::@62 eventId
Event enumeration.
@ RSRP
Reference Signal Received Power.
@ RSRQ
Reference Signal Received Quality.
@ EVENT_A2
Event A2: Serving becomes worse than absolute threshold.
@ EVENT_A4
Event A4: Neighbour becomes better than absolute threshold.
@ EVENT_A1
Event A1: Serving becomes better than absolute threshold.
@ EVENT_A5
Event A5: PCell becomes worse than absolute threshold1 AND Neighbour becomes better than another abso...
ThresholdEutra threshold2
Threshold for event A5.
enum ns3::LteRrcSap::ReportConfigEutra::@63 triggerQuantity
Trigger type enumeration.
@ BOTH
Both the RSRP and RSRQ quantities are to be included in the measurement report.
ThresholdEutra threshold1
Threshold for event A1, A2, A4, and A5.
enum ns3::LteRrcSap::ReportConfigEutra::@64 reportQuantity
Report type enumeration.
ReportConfigToAddMod structure.
uint8_t reportConfigId
report config ID
ReportConfigEutra reportConfigEutra
report config eutra
RrcConnectionReconfigurationCompleted structure.
RrcConnectionReconfiguration structure.
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
bool haveMobilityControlInfo
have mobility control info
NonCriticalExtensionConfiguration nonCriticalExtension
3GPP TS 36.331 v.11.10 R11 Sec.
bool haveNonCriticalExtension
have critical extension?
bool haveMeasConfig
have measure config
MobilityControlInfo mobilityControlInfo
mobility control info
RrcConnectionReestablishmentComplete structure.
RrcConnectionReestablishment structure.
RadioResourceConfigDedicated radioResourceConfigDedicated
radio resource config dedicated
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
RrcConnectionReestablishmentRequest structure.
RrcConnectionReject structure.
uint8_t waitTime
wait time
RrcConnectionRelease structure.
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
RrcConnectionRequest structure.
uint64_t ueIdentity
UE identity.
RrcConnectionSetupCompleted structure.
RrcConnectionSetup structure.
uint8_t rrcTransactionIdentifier
RRC transaction identifier.
RadioResourceConfigDedicated radioResourceConfigDedicated
radio resource config dedicated
RadioResourceConfigDedicatedSCell radioResourceConfigDedicatedSCell
radio resource config dedicated SCell
uint32_t sCellIndex
SCell index.
bool haveRadioResourceConfigDedicatedSCell
have radio resource config dedicated SCell?
CellIdentification cellIdentification
cell identification
RadioResourceConfigCommonSCell radioResourceConfigCommonSCell
radio resource config common SCell
uint8_t srsSubframeConfig
SRS subframe config.
uint16_t srsBandwidthConfig
SRS bandwidth config.
uint16_t srsConfigIndex
SRS config index.
uint16_t srsBandwidth
SRS bandwidth.
LogicalChannelConfig logicalChannelConfig
logical channel config
uint8_t srbIdentity
SB identity.
@ THRESHOLD_RSRP
RSRP is used for the threshold.
@ THRESHOLD_RSRQ
RSRQ is used for the threshold.
enum ns3::LteRrcSap::ThresholdEutra::@60 choice
Threshold enumeration.
uint8_t connEstFailCount
Number of times that the UE detects T300 expiry on the same cell.
UlPowerControlCommonSCell ulPowerControlCommonSCell
3GPP TS 36.331 v.11.10 R11 pag.223
FreqInfo ulFreqInfo
UL frequency info.
SoundingRsUlConfigCommon soundingRsUlConfigCommon
sounding RS UL config common
PrachConfigSCell prachConfigSCell
PRACH config SCell.
uint16_t alpha
alpha value
uint16_t pSrsOffset
3GPP TS 36.331 v.11.10 R11 page 234