25 #include <ns3/fatal-error.h>
27 #include <ns3/abort.h>
29 #include <ns3/pointer.h>
30 #include <ns3/object-map.h>
31 #include <ns3/object-factory.h>
32 #include <ns3/simulator.h>
34 #include <ns3/lte-radio-bearer-info.h>
35 #include <ns3/eps-bearer-tag.h>
36 #include <ns3/packet.h>
38 #include <ns3/lte-rlc.h>
39 #include <ns3/lte-rlc-tm.h>
40 #include <ns3/lte-rlc-um.h>
41 #include <ns3/lte-rlc-am.h>
42 #include <ns3/lte-pdcp.h>
104 "INITIAL_RANDOM_ACCESS",
106 "CONNECTION_REJECTED",
107 "CONNECTED_NORMALLY",
108 "CONNECTION_RECONFIGURATION",
109 "CONNECTION_REESTABLISHMENT",
110 "HANDOVER_PREPARATION",
112 "HANDOVER_PATH_SWITCH",
122 return g_ueManagerStateName[s];
136 : m_lastAllocatedDrbid (0),
139 m_lastRrcTransactionIdentifier (0),
142 m_pendingRrcConnectionReconfiguration (false),
145 m_needPhyMacConfiguration (false)
172 Ptr<LteRlc> rlc = CreateObject<LteRlcTm> ()->GetObject<LteRlc> ();
177 m_srb0 = CreateObject<LteSignalingRadioBearerInfo> ();
179 m_srb0->m_srbIdentity = 0;
194 Ptr<LteRlc> rlc = CreateObject<LteRlcAm> ()->GetObject<LteRlc> ();
201 pdcp->SetLcId (lcid);
206 m_srb1 = CreateObject<LteSignalingRadioBearerInfo> ();
209 m_srb1->m_srbIdentity = 1;
210 m_srb1->m_logicalChannelConfig.priority = 0;
211 m_srb1->m_logicalChannelConfig.prioritizedBitRateKbps = 100;
212 m_srb1->m_logicalChannelConfig.bucketSizeDurationMs = 100;
213 m_srb1->m_logicalChannelConfig.logicalChannelGroup = 0;
237 m_rrc->m_cmacSapProvider->UeUpdateConfigurationReq (req);
244 Time maxConnectionDelay;
280 m_rrc->m_x2uTeidInfoMap.erase (it->second->m_gtpTeid);
289 .AddConstructor<UeManager> ()
290 .AddAttribute (
"DataRadioBearerMap",
"List of UE DataRadioBearerInfo by DRBID.",
293 MakeObjectMapChecker<LteDataRadioBearerInfo> ())
294 .AddAttribute (
"Srb0",
"SignalingRadioBearerInfo for SRB0",
297 MakePointerChecker<LteSignalingRadioBearerInfo> ())
298 .AddAttribute (
"Srb1",
"SignalingRadioBearerInfo for SRB1",
301 MakePointerChecker<LteSignalingRadioBearerInfo> ())
302 .AddAttribute (
"C-RNTI",
303 "Cell Radio Network Temporary Identifier",
307 MakeUintegerChecker<uint16_t> ())
308 .AddTraceSource (
"StateTransition",
309 "fired upon every UE state transition seen by the "
310 "UeManager at the eNB RRC",
312 "ns3::UeManager::StateTracedCallback")
339 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");
340 drbInfo->m_epsBearerIdentity = bid;
341 drbInfo->m_drbIdentity = drbid;
342 drbInfo->m_logicalChannelIdentity = lcid;
343 drbInfo->m_gtpTeid = gtpTeid;
344 drbInfo->m_transportLayerAddress = transportLayerAddress;
351 x2uTeidInfo.
drbid = drbid;
352 std::pair<std::map<uint32_t, LteEnbRrc::X2uTeidInfo>::iterator,
bool>
353 ret =
m_rrc->m_x2uTeidInfoMap.insert (std::pair<uint32_t, LteEnbRrc::X2uTeidInfo> (gtpTeid, x2uTeidInfo));
354 NS_ASSERT_MSG (ret.second ==
true,
"overwriting a pre-existing entry in m_x2uTeidInfoMap");
365 drbInfo->m_rlc = rlc;
374 pdcp->SetRnti (m_rnti);
375 pdcp->SetLcId (lcid);
379 drbInfo->m_pdcp = pdcp;
385 lcinfo.
lcGroup =
m_rrc->GetLogicalChannelGroup (bearer);
403 drbInfo->m_logicalChannelIdentity = lcid;
404 drbInfo->m_logicalChannelConfig.priority =
m_rrc->GetLogicalChannelPriority (bearer);
405 drbInfo->m_logicalChannelConfig.logicalChannelGroup =
m_rrc->GetLogicalChannelGroup (bearer);
408 drbInfo->m_logicalChannelConfig.prioritizedBitRateKbps = bearer.
gbrQosInfo.
gbrUl;
412 drbInfo->m_logicalChannelConfig.prioritizedBitRateKbps = 0;
414 drbInfo->m_logicalChannelConfig.bucketSizeDurationMs = 1000;
439 std::map <uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator drbIt =
m_drbMap.find (*drbIdIt);
441 drbIt->second->m_rlc->Initialize ();
442 if (drbIt->second->m_pdcp)
444 drbIt->second->m_pdcp->Initialize ();
456 std::map <uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator it =
m_drbMap.find (drbid);
457 NS_ASSERT_MSG (it !=
m_drbMap.end (),
"request to remove radio bearer with unknown drbid " << drbid);
460 m_rrc->m_x2uTeidInfoMap.erase (it->second->m_gtpTeid);
463 m_rrc->m_cmacSapProvider->ReleaseLc (
m_rnti, lcid);
479 m_rrc->m_rrcSapUser->SendRrcConnectionReconfiguration (
m_rnti, msg);
487 ueManager->ReleaseDataRadioBearer (bearerId);
513 m_rrc->m_rrcSapUser->SendRrcConnectionReconfiguration (
m_rnti, msg);
561 params.
rrcContext =
m_rrc->m_rrcSapUser->EncodeHandoverPreparationInformation (hpi);
569 m_rrc->m_x2SapProvider->SendHandoverRequest (params);
597 m_rrc->m_rrcSapUser->SendRrcConnectionReconfiguration (
m_rnti, handoverCommand);
615 if (0 != drbIt->second->m_rlc->GetObject<
LteRlcAm> ())
624 m_rrc->m_x2SapProvider->SendSnStatusTransfer (sst);
661 NS_LOG_LOGIC (
"queueing data on PDCP for transmission over the air");
668 std::map<uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator it =
m_drbMap.find (drbid);
672 if (bearerInfo != NULL)
683 NS_LOG_LOGIC (
"forwarding data to target eNB over X2-U");
690 m_rrc->m_x2SapProvider->SendUeData (params);
700 std::vector<EpcX2Sap::ErabToBeSetupItem>
704 std::vector<EpcX2Sap::ErabToBeSetupItem> ret;
710 etbsi.
erabId = it->second->m_epsBearerIdentity;
714 etbsi.
gtpTeid = it->second->m_gtpTeid;
715 ret.push_back (etbsi);
727 NS_LOG_INFO (
"Send UE CONTEXT RELEASE from target eNB to source eNB");
732 m_rrc->m_x2SapProvider->SendUeContextRelease (ueCtxReleaseParams);
751 NS_LOG_INFO (
"target eNB sent HO preparation failure, aborting HO");
765 for (std::vector<EpcX2Sap::ErabsSubjectToStatusTransferItem>::iterator erabIt
809 if (
m_rrc->m_admitRrcConnectionRequest ==
true)
812 if (
m_rrc->m_s1SapProvider != 0)
821 m_rrc->m_rrcSapUser->SendRrcConnectionSetup (
m_rnti, msg2);
825 m_rrc->m_connectionSetupTimeoutDuration,
836 m_rrc->m_rrcSapUser->SendRrcConnectionReject (
m_rnti, rejectMsg);
839 m_rrc->m_connectionRejectedTimeoutDuration,
885 m_rrc->m_cmacSapProvider->UeUpdateConfigurationReq (req);
891 m_rrc->m_cphySapProvider->SetPa (
m_rnti, paDouble);
911 NS_LOG_INFO (
"Send PATH SWITCH REQUEST to the MME");
923 b.
teid = it->second->m_gtpTeid;
926 m_rrc->m_s1SapProvider->PathSwitchRequest (params);
957 m_rrc->m_rrcSapUser->SendRrcConnectionReestablishment (
m_rnti, msg2);
985 <<
" RSRP " << (it->haveRsrpResult ? (uint16_t) it->rsrpResult : 255)
986 <<
" RSRQ " << (it->haveRsrqResult ? (uint16_t) it->rsrqResult : 255));
989 if ((
m_rrc->m_handoverManagementSapProvider != 0)
990 && (
m_rrc->m_handoverMeasIds.find (measId) !=
m_rrc->m_handoverMeasIds.end ()))
993 m_rrc->m_handoverManagementSapProvider->ReportUeMeas (
m_rnti,
997 if ((
m_rrc->m_anrSapProvider != 0)
998 && (
m_rrc->m_anrMeasIds.find (measId) !=
m_rrc->m_anrMeasIds.end ()))
1004 if ((
m_rrc->m_ffrRrcSapProvider != 0)
1005 && (
m_rrc->m_ffrMeasIds.find (measId) !=
m_rrc->m_ffrMeasIds.end ()))
1040 if (params.
lcid > 2)
1075 m_rrc->m_cphySapProvider->SetSrsConfigurationIndex (
m_rnti, srsConfIndex);
1111 const uint8_t MAX_DRB_ID = 32;
1114 drbid = (drbid + 1) % MAX_DRB_ID)
1121 drbInfo->m_drbIdentity = drbid;
1136 std::map<uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator it =
m_drbMap.find (drbid);
1146 std::map <uint8_t, Ptr<LteDataRadioBearerInfo> >::iterator it =
m_drbMap.find (drbid);
1147 NS_ASSERT_MSG (it !=
m_drbMap.end (),
"request to remove radio bearer with unknown drbid " << drbid);
1186 dtam.
rlcConfig = it->second->m_rlcConfig;
1293 : m_x2SapProvider (0),
1294 m_cmacSapProvider (0),
1295 m_handoverManagementSapProvider (0),
1296 m_anrSapProvider (0),
1297 m_ffrRrcSapProvider (0),
1299 m_macSapProvider (0),
1300 m_s1SapProvider (0),
1301 m_cphySapProvider (0),
1302 m_configured (false),
1303 m_lastAllocatedRnti (0),
1304 m_srsCurrentPeriodicityId (0),
1305 m_lastAllocatedConfigurationIndex (0),
1306 m_reconfigureUes (false)
1347 .SetGroupName(
"Lte")
1349 .AddAttribute (
"UeMap",
"List of UeManager by C-RNTI.",
1352 MakeObjectMapChecker<UeManager> ())
1353 .AddAttribute (
"DefaultTransmissionMode",
1354 "The default UEs' transmission mode (0: SISO)",
1357 MakeUintegerChecker<uint8_t> ())
1358 .AddAttribute (
"EpsBearerToRlcMapping",
1359 "Specify which type of RLC will be used for each type of EPS bearer. ",
1366 .AddAttribute (
"SystemInformationPeriodicity",
1367 "The interval for sending system information (Time value)",
1373 .AddAttribute (
"SrsPeriodicity",
1374 "The SRS periodicity in milliseconds",
1378 MakeUintegerChecker<uint32_t> ())
1381 .AddAttribute (
"ConnectionRequestTimeoutDuration",
1382 "After a RA attempt, if no RRC CONNECTION REQUEST is "
1383 "received before this time, the UE context is destroyed. "
1384 "Must account for reception of RAR and transmission of "
1385 "RRC CONNECTION REQUEST over UL GRANT.",
1389 .AddAttribute (
"ConnectionSetupTimeoutDuration",
1390 "After accepting connection request, if no RRC CONNECTION "
1391 "SETUP COMPLETE is received before this time, the UE "
1392 "context is destroyed. Must account for the UE's reception "
1393 "of RRC CONNECTION SETUP and transmission of RRC CONNECTION "
1398 .AddAttribute (
"ConnectionRejectedTimeoutDuration",
1399 "Time to wait between sending a RRC CONNECTION REJECT and "
1400 "destroying the UE context",
1404 .AddAttribute (
"HandoverJoiningTimeoutDuration",
1405 "After accepting a handover request, if no RRC CONNECTION "
1406 "RECONFIGURATION COMPLETE is received before this time, the "
1407 "UE context is destroyed. Must account for reception of "
1408 "X2 HO REQ ACK by source eNB, transmission of the Handover "
1409 "Command, non-contention-based random access and reception "
1410 "of the RRC CONNECTION RECONFIGURATION COMPLETE message.",
1414 .AddAttribute (
"HandoverLeavingTimeoutDuration",
1415 "After issuing a Handover Command, if neither RRC "
1416 "CONNECTION RE-ESTABLISHMENT nor X2 UE Context Release has "
1417 "been previously received, the UE context is destroyed.",
1423 .AddAttribute (
"QRxLevMin",
1424 "One of information transmitted within the SIB1 message, "
1425 "indicating the required minimum RSRP level that any UE must "
1426 "receive from this cell before it is allowed to camp to this "
1427 "cell. The default value -70 corresponds to -140 dBm and is "
1428 "the lowest possible value as defined by Section 6.3.4 of "
1429 "3GPP TS 36.133. This restriction, however, only applies to "
1430 "initial cell selection and EPC-enabled simulation.",
1434 MakeIntegerChecker<int8_t> (-70, -22))
1437 .AddAttribute (
"AdmitHandoverRequest",
1438 "Whether to admit an X2 handover request from another eNB",
1442 .AddAttribute (
"AdmitRrcConnectionRequest",
1443 "Whether to admit a connection request from a UE",
1449 .AddAttribute (
"RsrpFilterCoefficient",
1450 "Determines the strength of smoothing effect induced by "
1451 "layer 3 filtering of RSRP in all attached UE; "
1452 "if set to 0, no layer 3 filtering is applicable",
1456 MakeUintegerChecker<uint8_t> (0))
1457 .AddAttribute (
"RsrqFilterCoefficient",
1458 "Determines the strength of smoothing effect induced by "
1459 "layer 3 filtering of RSRQ in all attached UE; "
1460 "if set to 0, no layer 3 filtering is applicable",
1464 MakeUintegerChecker<uint8_t> (0))
1467 .AddTraceSource (
"NewUeContext",
1468 "Fired upon creation of a new UE context.",
1470 "ns3::LteEnbRrc::NewUeContextTracedCallback")
1471 .AddTraceSource (
"ConnectionEstablished",
1472 "Fired upon successful RRC connection establishment.",
1474 "ns3::LteEnbRrc::ConnectionHandoverTracedCallback")
1475 .AddTraceSource (
"ConnectionReconfiguration",
1476 "trace fired upon RRC connection reconfiguration",
1478 "ns3::LteEnbRrc::ConnectionHandoverTracedCallback")
1479 .AddTraceSource (
"HandoverStart",
1480 "trace fired upon start of a handover procedure",
1482 "ns3::LteEnbRrc::HandoverStartTracedCallback")
1483 .AddTraceSource (
"HandoverEndOk",
1484 "trace fired upon successful termination of a handover procedure",
1486 "ns3::LteEnbRrc::ConnectionHandoverTracedCallback")
1487 .AddTraceSource (
"RecvMeasurementReport",
1488 "trace fired when measurement report is received",
1490 "ns3::LteEnbRrc::ReceiveReportTracedCallback")
1617 std::map<uint16_t, Ptr<UeManager> >::const_iterator it =
m_ueMap.find (rnti);
1618 return (it !=
m_ueMap.end ());
1626 std::map<uint16_t, Ptr<UeManager> >::iterator it =
m_ueMap.find (rnti);
1639 "Measurement identities and reporting configuration should not have different quantity");
1643 NS_FATAL_ERROR (
"AddUeMeasReportConfig may not be called after the simulation has run");
1654 NS_FATAL_ERROR (
"The given triggerQuantity (RSRP) does not match with the given threshold2.choice");
1663 NS_FATAL_ERROR (
"The given triggerQuantity (RSRP) does not match with the given threshold1.choice");
1671 NS_FATAL_ERROR (
"The given triggerQuantity (RSRQ) does not match with the given threshold2.choice");
1680 NS_FATAL_ERROR (
"The given triggerQuantity (RSRQ) does not match with the given threshold1.choice");
1691 NS_FATAL_ERROR (
"Only REPORT_STRONGEST_CELLS purpose is supported");
1696 NS_LOG_WARN (
"reportQuantity = BOTH will be used instead of the given reportQuantity");
1721 uint16_t ulEarfcn, uint16_t dlEarfcn, uint16_t cellId)
1723 NS_LOG_FUNCTION (
this << (uint16_t) ulBandwidth << (uint16_t) dlBandwidth
1724 << ulEarfcn << dlEarfcn << cellId);
1805 NS_ASSERT_MSG (found,
"no EpsBearerTag found in packet to be sent");
1807 ueManager->SendData (tag.
GetBid (), packet);
1823 "ConnectionRequestTimeout in unexpected state " <<
ToString (
GetUeManager (rnti)->GetState ()));
1841 "ConnectionRejectedTimeout in unexpected state " <<
ToString (
GetUeManager (rnti)->GetState ()));
1871 ueManager->PrepareHandover (cellId);
1893 GetUeManager (rnti)->RecvRrcConnectionSetupCompleted (msg);
1900 GetUeManager (rnti)->RecvRrcConnectionReconfigurationCompleted (msg);
1907 GetUeManager (rnti)->RecvRrcConnectionReestablishmentRequest (msg);
1914 GetUeManager (rnti)->RecvRrcConnectionReestablishmentComplete (msg);
1935 ueManager->SendUeContextRelease ();
1967 if (anrcrv.
valid ==
false)
1969 NS_LOG_INFO (
this <<
" failed to allocate a preamble for non-contention based RA => cannot accept HO");
1971 NS_FATAL_ERROR (
"should trigger HO Preparation Failure, but it is not implemented");
1985 for (std::vector <EpcX2Sap::ErabToBeSetupItem>::iterator it = req.
bearers.begin ();
1989 ueManager->SetupDataRadioBearer (it->erabLevelQosParameters, it->erabId, it->gtpTeid, it->transportLayerAddress);
2016 ackParams.
rrcContext = encodedHandoverCommand;
2018 NS_LOG_LOGIC (
"Send X2 message: HANDOVER REQUEST ACK");
2033 NS_LOG_LOGIC (
"Recv X2 message: HANDOVER REQUEST ACK");
2042 ueManager->RecvHandoverRequestAck (params);
2050 NS_LOG_LOGIC (
"Recv X2 message: HANDOVER PREPARATION FAILURE");
2060 ueManager->RecvHandoverPreparationFailure (params.
targetCellId);
2076 ueManager->RecvSnStatusTransfer (params);
2111 NS_LOG_LOGIC (
"Recv X2 message: RESOURCE STATUS UPDATE");
2115 NS_ASSERT (
"Processing of RESOURCE STATUS UPDATE X2 message IS NOT IMPLEMENTED");
2123 NS_LOG_LOGIC (
"Recv UE DATA FORWARDING through X2 interface");
2130 std::map<uint32_t, X2uTeidInfo>::iterator
2134 GetUeManager (teidInfoIt->second.rnti)->SendData (teidInfoIt->second.drbid, params.
ueData);
2154 ueManager->CmacUeConfigUpdateInd (cmacParams);
2179 bool isHandoverAllowed =
true;
2187 <<
" targetCellId=" << targetCellId
2188 <<
" NRT.NoHo=" << noHo <<
" NRT.NoX2=" << noX2);
2192 isHandoverAllowed =
false;
2193 NS_LOG_LOGIC (
this <<
" handover to cell " << targetCellId
2194 <<
" is not allowed by ANR");
2199 NS_ASSERT_MSG (ueManager != 0,
"Cannot find UE context with RNTI " << rnti);
2203 isHandoverAllowed =
false;
2204 NS_LOG_LOGIC (
this <<
" handover is not allowed because the UE"
2205 <<
" rnti=" << rnti <<
" is in "
2206 <<
ToString (ueManager->GetState ()) <<
" state");
2209 if (isHandoverAllowed)
2212 ueManager->PrepareHandover (targetCellId);
2239 ueManager->SetPdschConfigDedicated (pdschConfigDedicated);
2267 NS_ASSERT_MSG (found,
"no more RNTIs available (do you have more than 65535 UEs in a cell?)");
2269 Ptr<UeManager> ueManager = CreateObject<UeManager> (
this, rnti, state);
2271 ueManager->Initialize ();
2272 NS_LOG_DEBUG (
this <<
" New UE RNTI " << rnti <<
" cellId " <<
m_cellId <<
" srs CI " << ueManager->GetSrsConfigurationIndex ());
2281 std::map <uint16_t, Ptr<UeManager> >::iterator it =
m_ueMap.find (rnti);
2283 uint16_t srsCi = (*it).second->GetSrsConfigurationIndex ();
2377 if (g_srsPeriodicity[
id] == p)
2384 std::ostringstream allowedValues;
2387 allowedValues << g_srsPeriodicity[id] <<
" ";
2389 NS_FATAL_ERROR (
"illecit SRS periodicity value " << p <<
". Allowed values: " << allowedValues.str ());
2413 <<
") for current SRS periodicity "
2415 <<
", consider increasing the value of ns3::LteEnbRrc::SrsPeriodicity");
2430 if ((*rit) < g_srsCiHigh[m_srsCurrentPeriodicityId])
2468 if (bearer.
IsGbr ())
virtual void AddNeighbourRelation(uint16_t cellId)=0
Add a new Neighbour Relation entry.
Callback< void, Ptr< Packet > > m_forwardUpCallback
Ipv4Address transportLayerAddress
IP Address of the SGW, see 36.423 9.2.1.
static const uint8_t SRS_ENTRIES
Number of distinct SRS periodicity plus one.
virtual void SetMasterInformationBlock(LteRrcSap::MasterInformationBlock mib)=0
TracedCallback< uint64_t, uint16_t, uint16_t, State, State > m_stateTransitionTrace
The StateTransition trace source.
TracedCallback< uint64_t, uint16_t, uint16_t > m_handoverEndOkTrace
The HandoverEndOk trace source.
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...
bool HasUeManager(uint16_t rnti) const
SystemInformationBlockType2 sourceSystemInformationBlockType2
Parameters passed to DataRadioBearerSetupRequest ()
void ConnectionSetupTimeout(uint16_t rnti)
Method triggered when a UE is expected to complete a connection setup procedure but does not do so in...
Service Access Point (SAP) offered by the Frequency Reuse algorithm instance to the eNodeB RRC instan...
void SetEpcX2SapProvider(EpcX2SapProvider *s)
Set the X2 SAP this RRC should interact with.
Template for the implementation of the EpcEnbS1SapUser as a member of an owner class of type C to whi...
This class implements the Service Access Point (SAP) between the LteEnbRrc and the EpcEnbApplication...
Simulation virtual time values and global simulation resolution.
Ptr< LteSignalingRadioBearerInfo > m_srb1
The Srb1 attribute.
void SendHandoverRequest(uint16_t rnti, uint16_t cellId)
Send a HandoverRequest through the X2 SAP interface.
void SendSystemInformation()
method used to periodically send System Information
LteRrcSap::RadioResourceConfigDedicated GetRadioResourceConfigForHandoverPreparationInfo()
CarrierFreqEutra carrierFreq
Smart pointer class similar to boost::intrusive_ptr.
These service primitives of this part of the X2 SAP are provided by the X2 entity and issued by RRC e...
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by "...
E-RABs admitted item as it is used in the HANDOVER REQUEST ACKNOWLEDGE message.
LteEnbRrc()
create an RRC instance for use within an eNB
uint16_t AddUe(UeManager::State state)
Allocate a new RNTI for a new UE.
PdschConfigDedicated pdschConfigDedicated
AttributeValue implementation for Boolean.
void RecordDataRadioBearersToBeStarted()
Start all configured data radio bearers.
virtual void DoDispose()
Destructor implementation.
uint16_t m_dlBandwidth
Downlink transmission bandwidth configuration in number of Resource Blocks.
MeasConfig sourceMeasConfig
void RecvUeContextRelease(EpcX2SapUser::UeContextReleaseParams params)
Take the necessary actions in response to the reception of an X2 UE CONTEXT RELEASE message...
This class implements the Service Access Point (SAP) between the LteEnbRrc and the EpcEnbApplication...
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...
std::list< MeasObjectToAddMod > measObjectToAddModList
void RecvHandoverPreparationFailure(uint16_t cellId)
Take the necessary actions in response to the reception of an X2 HO preparation failure message...
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
void DoNotifyLcConfigResult(uint16_t rnti, uint8_t lcid, bool success)
uint8_t numberOfRaPreambles
uint8_t bearerId
the EPS Bearer Identifier
uint16_t m_rnti
UE id within this cell.
static double ConvertPdschConfigDedicated2Double(PdschConfigDedicated pdschConfigDedicated)
SoundingRsUlConfigDedicated soundingRsUlConfigDedicated
bool presenceAntennaPort1
LteFfrRrcSapProvider * m_ffrRrcSapProvider
Interface to the FFR algorithm instance.
virtual void SetEarfcn(uint16_t ulEarfcn, uint16_t dlEarfcn)=0
static TypeId GetTypeId(void)
void SetCellId(uint16_t m_cellId)
set the cell id of this eNB
LteFfrRrcSapUser * m_ffrRrcSapUser
Receive API calls from the FFR algorithm instance.
uint8_t GetLogicalChannelGroup(EpsBearer bearer)
uint8_t m_transmissionMode
Transmission mode 1..7
void AddX2Neighbour(uint16_t cellId)
Add a neighbour with an X2 interface.
QuantityConfig quantityConfig
uint8_t Drbid2Bid(uint8_t drbid)
uint16_t txSn
TX sequence number.
uint16_t rnti
the RNTI identifying the UE for which the DataRadioBearer is to be created
bool m_admitHandoverRequest
The AdmitHandoverRequest attribute.
std::vector< CellMeasurementResultItem > cellMeasurementResultList
enum ns3::LteRrcSap::ReportConfigEutra::@75 reportQuantity
The quantities to be included in the measurement report, always assumed to be BOTH.
friend class EnbRrcMemberLteEnbCmacSapUser
std::list< MeasResultEutra > measResultListEutra
Parameters of the HANDOVER REQUEST message.
int8_t qRxLevMin
INTEGER (-70..-22), actual value = IE value * 2 [dBm].
Ptr< const AttributeAccessor > MakeEnumAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
Ptr< const AttributeAccessor > MakeBooleanAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
Part of the RRC protocol.
ThresholdEutra threshold1
Threshold for event A1, A2, A4, and A5.
void DoRecvRrcConnectionReconfigurationCompleted(uint16_t rnti, LteRrcSap::RrcConnectionReconfigurationCompleted msg)
Part of the RRC protocol. Forwarding LteEnbRrcSapProvider::RecvRrcConnectionReconfigurationCompleted ...
Template for the implementation of the LteHandoverManagementSapUser as a member of an owner class of ...
Status variables of the PDCP.
Class for forwarding CMAC SAP User functions.
void AddPacketTag(const Tag &tag) const
Add a packet tag.
Specifies criteria for triggering of an E-UTRA measurement reporting event.
void SetCsgId(uint32_t csgId, bool csgIndication)
Associate this RRC entity with a particular CSG information.
uint16_t GetSrsConfigurationIndex(void) const
uint8_t raResponseWindowSize
uint8_t qci
QoS Class Identifier.
RSRP is used for the threshold.
enum ns3::LteRrcSap::ReportConfigEutra::@72 eventId
Choice of E-UTRA event triggered reporting criteria.
static TypeId GetTypeId(void)
virtual ~LteEnbRrc()
Destructor.
LteRlcSapUser * srb0SapUser
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file...
uint16_t m_rnti
The C-RNTI attribute.
std::list< SrbToAddMod > srbToAddModList
Hold a signed integer type.
uint8_t Lcid2Bid(uint8_t lcid)
virtual void SendHandoverPreparationFailure(HandoverPreparationFailureParams params)=0
void SetLteHandoverManagementSapProvider(LteHandoverManagementSapProvider *s)
set the Handover Management SAP this RRC should interact with
EpcX2SapUser * GetEpcX2SapUser()
Get the X2 SAP offered by this RRC.
RadioResourceConfigDedicated radioResourceConfigDedicated
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
void SetLteEnbCphySapProvider(LteEnbCphySapProvider *s)
set the CPHY SAP this RRC should use to interact with the PHY
uint16_t m_lastAllocatedRnti
Time MilliSeconds(uint64_t value)
Construct a Time in the indicated unit.
uint16_t GetNewSrsConfigurationIndex(void)
Allocate a new SRS configuration index for a new UE.
void SetTypeId(TypeId tid)
Set the TypeId of the Objects to be created by this factory.
std::list< BearerToBeSwitched > bearersToBeSwitched
uint32_t GetSize(void) const
Returns the the size in bytes of the packet (including the zero-filled initial payload).
LteEnbCmacSapUser * GetLteEnbCmacSapUser()
Get the CMAC SAP offered by this RRC.
uint8_t m_transmissionMode
Transmission mode 1..7
Tag used to define the RNTI and EPS bearer ID for packets interchanged between the EpcEnbApplication ...
uint16_t m_ulBandwidth
Uplink transmission bandwidth configuration in number of Resource Blocks.
uint8_t m_lastRrcTransactionIdentifier
uint16_t m_srsCurrentPeriodicityId
The SrsPeriodicity attribute.
The LTE Radio Resource Control entity at the eNB.
void SetLteEnbRrcSapUser(LteEnbRrcSapUser *s)
set the RRC SAP this RRC should interact with
MeasObjectEutra measObjectEutra
uint16_t sourceUeIdentity
void SetLteEnbCmacSapProvider(LteEnbCmacSapProvider *s)
set the CMAC SAP this RRC should interact with
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO.
uint16_t DoAllocateTemporaryCellRnti()
#define NS_FATAL_ERROR(msg)
Fatal error handling.
uint64_t m_imsi
International Mobile Subscriber Identity assigned to this UE.
virtual uint16_t AllocateTemporaryCellRnti()
request the allocation of a Temporary C-RNTI
Service Access Point (SAP) offered by the UE PHY to the UE RRC for control purposes.
EpsBearer bearer
the characteristics of the bearer to be set up
The attribute can be written at construction-time.
Time m_handoverLeavingTimeoutDuration
The HandoverLeavingTimeoutDuration attribute.
LteRlcSapProvider * srb0SapProvider
uint64_t mbrDl
maximum bitrate in downlink
void SetBid(uint8_t bid)
Set the bearer id to the given value.
Ipv4Address transportLayerAddress
Event A2: Serving becomes worse than absolute threshold.
static EventId Schedule(Time const &time, MEM mem_ptr, OBJ obj)
Schedule an event to expire at the relative time "time" is reached.
uint8_t GetBid(void) const
Time m_connectionRejectedTimeoutDuration
The ConnectionRejectedTimeoutDuration attribute.
LteMacSapProvider * m_macSapProvider
Interface to the eNodeB MAC instance, to be used by RLC instances.
LteHandoverManagementSapUser * GetLteHandoverManagementSapUser()
Get the Handover Management SAP offered by this RRC.
LteEnbRrcSapProvider * m_rrcSapProvider
Interface to receive messages from UE over the RRC protocol.
RachConfigDedicated rachConfigDedicated
uint16_t GetRnti(void) const
virtual void RecvLoadInformation(EpcX2Sap::LoadInformationParams params)=0
RecvLoadInformation.
void RemoveSrsConfigurationIndex(uint16_t srcCi)
remove a previously allocated SRS configuration index
virtual void RrcConfigurationUpdateInd(UeConfig params)
Notify the RRC of a UE config updated requested by the MAC (normally, by the scheduler) ...
void SetImsi(uint64_t imsi)
Set the IMSI.
uint64_t ueAggregateMaxBitRateUplink
void SetRnti(uint16_t rnti)
void SetLteMacSapProvider(LteMacSapProvider *s)
set the MAC SAP provider.
void SendUeContextRelease()
send the UE CONTEXT RELEASE X2 message to the source eNB, thus successfully terminating an X2 handove...
RSRQ is used for the threshold.
LteRrcSap::RrcConnectionReconfiguration GetRrcConnectionReconfigurationForHandover()
void SwitchToState(State s)
Switch the UeManager to the given state.
Time m_connectionSetupTimeoutDuration
The ConnectionSetupTimeoutDuration attribute.
static const std::string g_ueManagerStateName[UeManager::NUM_STATES]
Map each of UE Manager states to its string representation.
void RecvRrcConnectionReconfigurationCompleted(LteRrcSap::RrcConnectionReconfigurationCompleted msg)
Part of the RRC protocol. Implement the LteEnbRrcSapProvider::RecvRrcConnectionReconfigurationComplet...
void ReleaseDataRadioBearer(uint8_t drbid)
Release a given radio bearer.
double GetPacketErrorLossRate() const
uint8_t AddDataRadioBearerInfo(Ptr< LteDataRadioBearerInfo > radioBearerInfo)
Add a new LteDataRadioBearerInfo structure to the UeManager.
EpcX2SapUser * m_x2SapUser
Interface to receive messages from neighbour eNodeB over the X2 interface.
uint8_t m_rsrqFilterCoefficient
The RsrqFilterCoefficient attribute.
LteEnbRrcSapUser * m_rrcSapUser
Interface to send messages to UE over the RRC protocol.
uint16_t m_dlEarfcn
Downlink E-UTRA Absolute Radio Frequency Channel Number.
bool haveRadioResourceConfigDedicated
bool m_needPhyMacConfiguration
Ptr< LteEnbRrc > m_rrc
Pointer to the parent eNodeB RRC.
EpcEnbS1SapProvider * m_s1SapProvider
Interface to send messages to core network over the S1 protocol.
LteRrcSap::SystemInformationBlockType1 m_sib1
The System Information Block Type 1 that is currently broadcasted over BCH.
Ptr< const TraceSourceAccessor > MakeTraceSourceAccessor(T a)
Create a TraceSourceAccessor which will control access to the underlying trace source.
Time m_connectionRequestTimeoutDuration
The ConnectionRequestTimeoutDuration attribute.
void SetForwardUpCallback(Callback< void, Ptr< Packet > > cb)
set the callback used to forward data packets up the stack
Ptr< const AttributeChecker > MakeTimeChecker(const Time min, const Time max)
Helper to make a Time checker with bounded range.
void DoRecvRrcConnectionSetupCompleted(uint16_t rnti, LteRrcSap::RrcConnectionSetupCompleted msg)
Part of the RRC protocol. Forwarding LteEnbRrcSapProvider::RecvRrcConnectionSetupCompleted interface ...
void DoRecvRrcConnectionReestablishmentComplete(uint16_t rnti, LteRrcSap::RrcConnectionReestablishmentComplete msg)
Part of the RRC protocol. Forwarding LteEnbRrcSapProvider::RecvRrcConnectionReestablishmentComplete i...
The attribute can be read.
LteHandoverManagementSapUser * m_handoverManagementSapUser
Receive API calls from the handover algorithm instance.
Ptr< const AttributeAccessor > MakeIntegerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
void DoCompleteSetupUe(uint16_t rnti, LteEnbRrcSapProvider::CompleteSetupUeParameters params)
Part of the RRC protocol. Forwarding LteEnbRrcSapProvider::CompleteSetupUe interface to UeManager::Co...
SystemInformationBlockType1 sourceSystemInformationBlockType1
TracedCallback< uint16_t, uint16_t > m_newUeContextTrace
The NewUeContext trace source.
uint8_t rrcTransactionIdentifier
Ptr< Packet > pdcpSdu
the RRC PDU
Service Access Point (SAP) offered by the MAC to the RRC See Femto Forum MAC Scheduler Interface Spec...
PreambleInfo preambleInfo
Template for the implementation of the LteFfrRrcSapUser as a member of an owner class of type C to wh...
LteEnbCmacSapUser * m_cmacSapUser
Receive API calls from the eNodeB MAC instance.
Ptr< UeManager > GetUeManager(uint16_t rnti)
Parameters for LtePdcpSapUser::ReceivePdcpSdu.
uint8_t lcId
logical channel identifier
This class contains the specification of EPS Bearers.
uint16_t m_rnti
UE id within this cell.
Event A5: PCell becomes worse than absolute threshold1 AND Neighbour becomes better than another abso...
bool m_admitRrcConnectionRequest
The AdmitRrcConnectionRequest attribute.
int8_t m_qRxLevMin
The QRxLevMin attribute.
uint16_t rnti
the C-RNTI identifying the UE
LtePdcpSapUser * m_drbPdcpSapUser
uint8_t AddUeMeasReportConfig(LteRrcSap::ReportConfigEutra config)
Add a new UE measurement reporting configuration.
EventId m_connectionRejectedTimeout
The delay before a connection rejected timeout occurs.
void SetLteFfrRrcSapProvider(LteFfrRrcSapProvider *s)
set the FFR SAP this RRC should interact with
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 ...
Reference Signal Received Quality.
Ptr< const AttributeAccessor > MakePointerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
Hold variables of type enum.
LteRrcSap::RrcConnectionReconfiguration BuildRrcConnectionReconfiguration()
Ptr< LteSignalingRadioBearerInfo > m_srb0
The Srb0 attribute.
void DoRecvRrcConnectionRequest(uint16_t rnti, LteRrcSap::RrcConnectionRequest msg)
Part of the RRC protocol. Forwarding LteEnbRrcSapProvider::RecvRrcConnectionRequest interface to UeMa...
uint64_t ueAggregateMaxBitRateDownlink
uint8_t epsBearerIdentity
AttributeValue implementation for Time.
uint16_t m_ulEarfcn
Uplink E-UTRA Absolute Radio Frequency Channel Number.
static TypeId GetTypeId(void)
int8_t referenceSignalPower
void SetSrsConfigurationIndex(uint16_t srsConfIndex)
Set the SRS configuration index and do the necessary reconfiguration.
void DoTriggerHandover(uint16_t rnti, uint16_t targetCellId)
LogicalChannelConfig logicalChannelConfig
virtual void SendLoadInformation(LoadInformationParams params)=0
RachConfigCommon rachConfigCommon
Ptr< Object > Create(void) const
Create an Object instance of the configured TypeId.
ReportConfigEutra reportConfigEutra
TracedCallback< uint64_t, uint16_t, uint16_t > m_connectionEstablishedTrace
The ConnectionEstablished trace source.
Parameters of the HANDOVER PREPARATION FAILURE message.
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)...
Hold an unsigned integer type.
Logical Channel information to be passed to CmacSapProvider::ConfigureLc.
virtual void SetCellId(uint16_t cellId)=0
GbrQosInformation gbrQosInfo
void DoPathSwitchRequestAcknowledge(EpcEnbS1SapUser::PathSwitchRequestAcknowledgeParameters params)
virtual void SetBandwidth(uint8_t ulBandwidth, uint8_t dlBandwidth)=0
virtual void NotifyLcConfigResult(uint16_t rnti, uint8_t lcid, bool success)
notify the result of the last LC config operation
std::vector< ErabAdmittedItem > admittedBearers
uint16_t rnti
the C-RNTI identifying the UE
std::list< MeasIdToAddMod > measIdToAddModList
bool haveRachConfigDedicated
Event A4: Neighbour becomes better than absolute threshold.
Parameters of the SN STATUS TRANSFER message.
PhysicalConfigDedicated physicalConfigDedicated
LteEnbCphySapProvider * m_cphySapProvider
Interface to the eNodeB PHY instance.
std::set< uint8_t > m_ffrMeasIds
List of measurement identities which are intended for FFR purpose.
uint8_t filterCoefficientRSRP
Service Access Point (SAP) offered by the eNodeB RRC instance to the ANR instance.
Parameters for LtePdcpSapProvider::TransmitPdcpSdu.
uint32_t gtpTeid
S1-bearer GTP tunnel endpoint identifier, see 36.423 9.2.1.
Template for the implementation of the LteEnbCphySapUser as a member of an owner class of type C to w...
uint8_t Drbid2Lcid(uint8_t drbid)
LtePdcpSapProvider * srb1SapProvider
uint16_t rxSn
RX sequence number.
LteMacSapUser * GetLteMacSapUser()
void SendData(uint8_t bid, Ptr< Packet > p)
Send a data packet over the appropriate Data Radio Bearer.
uint8_t rrcTransactionIdentifier
std::set< uint8_t > m_handoverMeasIds
List of measurement identities which are intended for handover purpose.
#define NS_LOG_LOGIC(msg)
Use NS_LOG to output a message of level LOG_LOGIC.
enum ns3::LteRrcSap::SoundingRsUlConfigDedicated::@68 type
virtual RachConfig GetRachConfig()=0
RadioResourceConfigDedicated radioResourceConfigDedicated
void DoRecvUeContextRelease(EpcX2SapUser::UeContextReleaseParams params)
uint8_t m_lastAllocatedDrbid
uint8_t Bid2Lcid(uint8_t bid)
Parameters for [re]configuring the UE.
std::map< uint32_t, X2uTeidInfo > m_x2uTeidInfoMap
TracedCallback< uint64_t, uint16_t, uint16_t, LteRrcSap::MeasurementReport > m_recvMeasurementReportTrace
The RecvMeasurementReport trace source.
void SetRnti(uint16_t rnti)
Set the RNTI to the given value.
uint8_t numberOfRaPreambles
uint8_t m_rsrpFilterCoefficient
The RsrpFilterCoefficient attribute.
E-RABs to be setup item as it is used in the HANDOVER REQUEST message.
RadioResourceConfigDedicated sourceRadioResourceConfig
Part of the RRC protocol.
uint8_t DoAddUeMeasReportConfigForAnr(LteRrcSap::ReportConfigEutra reportConfig)
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 RemoveDataRadioBearerInfo(uint8_t drbid)
remove the LteDataRadioBearerInfo corresponding to a bearer being released
static TypeId GetTypeId(void)
void RecvSnStatusTransfer(EpcX2SapUser::SnStatusTransferParams params)
Take the necessary actions in response to the reception of an X2 SN STATUS TRANSFER message...
EpcX2SapProvider * m_x2SapProvider
Interface to send messages to neighbour eNodeB over the X2 interface.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Parameters of the RESOURCE STATUS UPDATE message.
Hold objects of type Ptr.
Ptr< Packet > pdcpSdu
the RRC PDU
virtual void SendHandoverRequestAck(HandoverRequestAckParams params)=0
LteRrcSap::RadioResourceConfigDedicated BuildRadioResourceConfigDedicated()
void SetLteRlcSapUser(LteRlcSapUser *s)
uint16_t targetPhysCellId
enum ns3::EpsBearer::Qci qci
State
The state of the UeManager at the eNB RRC.
EventId m_handoverLeavingTimeout
Time limit before a handover leaving timeout occurs.
Ptr< const AttributeChecker > MakeBooleanChecker(void)
enum ns3::LteRrcSap::ThresholdEutra::@70 choice
uint8_t lcGroup
logical channel group
uint8_t rrcTransactionIdentifier
void SetLteAnrSapProvider(LteAnrSapProvider *s)
set the ANR SAP this RRC should interact with
bool haveMobilityControlInfo
Parameters of the UE CONTEXT RELEASE message.
EpsBearer erabLevelQosParameters
Parameters of the HANDOVER REQUEST ACKNOWLEDGE message.
void RecvRrcConnectionSetupCompleted(LteRrcSap::RrcConnectionSetupCompleted msg)
Part of the RRC protocol. Implement the LteEnbRrcSapProvider::RecvRrcConnectionSetupCompleted interfa...
RadioResourceConfigDedicated radioResourceConfigDedicated
std::list< uint8_t > m_drbsToBeStarted
void DoReceivePdcpSdu(LtePdcpSapUser::ReceivePdcpSduParameters params)
bool haveMeasResultNeighCells
uint8_t filterCoefficientRSRQ
bool havePdschConfigDedicated
static const uint16_t g_srsCiLow[SRS_ENTRIES]
The lower bound (inclusive) of the SRS configuration indices (ISRS) which use the corresponding SRS p...
uint8_t logicalChannelIdentity
TracedCallback< uint64_t, uint16_t, uint16_t, uint16_t > m_handoverStartTrace
The HandoverStart trace source.
LtePdcpSapUser * srb1SapUser
bool havePhysicalConfigDedicated
std::vector< EpcX2Sap::ErabToBeSetupItem > GetErabList()
virtual void SetSystemInformationBlockType1(LteRrcSap::SystemInformationBlockType1 sib1)=0
virtual int8_t GetReferenceSignalPower()=0
void ScheduleRrcConnectionReconfiguration()
schedule an RRC Connection Reconfiguration procedure with the UE
These service primitives of this part of the X2 SAP are provided by the RRC entity and issued by the ...
LteAnrSapUser * GetLteAnrSapUser()
Get the ANR SAP offered by this RRC.
Ptr< const AttributeAccessor > MakeTimeAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
Parameters for [re]configuring the UE.
bool haveSoundingRsUlConfigDedicated
Time m_systemInformationPeriodicity
The SystemInformationPeriodicity attribute.
LteEnbRrcSapProvider * GetLteEnbRrcSapProvider()
static Time Now(void)
Return the current simulation virtual time.
std::vector< ErabToBeSetupItem > bearers
uint8_t m_defaultTransmissionMode
The DefaultTransmissionMode attribute.
void DoRecvResourceStatusUpdate(EpcX2SapUser::ResourceStatusUpdateParams params)
void SetLcId(uint8_t lcId)
Service Access Point (SAP) offered by the eNodeB RRC instance to the Frequency Reuse algorithm instan...
void DoRecvUeData(EpcX2SapUser::UeDataParams params)
virtual void TransmitPdcpSdu(TransmitPdcpSduParameters params)=0
Send a RRC PDU to the RDCP for transmission This method is to be called when upper RRC entity has a R...
RadioResourceConfigCommon radioResourceConfigCommon
uint64_t GetImsi(void) const
EnbRrcMemberLteEnbCmacSapUser(LteEnbRrc *rrc)
void PrepareHandover(uint16_t cellId)
Start the handover preparation and send the handover request.
CarrierBandwidthEutra carrierBandwidth
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...
uint8_t DoAddUeMeasReportConfigForHandover(LteRrcSap::ReportConfigEutra reportConfig)
uint16_t GetRnti(void) const
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. ...
void RecvRrcConnectionReestablishmentComplete(LteRrcSap::RrcConnectionReestablishmentComplete msg)
Part of the RRC protocol. Implement the LteEnbRrcSapProvider::RecvRrcConnectionReestablishmentComplet...
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
EpcEnbS1SapUser * m_s1SapUser
Interface to receive messages from core network over the S1 protocol.
std::set< uint16_t > m_ueSrsConfigurationIndexSet
void SetSrsPeriodicity(uint32_t p)
uint16_t rnti
C-RNTI identifying the UE.
virtual void DoDispose(void)
Destructor implementation.
Reference Signal Received Power.
TypeId GetRlcType(EpsBearer bearer)
bool m_configured
True if ConfigureCell() has been completed.
LogicalChannelConfig logicalChannelConfig
enum ns3::LteRrcSap::ReportConfigEutra::@74 triggerQuantity
The quantities used to evaluate the triggering condition for the event, see 3GPP TS 36...
uint64_t mbrUl
maximum bitrate in uplink
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...
RachConfigCommon rachConfigCommon
Ptr< const AttributeChecker > MakeEnumChecker(int v1, std::string n1, int v2, std::string n2, int v3, std::string n3, int v4, std::string n4, int v5, std::string n5, int v6, std::string n6, int v7, std::string n7, int v8, std::string n8, int v9, std::string n9, int v10, std::string n10, int v11, std::string n11, int v12, std::string n12, int v13, std::string n13, int v14, std::string n14, int v15, std::string n15, int v16, std::string n16, int v17, std::string n17, int v18, std::string n18, int v19, std::string n19, int v20, std::string n20, int v21, std::string n21, int v22, std::string n22)
Make an EnumChecker pre-configured with a set of allowed values by name.
#define NS_ABORT_IF(cond)
Abnormal program termination if a condition is true.
Instantiate subclasses of ns3::Object.
Ipv4 addresses are stored in host order in this class.
uint64_t gbrUl
guaranteed bitrate in uplink
uint8_t raResponseWindowSize
bool haveCarrierBandwidth
Service Access Point (SAP) offered by the PDCP entity to the RRC entity See 3GPP 36.323 Packet Data Convergence Protocol (PDCP) specification.
bool haveAntennaInfoDedicated
static const std::string & ToString(EpcUeNas::State s)
LteAnrSapUser * m_anrSapUser
Receive API calls from the ANR instance.
virtual void SetBandwidth(uint8_t ulBandwidth, uint8_t dlBandwidth)=0
Configure DL and UL bandwidth in Frequency Reuse Algorithm function is called during Cell configurati...
EventId m_connectionSetupTimeout
Time limit before a connection setup timeout occurs.
Template for the implementation of the LteEnbRrcSapProvider as a member of an owner class of type C t...
bool m_pendingRrcConnectionReconfiguration
std::vector< ErabNotAdmittedItem > notAdmittedBearers
Service Access Point (SAP) offered by the ANR instance to the eNodeB RRC instance.
void DoRrcConfigurationUpdateInd(LteEnbCmacSapUser::UeConfig params)
virtual void ConfigureMac(uint8_t ulBandwidth, uint8_t dlBandwidth)=0
void DoSetPdschConfigDedicated(uint16_t rnti, LteRrcSap::PdschConfigDedicated pa)
uint8_t DoAddUeMeasReportConfigForFfr(LteRrcSap::ReportConfigEutra reportConfig)
struct defining the RACH configuration of the MAC
void DoRecvHandoverPreparationFailure(EpcX2SapUser::HandoverPreparationFailureParams params)
#define NS_LOG_WARN(msg)
Use NS_LOG to output a message of level LOG_WARN.
Service Access Point (SAP) offered by the handover algorithm instance to the eNodeB RRC instance...
void StartDataRadioBearers()
Start the data radio bearers that have been previously recorded to be started using RecordDataRadioBe...
virtual AllocateNcRaPreambleReturnValue AllocateNcRaPreamble(uint16_t rnti)=0
Allocate a random access preamble for non-contention based random access (e.g., for handover)...
static const uint16_t g_srsPeriodicity[SRS_ENTRIES]
Sounding Reference Symbol (SRS) periodicity (TSRS) in milliseconds.
EpcEnbS1SapUser * GetS1SapUser()
uint8_t allowedMeasBandwidth
std::list< DrbToAddMod > drbToAddModList
void RecvRrcConnectionReestablishmentRequest(LteRrcSap::RrcConnectionReestablishmentRequest msg)
Part of the RRC protocol. Implement the LteEnbRrcSapProvider::RecvRrcConnectionReestablishmentRequest...
bool RemovePacketTag(Tag &tag)
Remove a packet tag.
LteEnbCmacSapProvider * m_cmacSapProvider
Interface to the eNodeB MAC instance.
LteRrcSap::PhysicalConfigDedicated m_physicalConfigDedicated
std::map< uint16_t, Ptr< UeManager > > m_ueMap
The UeMap attribute.
uint16_t sourceDlCarrierFreq
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG.
static const uint16_t g_srsCiHigh[SRS_ENTRIES]
The upper bound (inclusive) of the SRS configuration indices (ISRS) which use the corresponding SRS p...
Time Seconds(double value)
Construct a Time in the indicated unit.
LteFfrRrcSapUser * GetLteFfrRrcSapUser()
Get the FFR SAP offered by this RRC.
uint16_t criticalityDiagnostics
virtual Ptr< Packet > EncodeHandoverCommand(RrcConnectionReconfiguration msg)=0
void RecvRrcConnectionRequest(LteRrcSap::RrcConnectionRequest msg)
Part of the RRC protocol. Implement the LteEnbRrcSapProvider::RecvRrcConnectionRequest interface...
void Cancel(void)
This method is syntactic sugar for the ns3::Simulator::Cancel method.
Service Access Point (SAP) offered by the MAC to the RLC See Femto Forum MAC Scheduler Interface Spec...
std::map< uint8_t, Ptr< LteDataRadioBearerInfo > > m_drbMap
The DataRadioBearerMap attribute.
TracedCallback< uint64_t, uint16_t, uint16_t > m_connectionReconfigurationTrace
The ConnectionReconfiguration trace source.
uint8_t GetLogicalChannelPriority(EpsBearer bearer)
uint8_t lcid
the logical channel id corresponding to the sending RLC instance
bool valid
true if a valid RA config was allocated, false otherwise
enum ns3::LteRrcSap::ReportConfigEutra::@73 purpose
uint8_t GetNewRrcTransactionIdentifier()
Both the RSRP and RSRQ quantities are to be included in the measurement report.
MobilityControlInfo mobilityControlInfo
void DoRecvSnStatusTransfer(EpcX2SapUser::SnStatusTransferParams params)
LteEnbCphySapUser * GetLteEnbCphySapUser()
void ConnectionRejectedTimeout(uint16_t rnti)
Method triggered a while after sending RRC Connection Rejected.
Ptr< const AttributeAccessor > MakeObjectMapAccessor(U T::*memberVariable)
MakeAccessorHelper implementation for ObjectVector.
uint32_t GetSrsPeriodicity() const
Ptr< LteDataRadioBearerInfo > GetDataRadioBearerInfo(uint8_t drbid)
Template for the implementation of the LteAnrSapUser as a member of an owner class of type C to which...
AntennaInfoDedicated antennaInfo
Time m_handoverJoiningTimeoutDuration
The HandoverJoiningTimeoutDuration attribute.
LteRlcSapProvider * GetLteRlcSapProvider()
uint16_t m_lastAllocatedConfigurationIndex
virtual void SendSystemInformation(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 the UE, e.g., after handover or termination of the RRC connection
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 ...
LTE RLC Acknowledged Mode (AM), see 3GPP TS 36.322.
LteHandoverManagementSapProvider * m_handoverManagementSapProvider
Interface to the handover algorithm instance.
A base class which provides memory management and object aggregation.
PdschConfigCommon pdschConfigCommon
std::set< uint8_t > m_anrMeasIds
List of measurement identities which are intended for ANR purpose.
Container for a set of ns3::Object pointers.
void ConfigureCell(uint8_t ulBandwidth, uint8_t dlBandwidth, uint16_t ulEarfcn, uint16_t dlEarfcn, uint16_t cellId)
Configure cell-specific parameters.
void DoRecvRrcConnectionReestablishmentRequest(uint16_t rnti, LteRrcSap::RrcConnectionReestablishmentRequest msg)
Part of the RRC protocol. Forwarding LteEnbRrcSapProvider::RecvRrcConnectionReestablishmentRequest in...
void SetPdschConfigDedicated(LteRrcSap::PdschConfigDedicated pdschConfigDedicated)
Configure PdschConfigDedicated (i.e.
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 UE PHY to the UE RRC for control purposes.
void RemoveUe(uint16_t rnti)
remove a UE from the cell
State m_state
The current UeManager state.
uint64_t gbrDl
guaranteed bitrate in downlink
uint8_t lcid
the logical channel id corresponding to the sending RLC instance
void DoRecvMeasurementReport(uint16_t rnti, LteRrcSap::MeasurementReport msg)
Part of the RRC protocol. Forwarding LteEnbRrcSapProvider::RecvMeasurementReport interface to UeManag...
uint8_t raPreambleId
random access preamble id
void CmacUeConfigUpdateInd(LteEnbCmacSapUser::UeConfig cmacParams)
Parameters of the UE DATA primitive.
enum LteEpsBearerToRlcMapping_t m_epsBearerToRlcMapping
The EpsBearerToRlcMapping attribute.
Ptr< T > GetObject(void) const
Get a pointer to the requested aggregated Object.
Ptr< const AttributeAccessor > MakeUintegerAccessor(T1 a1)
Create an AttributeAccessor for a class data member, or a lone class get functor or set method...
std::vector< ErabsSubjectToStatusTransferItem > erabsSubjectToStatusTransferList
Event A1: Serving becomes better than absolute threshold.
virtual void SetCellId(uint16_t cellId)=0
SetCellId.
void DoSendLoadInformation(EpcX2Sap::LoadInformationParams params)
void RecvMeasurementReport(LteRrcSap::MeasurementReport msg)
Part of the RRC protocol. Implement the LteEnbRrcSapProvider::RecvMeasurementReport interface...
This abstract base class defines the API to interact with the Radio Link Control (LTE_RLC) in LTE...
a unique identifier for an interface.
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)...
std::list< ReportConfigToAddMod > reportConfigToAddModList
TypeId SetParent(TypeId tid)
std::list< uint8_t > drbToReleaseList
uint8_t Bid2Drbid(uint8_t bid)
static TypeId GetTypeId(void)
void SetS1SapProvider(EpcEnbS1SapProvider *s)
Set the S1 SAP Provider.
uint8_t Lcid2Drbid(uint8_t lcid)
virtual void RemoveUe(uint16_t rnti)=0
Remove an UE from the the cell.
EventId m_connectionRequestTimeout
Time limit before a connection request timeout occurs.
LteEnbCphySapUser * m_cphySapUser
Receive API calls from the eNodeB PHY instance.
LteAnrSapProvider * m_anrSapProvider
Interface to the ANR instance.
Service Access Point (SAP) offered by the eNodeB RRC instance to the handover algorithm instance...
void DoDataRadioBearerSetupRequest(EpcEnbS1SapUser::DataRadioBearerSetupRequestParameters params)
void DoRecvLoadInformation(EpcX2SapUser::LoadInformationParams params)
RaSupervisionInfo raSupervisionInfo
void SetLteMacSapProvider(LteMacSapProvider *s)
void RecvHandoverRequestAck(EpcX2SapUser::HandoverRequestAckParams params)
take the necessary actions in response to the reception of an X2 HANDOVER REQUEST ACK message ...
bool SendData(Ptr< Packet > p)
Enqueue an IP data packet on the proper bearer for downlink transmission.
EventId m_handoverJoiningTimeout
Time limit before a handover joining timeout occurs.
bool isGbr
true if the bearer is GBR, false if the bearer is NON-GBR
void CompleteSetupUe(LteEnbRrcSapProvider::CompleteSetupUeParameters params)
Part of the RRC protocol. Implement the LteEnbRrcSapProvider::CompleteSetupUe interface.
uint16_t m_cellId
Cell identifier. Must be unique across the simulation.
virtual void DoInitialize()
Initialize() implementation.
MasterInformationBlock sourceMasterInformationBlock
LteRrcSap::MeasConfig m_ueMeasConfig
List of measurement configuration which are active in every UE attached to this eNodeB instance...
int8_t qQualMin
INTEGER (-34..-3), actual value = IE value [dB].
void DoRecvHandoverRequestAck(EpcX2SapUser::HandoverRequestAckParams params)
bool haveCellForWhichToReportCGI
ThresholdEutra threshold2
Threshold for event A5.
void DoRecvHandoverRequest(EpcX2SapUser::HandoverRequestParams params)