A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ns3::LteUeRrc Class Reference

#include <lte-ue-rrc.h>

+ Inheritance diagram for ns3::LteUeRrc:
+ Collaboration diagram for ns3::LteUeRrc:

Classes

struct  MeasValues
 Represents a measurement result from a certain cell. More...
 
struct  PendingTrigger_t
 Represents a single triggered event from a measurement identity which reporting criteria have been fulfilled, but delayed by time-to-trigger. More...
 
struct  VarMeasConfig
 Includes the accumulated configuration of the measurements to be performed by the UE. More...
 
struct  VarMeasReport
 Represents a single measurement reporting entry., which includes information about a measurement for which the triggering conditions have been met. More...
 

Public Types

enum  State {
  IDLE_START = 0, IDLE_CELL_SEARCH, IDLE_WAIT_MIB_SIB1, IDLE_WAIT_MIB,
  IDLE_WAIT_SIB1, IDLE_CAMPED_NORMALLY, IDLE_WAIT_SIB2, IDLE_RANDOM_ACCESS,
  IDLE_CONNECTING, CONNECTED_NORMALLY, CONNECTED_HANDOVER, CONNECTED_PHY_PROBLEM,
  CONNECTED_REESTABLISHING, NUM_STATES
}
 The states of the UE RRC entity. More...
 

Public Member Functions

 LteUeRrc ()
 create an RRC instance for use within an ue More...
 
virtual ~LteUeRrc ()
 Destructor. More...
 
LteAsSapProviderGetAsSapProvider ()
 
uint16_t GetCellId () const
 
uint8_t GetDlBandwidth () const
 
uint16_t GetDlEarfcn () const
 
uint64_t GetImsi (void) const
 
LteUeCmacSapUserGetLteUeCmacSapUser ()
 
LteUeCphySapUserGetLteUeCphySapUser ()
 
LteUeRrcSapProviderGetLteUeRrcSapProvider ()
 
uint16_t GetRnti () const
 
State GetState () const
 
uint8_t GetUlBandwidth () const
 
uint16_t GetUlEarfcn () const
 
void SetAsSapUser (LteAsSapUser *s)
 Set the AS SAP user to interact with the NAS entity. More...
 
void SetImsi (uint64_t imsi)
 
void SetLteMacSapProvider (LteMacSapProvider *s)
 set the MAC SAP provider. More...
 
void SetLteUeCmacSapProvider (LteUeCmacSapProvider *s)
 set the CMAC SAP this RRC should interact with More...
 
void SetLteUeCphySapProvider (LteUeCphySapProvider *s)
 set the CPHY SAP this RRC should use to interact with the PHY More...
 
void SetLteUeRrcSapUser (LteUeRrcSapUser *s)
 set the RRC SAP this RRC should interact with More...
 
void SetUseRlcSm (bool val)
 
- Public Member Functions inherited from ns3::Object
 Object ()
 
virtual ~Object ()
 
void AggregateObject (Ptr< Object > other)
 
void Dispose (void)
 Run the DoDispose methods of this object and all the objects aggregated to it. More...
 
AggregateIterator GetAggregateIterator (void) const
 
virtual TypeId GetInstanceTypeId (void) const
 
template<typename T >
Ptr< T > GetObject (void) const
 
template<typename T >
Ptr< T > GetObject (TypeId tid) const
 
void Initialize (void)
 This method calls the virtual DoInitialize method on all the objects aggregated to this object. More...
 
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 SimpleRefCount ()
 Constructor. More...
 
 SimpleRefCount (const SimpleRefCount &o)
 Copy constructor. More...
 
uint32_t GetReferenceCount (void) const
 Get the reference count of the object. More...
 
SimpleRefCountoperator= (const SimpleRefCount &o)
 Assignment. More...
 
void Ref (void) const
 Increment the reference count. More...
 
void Unref (void) const
 Decrement the reference count. More...
 
- Public Member Functions inherited from ns3::ObjectBase
virtual ~ObjectBase ()
 Virtual destructor. More...
 
void GetAttribute (std::string name, AttributeValue &value) const
 
bool GetAttributeFailSafe (std::string name, AttributeValue &attribute) const
 
void SetAttribute (std::string name, const AttributeValue &value)
 
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
 
bool TraceConnect (std::string name, std::string context, const CallbackBase &cb)
 
bool TraceConnectWithoutContext (std::string name, const CallbackBase &cb)
 
bool TraceDisconnect (std::string name, std::string context, const CallbackBase &cb)
 
bool TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb)
 

Static Public Member Functions

static TypeId GetTypeId (void)
 
- Static Public Member Functions inherited from ns3::Object
static TypeId GetTypeId (void)
 Register this type. More...
 
- Static Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
static void Cleanup (void)
 Noop. More...
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId (void)
 Get the type ID. More...
 

Private Types

typedef std::list< uint16_t > ConcernedCells_t
 List of cell IDs which are responsible for a certain trigger. More...
 

Private Member Functions

void ApplyMeasConfig (LteRrcSap::MeasConfig mc)
 Update the current measurement configuration m_varMeasConfig. More...
 
void ApplyRadioResourceConfigDedicated (LteRrcSap::RadioResourceConfigDedicated rrcd)
 
uint8_t Bid2Drbid (uint8_t bid)
 
void CancelEnteringTrigger (uint8_t measId)
 Clear all the waiting triggers in m_enteringTriggerQueue which are associated with the given measurement identity. More...
 
void CancelEnteringTrigger (uint8_t measId, uint16_t cellId)
 Remove a specific cell from the waiting triggers in m_enteringTriggerQueue which belong to the given measurement identity. More...
 
void CancelLeavingTrigger (uint8_t measId)
 Clear all the waiting triggers in m_leavingTriggerQueue which are associated with the given measurement identity. More...
 
void CancelLeavingTrigger (uint8_t measId, uint16_t cellId)
 Remove a specific cell from the waiting triggers in m_leavingTriggerQueue which belong to the given measurement identity. More...
 
void DisposeOldSrb1 ()
 
void DoCompleteSetup (LteUeRrcSapProvider::CompleteSetupParameters params)
 Part of the RRC protocol. Implement the LteUeRrcSapProvider::CompleteSetup interface. More...
 
void DoConnect ()
 
void DoDisconnect ()
 
virtual void DoDispose (void)
 This method is called by Object::Dispose or by the object's destructor, whichever comes first. More...
 
void DoForceCampedOnEnb (uint16_t cellId, uint16_t dlEarfcn)
 
virtual void DoInitialize (void)
 This method is called only once by Object::Initialize. More...
 
void DoNotifyRandomAccessFailed ()
 
void DoNotifyRandomAccessSuccessful ()
 
void DoReceivePdcpSdu (LtePdcpSapUser::ReceivePdcpSduParameters params)
 
void DoRecvMasterInformationBlock (uint16_t cellId, LteRrcSap::MasterInformationBlock msg)
 
void DoRecvRrcConnectionReconfiguration (LteRrcSap::RrcConnectionReconfiguration msg)
 Part of the RRC protocol. Implement the LteUeRrcSapProvider::RecvRrcConnectionReconfiguration interface. More...
 
void DoRecvRrcConnectionReestablishment (LteRrcSap::RrcConnectionReestablishment msg)
 Part of the RRC protocol. Implement the LteUeRrcSapProvider::RecvRrcConnectionReestablishment interface. More...
 
void DoRecvRrcConnectionReestablishmentReject (LteRrcSap::RrcConnectionReestablishmentReject msg)
 Part of the RRC protocol. Implement the LteUeRrcSapProvider::RecvRrcConnectionReestablishmentReject interface. More...
 
void DoRecvRrcConnectionReject (LteRrcSap::RrcConnectionReject msg)
 Part of the RRC protocol. Implement the LteUeRrcSapProvider::RecvRrcConnectionReject interface. More...
 
void DoRecvRrcConnectionRelease (LteRrcSap::RrcConnectionRelease msg)
 Part of the RRC protocol. Implement the LteUeRrcSapProvider::RecvRrcConnectionRelease interface. More...
 
void DoRecvRrcConnectionSetup (LteRrcSap::RrcConnectionSetup msg)
 Part of the RRC protocol. Implement the LteUeRrcSapProvider::RecvRrcConnectionSetup interface. More...
 
void DoRecvSystemInformation (LteRrcSap::SystemInformation msg)
 Part of the RRC protocol. Implement the LteUeRrcSapProvider::RecvSystemInformation interface. More...
 
void DoRecvSystemInformationBlockType1 (uint16_t cellId, LteRrcSap::SystemInformationBlockType1 msg)
 
void DoReportUeMeasurements (LteUeCphySapUser::UeMeasurementsParameters params)
 
void DoSendData (Ptr< Packet > packet, uint8_t bid)
 
void DoSetCsgWhiteList (uint32_t csgId)
 
void DoSetTemporaryCellRnti (uint16_t rnti)
 
void DoStartCellSelection (uint16_t dlEarfcn)
 
void EvaluateCellForSelection ()
 Performs cell selection evaluation to the current serving cell. More...
 
void LeaveConnectedMode ()
 
void MeasurementReportTriggering (uint8_t measId)
 Evaluate the reporting criteria of a measurement identity and invoke some reporting actions based on the result. More...
 
void SaveUeMeasurements (uint16_t cellId, double rsrp, double rsrq, bool useLayer3Filtering)
 Keep the given measurement result as the latest measurement figures, to be utilised by UE RRC functions. More...
 
void SendMeasurementReport (uint8_t measId)
 Produce a proper measurement report from the given measurement identity's reporting entry in m_varMeasReportList and then submit it to the serving eNodeB. More...
 
void StartConnection ()
 
void SwitchToState (State s)
 
void SynchronizeToStrongestCell ()
 Go through the list of measurement results, choose the one with the strongest RSRP, and tell PHY to synchronize to it. More...
 
void VarMeasReportListAdd (uint8_t measId, ConcernedCells_t enteringCells)
 Compose a new reporting entry of the given measurement identity, insert it into m_varMeasReportList, and set it up for submission to eNodeB. More...
 
void VarMeasReportListClear (uint8_t measId)
 Remove the reporting entry of the given measurement identity from m_varMeasReportList. More...
 
void VarMeasReportListErase (uint8_t measId, ConcernedCells_t leavingCells, bool reportOnLeave)
 Remove some cells from an existing reporting entry in m_varMeasReportList. More...
 

Private Attributes

std::set< uint16_t > m_acceptableCell
 List of cell ID of acceptable cells for cell selection that have been detected. More...
 
LteAsSapProviderm_asSapProvider
 
LteAsSapUserm_asSapUser
 
std::map< uint8_t, uint8_t > m_bid2DrbidMap
 
uint16_t m_cellId
 
LteUeCmacSapProviderm_cmacSapProvider
 
LteUeCmacSapUserm_cmacSapUser
 
TracedCallback< uint64_t,
uint16_t, uint16_t > 
m_connectionEstablishedTrace
 
bool m_connectionPending
 true if a connection request by upper layers is pending More...
 
TracedCallback< uint64_t,
uint16_t, uint16_t > 
m_connectionReconfigurationTrace
 
LteUeCphySapProviderm_cphySapProvider
 
LteUeCphySapUserm_cphySapUser
 
uint32_t m_csgWhiteList
 List of CSG ID which this UE entity has access to. More...
 
uint8_t m_dlBandwidth
 downlink bandwidth in RBs More...
 
uint16_t m_dlEarfcn
 downlink carrier frequency More...
 
std::map< uint8_t, Ptr
< LteDataRadioBearerInfo > > 
m_drbMap
 
LtePdcpSapUserm_drbPdcpSapUser
 
std::map< uint8_t, std::list
< PendingTrigger_t > > 
m_enteringTriggerQueue
 List of triggers that were raised because entering condition have been true, but are still delayed from reporting it by time-to-trigger. More...
 
TracedCallback< uint64_t,
uint16_t, uint16_t > 
m_handoverEndErrorTrace
 
TracedCallback< uint64_t,
uint16_t, uint16_t > 
m_handoverEndOkTrace
 
TracedCallback< uint64_t,
uint16_t, uint16_t, uint16_t > 
m_handoverStartTrace
 
bool m_hasReceivedMib
 true if MIB was received for the current cell More...
 
bool m_hasReceivedSib1
 true if SIB1 was received for the current cell More...
 
bool m_hasReceivedSib2
 true if SIB2 was received for the current cell More...
 
uint64_t m_imsi
 
TracedCallback< uint64_t,
uint16_t > 
m_initialCellSelectionEndErrorTrace
 
TracedCallback< uint64_t,
uint16_t > 
m_initialCellSelectionEndOkTrace
 
uint8_t m_lastRrcTransactionIdentifier
 
LteRrcSap::SystemInformationBlockType1 m_lastSib1
 Stored content of the last SIB1 received. More...
 
std::map< uint8_t, std::list
< PendingTrigger_t > > 
m_leavingTriggerQueue
 List of triggers that were raised because leaving condition have been true, but are still delayed from stopping the reporting by time-to-trigger. More...
 
LteMacSapProviderm_macSapProvider
 
TracedCallback< uint64_t,
uint16_t, uint16_t, uint16_t > 
m_mibReceivedTrace
 
TracedCallback< uint64_t,
uint16_t, uint16_t > 
m_randomAccessErrorTrace
 
TracedCallback< uint64_t,
uint16_t, uint16_t > 
m_randomAccessSuccessfulTrace
 
uint16_t m_rnti
 
LteUeRrcSapProviderm_rrcSapProvider
 
LteUeRrcSapUserm_rrcSapUser
 
TracedCallback< uint64_t,
uint16_t, uint16_t, uint16_t > 
m_sib1ReceivedTrace
 
TracedCallback< uint64_t,
uint16_t, uint16_t > 
m_sib2ReceivedTrace
 
Ptr< LteSignalingRadioBearerInfom_srb0
 
Ptr< LteSignalingRadioBearerInfom_srb1
 
Ptr< LteSignalingRadioBearerInfom_srb1Old
 
State m_state
 
TracedCallback< uint64_t,
uint16_t, uint16_t, State,
State
m_stateTransitionTrace
 
std::map< uint16_t, MeasValuesm_storedMeasValues
 Internal storage of the latest measurement results from all detected detected cells, indexed by the cell ID where the measurement was taken from. More...
 
uint8_t m_ulBandwidth
 uplink bandwidth in RBs More...
 
uint16_t m_ulEarfcn
 uplink carrier frequency More...
 
bool m_useRlcSm
 
VarMeasConfig m_varMeasConfig
 Includes the accumulated configuration of the measurements to be performed by the UE. More...
 
std::map< uint8_t, VarMeasReportm_varMeasReportList
 The list of active reporting entries, indexed by the measurement identity which triggered the reporting. More...
 

Friends

class LtePdcpSpecificLtePdcpSapUser< LteUeRrc >
 
class MemberLteAsSapProvider< LteUeRrc >
 
class MemberLteUeCphySapUser< LteUeRrc >
 
class MemberLteUeRrcSapProvider< LteUeRrc >
 
class UeMemberLteUeCmacSapUser
 
class UeRrcMemberLteEnbCmacSapUser
 

Additional Inherited Members

- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
 
virtual void NotifyNewAggregate (void)
 This method is invoked whenever two sets of objects are aggregated together. More...
 
- Protected Member Functions inherited from ns3::ObjectBase
void ConstructSelf (const AttributeConstructionList &attributes)
 
virtual void NotifyConstructionCompleted (void)
 This method is invoked once all member attributes have been initialized. More...
 

Detailed Description

Config Paths

ns3::LteUeRrc is accessible through the following paths with Config::Set and Config::Connect:

  • /NodeList/[i]/DeviceList/[i]/$ns3::LteNetDevice/$ns3::LteUeNetDevice/LteUeRrc
  • /NodeList/[i]/DeviceList/[i]/$ns3::LteUeNetDevice/LteUeRrc

Attributes

  • DataRadioBearerMap: List of UE RadioBearerInfo for Data Radio Bearers by LCID.
  • Srb0: SignalingRadioBearerInfo for SRB0
    • Set with class: ns3::PointerValue
    • Underlying type: ns3::Ptr< ns3::LteSignalingRadioBearerInfo >
    • Initial value: 0
    • Flags: construct write read
  • Srb1: SignalingRadioBearerInfo for SRB1
    • Set with class: ns3::PointerValue
    • Underlying type: ns3::Ptr< ns3::LteSignalingRadioBearerInfo >
    • Initial value: 0
    • Flags: construct write read
  • CellId: Serving cell identifier
  • C-RNTI: Cell Radio Network Temporary Identifier

TraceSources

  • MibReceived: trace fired upon reception of Master Information Block
  • Sib1Received: trace fired upon reception of System Information Block Type 1
  • Sib2Received: trace fired upon reception of System Information Block Type 2
  • StateTransition: trace fired upon every UE RRC state transition
  • InitialCellSelectionEndOk: trace fired upon successful initial cell selection procedure
  • InitialCellSelectionEndError: trace fired upon failed initial cell selection procedure
  • RandomAccessSuccessful: trace fired upon successful completion of the random access procedure
  • RandomAccessError: trace fired upon failure of the random access procedure
  • ConnectionEstablished: trace fired upon successful RRC connection establishment
  • ConnectionReconfiguration: trace fired upon RRC connection reconfiguration
  • HandoverStart: trace fired upon start of a handover procedure
  • HandoverEndOk: trace fired upon successful termination of a handover procedure
  • HandoverEndError: trace fired upon failure of a handover procedure

Definition at line 70 of file lte-ue-rrc.h.

Member Typedef Documentation

typedef std::list<uint16_t> ns3::LteUeRrc::ConcernedCells_t
private

List of cell IDs which are responsible for a certain trigger.

Definition at line 604 of file lte-ue-rrc.h.

Member Enumeration Documentation

The states of the UE RRC entity.

Enumerator
IDLE_START 
IDLE_CELL_SEARCH 
IDLE_WAIT_MIB_SIB1 
IDLE_WAIT_MIB 
IDLE_WAIT_SIB1 
IDLE_CAMPED_NORMALLY 
IDLE_WAIT_SIB2 
IDLE_RANDOM_ACCESS 
IDLE_CONNECTING 
CONNECTED_NORMALLY 
CONNECTED_HANDOVER 
CONNECTED_PHY_PROBLEM 
CONNECTED_REESTABLISHING 
NUM_STATES 

Definition at line 86 of file lte-ue-rrc.h.

Constructor & Destructor Documentation

ns3::LteUeRrc::LteUeRrc ( )

create an RRC instance for use within an ue

Definition at line 122 of file lte-ue-rrc.cc.

References m_asSapProvider, m_cmacSapUser, m_cphySapUser, m_drbPdcpSapUser, m_rrcSapProvider, NS_LOG_FUNCTION, and UeMemberLteUeCmacSapUser.

ns3::LteUeRrc::~LteUeRrc ( )
virtual

Destructor.

Definition at line 148 of file lte-ue-rrc.cc.

References NS_LOG_FUNCTION.

Member Function Documentation

void ns3::LteUeRrc::ApplyMeasConfig ( LteRrcSap::MeasConfig  mc)
private

Update the current measurement configuration m_varMeasConfig.

Parameters
mcmeasurements to be performed by the UE

Implements Section 5.5.2 "Measurement configuration" of 3GPP TS 36.331. The supported subfunctions are:

  • Measurement object removal
  • Measurement object addition/ modification
  • Reporting configuration removal
  • Reporting configuration addition/ modification
  • Quantity configuration
  • Measurement identity removal
  • Measurement identity addition/ modification

The subfunctions that will be invoked are determined by the content of the given measurement configuration.

Note the existence of some chain reaction behaviours:

  • Removal of measurement object or reporting configuration also removes any impacted measurement identities.
  • Removal of measurement identity also removes any associated reporting entry from m_varMeasReportList.
  • Modification to measurement object or reporting configuration also removes any reporting entries of the impacted measurement identities from m_varMeasReportList.
  • Modification to quantity configuration also removes all existing reporting entries from m_varMeasReportList, regardless of measurement identity.

Some unsupported features:

  • List of neighbouring cells
  • List of black cells
  • CGI reporting
  • Periodical reporting configuration
  • Measurement gaps
  • s-Measure
  • Speed-dependent scaling
Warning
There is a possibility that the input argument (of type LteRrcSap::MeasConfig) may contain information in fields related to the unsupported features. In such case, the function will raise an error.

The measurement configuration given as an argument is typically provided by the serving eNodeB. It is transmitted through the RRC protocol when the UE joins the cell, e.g., by connection establishment or by incoming handover. The information inside the argument can be configured from the eNodeB side, which would then equally apply to all other UEs attached to the same eNodeB. See the LTE module's User Documentation for more information on configuring this.

See also
LteRrcSap::MeasConfig, LteUeRrc::m_varMeasReportList

Definition at line 1259 of file lte-ue-rrc.cc.

References ns3::LteUeRrc::VarMeasConfig::aRsrp, ns3::LteUeRrc::VarMeasConfig::aRsrq, ns3::LteRrcSap::ReportConfigEutra::EVENT, ns3::LteRrcSap::QuantityConfig::filterCoefficientRSRP, ns3::LteRrcSap::QuantityConfig::filterCoefficientRSRQ, ns3::LteRrcSap::MeasConfig::haveMeasGapConfig, ns3::LteRrcSap::MeasConfig::haveQuantityConfig, ns3::LteRrcSap::MeasConfig::haveSmeasure, ns3::LteRrcSap::MeasConfig::haveSpeedStatePars, m_enteringTriggerQueue, m_leavingTriggerQueue, m_varMeasConfig, m_varMeasReportList, ns3::LteUeRrc::VarMeasConfig::measIdList, ns3::LteRrcSap::MeasConfig::measIdToAddModList, ns3::LteRrcSap::MeasConfig::measIdToRemoveList, ns3::LteUeRrc::VarMeasConfig::measObjectList, ns3::LteRrcSap::MeasConfig::measObjectToAddModList, ns3::LteRrcSap::MeasConfig::measObjectToRemoveList, NS_ASSERT, NS_ASSERT_MSG, NS_FATAL_ERROR, NS_LOG_FUNCTION, NS_LOG_LOGIC, ns3::LteRrcSap::ReportConfigEutra::PERIODICAL, ns3::LteRrcSap::MeasConfig::quantityConfig, ns3::LteUeRrc::VarMeasConfig::quantityConfig, ns3::LteUeRrc::VarMeasConfig::reportConfigList, ns3::LteRrcSap::MeasConfig::reportConfigToAddModList, ns3::LteRrcSap::MeasConfig::reportConfigToRemoveList, s, and VarMeasReportListClear().

Referenced by DoRecvRrcConnectionReconfiguration().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::LteUeRrc::ApplyRadioResourceConfigDedicated ( LteRrcSap::RadioResourceConfigDedicated  rrcd)
private
Todo:
currently not implemented. Would need to modify drbInfo, and then propagate changes to the MAC

Definition at line 1085 of file lte-ue-rrc.cc.

References ns3::LteUeCmacSapProvider::AddLc(), ns3::LteRrcSap::RlcConfig::AM, ns3::LteRrcSap::PhysicalConfigDedicated::antennaInfo, ns3::LteUeCmacSapProvider::LogicalChannelConfig::bucketSizeDurationMs, CONNECTED_HANDOVER, ns3::ObjectFactory::Create(), ns3::LteRrcSap::RadioResourceConfigDedicated::drbToAddModList, ns3::LteRrcSap::RadioResourceConfigDedicated::drbToReleaseList, ns3::Object::GetObject(), ns3::LteRlcUm::GetTypeId(), ns3::LteRlcAm::GetTypeId(), ns3::LteRlcSm::GetTypeId(), ns3::LteRrcSap::PhysicalConfigDedicated::haveAntennaInfoDedicated, ns3::LteRrcSap::PhysicalConfigDedicated::haveSoundingRsUlConfigDedicated, IDLE_CONNECTING, ns3::LteUeCmacSapProvider::LogicalChannelConfig::logicalChannelGroup, m_bid2DrbidMap, m_cmacSapProvider, m_cphySapProvider, m_drbMap, m_drbPdcpSapUser, m_imsi, m_macSapProvider, m_rnti, m_rrcSapUser, m_srb0, m_srb1, m_state, m_useRlcSm, NS_ASSERT_MSG, NS_FATAL_ERROR, NS_LOG_FUNCTION, NS_LOG_INFO, ns3::LteRrcSap::RadioResourceConfigDedicated::physicalConfigDedicated, ns3::LteUeCmacSapProvider::LogicalChannelConfig::prioritizedBitRateKbps, ns3::LteUeCmacSapProvider::LogicalChannelConfig::priority, ns3::LteUeCphySapProvider::SetSrsConfigurationIndex(), ns3::LteUeCphySapProvider::SetTransmissionMode(), ns3::ObjectFactory::SetTypeId(), ns3::LteUeRrcSapUser::Setup(), ns3::LteRrcSap::PhysicalConfigDedicated::soundingRsUlConfigDedicated, ns3::LteUeRrcSapUser::SetupParameters::srb0SapProvider, ns3::LteRrcSap::RadioResourceConfigDedicated::srbToAddModList, ns3::LteRrcSap::SoundingRsUlConfigDedicated::srsConfigIndex, ns3::ToString(), ns3::LteRrcSap::AntennaInfoDedicated::transmissionMode, and ns3::LteRrcSap::RlcConfig::UM_BI_DIRECTIONAL.

Referenced by DoRecvRrcConnectionReconfiguration(), and DoRecvRrcConnectionSetup().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

uint8_t ns3::LteUeRrc::Bid2Drbid ( uint8_t  bid)
private

Definition at line 2739 of file lte-ue-rrc.cc.

References m_bid2DrbidMap, and NS_ASSERT_MSG.

Referenced by DoSendData().

+ Here is the caller graph for this function:

void ns3::LteUeRrc::CancelEnteringTrigger ( uint8_t  measId)
private

Clear all the waiting triggers in m_enteringTriggerQueue which are associated with the given measurement identity.

Parameters
measIdthe measurement identity to be processed, must already exists in m_enteringTriggerQueue, otherwise an error would be raised
Note
The function may conclude that there is nothing to be removed. In this case, the function will simply ignore quietly.

This function is used when the entering condition of the measurement identity becomes no longer true. Therefore all the waiting triggers for this measurement identity in m_enteringTriggerQueue have become invalid and must be canceled.

See also
LteUeRrc::m_enteringTriggerQueue

Definition at line 2275 of file lte-ue-rrc.cc.

References ns3::Simulator::Cancel(), ns3::Simulator::GetDelayLeft(), ns3::Time::GetSeconds(), m_enteringTriggerQueue, NS_ASSERT, NS_LOG_FUNCTION, and NS_LOG_LOGIC.

Referenced by MeasurementReportTriggering(), VarMeasReportListAdd(), and VarMeasReportListClear().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::LteUeRrc::CancelEnteringTrigger ( uint8_t  measId,
uint16_t  cellId 
)
private

Remove a specific cell from the waiting triggers in m_enteringTriggerQueue which belong to the given measurement identity.

Parameters
measIdthe measurement identity to be processed, must already exists in m_enteringTriggerQueue, otherwise an error would be raised
cellIdthe cell ID to be removed from the waiting triggers
Note
The function may conclude that there is nothing to be removed. In this case, the function will simply ignore quietly.

This function is used when a specific neighbour cell no longer fulfills the entering condition of the measurement identity. Thus the cell must be removed from all the waiting triggers for this measurement identity in m_enteringTriggerQueue.

See also
LteUeRrc::m_enteringTriggerQueue

Definition at line 2299 of file lte-ue-rrc.cc.

References ns3::Simulator::Cancel(), ns3::Simulator::GetDelayLeft(), ns3::Time::GetSeconds(), m_enteringTriggerQueue, NS_ASSERT, NS_LOG_FUNCTION, and NS_LOG_LOGIC.

+ Here is the call graph for this function:

void ns3::LteUeRrc::CancelLeavingTrigger ( uint8_t  measId)
private

Clear all the waiting triggers in m_leavingTriggerQueue which are associated with the given measurement identity.

Parameters
measIdthe measurement identity to be processed, must already exists in m_leavingTriggerQueue, otherwise an error would be raised
Note
The function may conclude that there is nothing to be removed. In this case, the function will simply ignore quietly.

This function is used when the leaving condition of the measurement identity becomes no longer true. Therefore all the waiting triggers for this measurement identity in m_leavingTriggerQueue have become invalid and must be canceled.

See also
LteUeRrc::m_leavingTriggerQueue

Definition at line 2337 of file lte-ue-rrc.cc.

References ns3::Simulator::Cancel(), ns3::Simulator::GetDelayLeft(), ns3::Time::GetSeconds(), m_leavingTriggerQueue, NS_ASSERT, NS_LOG_FUNCTION, and NS_LOG_LOGIC.

Referenced by MeasurementReportTriggering(), VarMeasReportListClear(), and VarMeasReportListErase().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::LteUeRrc::CancelLeavingTrigger ( uint8_t  measId,
uint16_t  cellId 
)
private

Remove a specific cell from the waiting triggers in m_leavingTriggerQueue which belong to the given measurement identity.

Parameters
measIdthe measurement identity to be processed, must already exists in m_leavingTriggerQueue, otherwise an error would be raised
cellIdthe cell ID to be removed from the waiting triggers
Note
The function may conclude that there is nothing to be removed. In this case, the function will simply ignore quietly.

This function is used when a specific neighbour cell no longer fulfills the leaving condition of the measurement identity. Thus the cell must be removed from all the waiting triggers for this measurement identity in m_leavingTriggerQueue.

See also
LteUeRrc::m_leavingTriggerQueue

Definition at line 2361 of file lte-ue-rrc.cc.

References ns3::Simulator::Cancel(), ns3::Simulator::GetDelayLeft(), ns3::Time::GetSeconds(), m_leavingTriggerQueue, NS_ASSERT, NS_LOG_FUNCTION, and NS_LOG_LOGIC.

+ Here is the call graph for this function:

void ns3::LteUeRrc::DisposeOldSrb1 ( )
private

Definition at line 2732 of file lte-ue-rrc.cc.

References m_srb1Old, and NS_LOG_FUNCTION.

Referenced by DoRecvRrcConnectionReconfiguration().

+ Here is the caller graph for this function:

void ns3::LteUeRrc::DoDispose ( void  )
privatevirtual

This method is called by Object::Dispose or by the object's destructor, whichever comes first.

Subclasses are expected to implement their real destruction code in an overriden version of this method and chain up to their parent's implementation once they are done. i.e., for simplicity, the destructor of every subclass should be empty and its content should be moved to the associated DoDispose method.

It is safe to call GetObject from within this method.

Reimplemented from ns3::Object.

Definition at line 154 of file lte-ue-rrc.cc.

References m_asSapProvider, m_cmacSapUser, m_cphySapUser, m_drbMap, m_drbPdcpSapUser, m_rrcSapProvider, and NS_LOG_FUNCTION.

void ns3::LteUeRrc::DoInitialize ( void  )
privatevirtual

This method is called only once by Object::Initialize.

If the user calls Object::Initialize multiple times, DoInitialize is called only the first time.

Subclasses are expected to override this method and chain up to their parent's implementation once they are done. It is safe to call GetObject and AggregateObject from within this method.

Reimplemented from ns3::Object.

Definition at line 369 of file lte-ue-rrc.cc.

References ns3::LteUeCmacSapProvider::AddLc(), ns3::LteUeCmacSapProvider::LogicalChannelConfig::bucketSizeDurationMs, ns3::LteUeCmacSapProvider::LogicalChannelConfig::logicalChannelGroup, m_cmacSapProvider, m_macSapProvider, m_rnti, m_rrcSapUser, m_srb0, NS_LOG_FUNCTION, ns3::LteUeCmacSapProvider::LogicalChannelConfig::prioritizedBitRateKbps, ns3::LteUeCmacSapProvider::LogicalChannelConfig::priority, ns3::LteUeRrcSapUser::Setup(), ns3::LteUeRrcSapUser::SetupParameters::srb0SapProvider, and ns3::LteUeRrcSapUser::SetupParameters::srb1SapProvider.

+ Here is the call graph for this function:

void ns3::LteUeRrc::DoNotifyRandomAccessFailed ( )
private
Todo:
After a handover failure because of a random access failure, send an RRC Connection Re-establishment and switch to CONNECTED_REESTABLISHING state.

Definition at line 521 of file lte-ue-rrc.cc.

References CONNECTED_HANDOVER, IDLE_CAMPED_NORMALLY, IDLE_RANDOM_ACCESS, m_asSapUser, m_cellId, m_handoverEndErrorTrace, m_imsi, m_randomAccessErrorTrace, m_rnti, m_state, ns3::LteAsSapUser::NotifyConnectionFailed(), NS_FATAL_ERROR, NS_LOG_FUNCTION, SwitchToState(), and ns3::ToString().

Referenced by ns3::UeMemberLteUeCmacSapUser::NotifyRandomAccessFailed().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::LteUeRrc::DoReceivePdcpSdu ( LtePdcpSapUser::ReceivePdcpSduParameters  params)
private

Definition at line 459 of file lte-ue-rrc.cc.

References m_asSapUser, NS_LOG_FUNCTION, ns3::LtePdcpSapUser::ReceivePdcpSduParameters::pdcpSdu, and ns3::LteAsSapUser::RecvData().

+ Here is the call graph for this function:

void ns3::LteUeRrc::DoRecvRrcConnectionReconfiguration ( LteRrcSap::RrcConnectionReconfiguration  msg)
private

Part of the RRC protocol. Implement the LteUeRrcSapProvider::RecvRrcConnectionReconfiguration interface.

Definition at line 841 of file lte-ue-rrc.cc.

References ApplyMeasConfig(), ApplyRadioResourceConfigDedicated(), ns3::LteRrcSap::MobilityControlInfo::carrierBandwidth, ns3::LteRrcSap::MobilityControlInfo::carrierFreq, ns3::LteUeCphySapProvider::ConfigureUplink(), CONNECTED_HANDOVER, CONNECTED_NORMALLY, DisposeOldSrb1(), ns3::LteRrcSap::CarrierBandwidthEutra::dlBandwidth, ns3::LteRrcSap::CarrierFreqEutra::dlCarrierFreq, ns3::LteRrcSap::MobilityControlInfo::haveCarrierBandwidth, ns3::LteRrcSap::MobilityControlInfo::haveCarrierFreq, ns3::LteRrcSap::RrcConnectionReconfiguration::haveMeasConfig, ns3::LteRrcSap::RrcConnectionReconfiguration::haveMobilityControlInfo, ns3::LteRrcSap::MobilityControlInfo::haveRachConfigDedicated, ns3::LteRrcSap::RrcConnectionReconfiguration::haveRadioResourceConfigDedicated, m_cellId, m_cmacSapProvider, m_connectionReconfigurationTrace, m_cphySapProvider, m_drbMap, m_handoverStartTrace, m_imsi, m_lastRrcTransactionIdentifier, m_rnti, m_rrcSapUser, m_srb0, m_srb1, m_srb1Old, m_state, ns3::LteRrcSap::RrcConnectionReconfiguration::measConfig, ns3::LteRrcSap::RrcConnectionReconfiguration::mobilityControlInfo, ns3::LteRrcSap::MobilityControlInfo::newUeIdentity, NS_ASSERT, NS_ASSERT_MSG, NS_FATAL_ERROR, NS_LOG_FUNCTION, NS_LOG_INFO, ns3::LteRrcSap::MobilityControlInfo::rachConfigDedicated, ns3::LteRrcSap::RrcConnectionReconfiguration::radioResourceConfigDedicated, ns3::LteRrcSap::RachConfigDedicated::raPrachMaskIndex, ns3::LteRrcSap::RachConfigDedicated::raPreambleIndex, ns3::LteUeCphySapProvider::Reset(), ns3::LteUeCmacSapProvider::Reset(), ns3::LteRrcSap::RrcConnectionReconfiguration::rrcTransactionIdentifier, ns3::LteRrcSap::RrcConnectionReconfigurationCompleted::rrcTransactionIdentifier, ns3::Simulator::ScheduleNow(), ns3::LteUeRrcSapUser::SendRrcConnectionReconfigurationCompleted(), ns3::LteUeCphySapProvider::SetDlBandwidth(), ns3::LteUeCphySapProvider::SetRnti(), ns3::LteUeCmacSapProvider::StartNonContentionBasedRandomAccessProcedure(), SwitchToState(), ns3::LteUeCphySapProvider::SynchronizeWithEnb(), ns3::LteRrcSap::MobilityControlInfo::targetPhysCellId, ns3::ToString(), ns3::LteRrcSap::CarrierBandwidthEutra::ulBandwidth, and ns3::LteRrcSap::CarrierFreqEutra::ulCarrierFreq.

+ Here is the call graph for this function:

void ns3::LteUeRrc::DoRecvRrcConnectionReestablishment ( LteRrcSap::RrcConnectionReestablishment  msg)
private

Part of the RRC protocol. Implement the LteUeRrcSapProvider::RecvRrcConnectionReestablishment interface.

Todo:
After receiving RRC Connection Re-establishment, stop timer T301, fire a new trace source, reply with RRC Connection Re-establishment Complete, and finally switch to CONNECTED_NORMALLY state. See Section 5.3.7.5 of 3GPP TS 36.331.

Definition at line 912 of file lte-ue-rrc.cc.

References CONNECTED_REESTABLISHING, m_rnti, m_state, NS_FATAL_ERROR, NS_LOG_FUNCTION, and ns3::ToString().

+ Here is the call graph for this function:

void ns3::LteUeRrc::DoRecvRrcConnectionReestablishmentReject ( LteRrcSap::RrcConnectionReestablishmentReject  msg)
private

Part of the RRC protocol. Implement the LteUeRrcSapProvider::RecvRrcConnectionReestablishmentReject interface.

Todo:
After receiving RRC Connection Re-establishment Reject, stop timer T301. See Section 5.3.7.8 of 3GPP TS 36.331.

Definition at line 936 of file lte-ue-rrc.cc.

References CONNECTED_REESTABLISHING, LeaveConnectedMode(), m_rnti, m_state, NS_FATAL_ERROR, NS_LOG_FUNCTION, and ns3::ToString().

+ Here is the call graph for this function:

void ns3::LteUeRrc::DoRecvRrcConnectionReject ( LteRrcSap::RrcConnectionReject  msg)
private

Part of the RRC protocol. Implement the LteUeRrcSapProvider::RecvRrcConnectionReject interface.

Definition at line 965 of file lte-ue-rrc.cc.

References IDLE_CAMPED_NORMALLY, m_cmacSapProvider, NS_LOG_FUNCTION, ns3::LteUeCmacSapProvider::Reset(), and SwitchToState().

+ Here is the call graph for this function:

void ns3::LteUeRrc::DoRecvRrcConnectionRelease ( LteRrcSap::RrcConnectionRelease  msg)
private

Part of the RRC protocol. Implement the LteUeRrcSapProvider::RecvRrcConnectionRelease interface.

Todo:
Currently not implemented, see Section 5.3.8 of 3GPP TS 36.331.

Definition at line 958 of file lte-ue-rrc.cc.

References m_rnti, and NS_LOG_FUNCTION.

void ns3::LteUeRrc::DoRecvSystemInformation ( LteRrcSap::SystemInformation  msg)
private
void ns3::LteUeRrc::DoSendData ( Ptr< Packet packet,
uint8_t  bid 
)
private
void ns3::LteUeRrc::DoSetCsgWhiteList ( uint32_t  csgId)
private

Definition at line 554 of file lte-ue-rrc.cc.

References m_csgWhiteList, m_imsi, and NS_LOG_FUNCTION.

void ns3::LteUeRrc::DoSetTemporaryCellRnti ( uint16_t  rnti)
private

Definition at line 467 of file lte-ue-rrc.cc.

References m_cphySapProvider, m_rnti, m_srb0, NS_LOG_FUNCTION, and ns3::LteUeCphySapProvider::SetRnti().

Referenced by ns3::UeMemberLteUeCmacSapUser::SetTemporaryCellRnti().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::LteUeRrc::DoStartCellSelection ( uint16_t  dlEarfcn)
private
void ns3::LteUeRrc::EvaluateCellForSelection ( )
private

Performs cell selection evaluation to the current serving cell.

Warning
This function is a part of the initial cell selection procedure, hence must be only executed during IDLE mode and specifically during the state when the UE just received the first SIB1 message from the serving cell.

This function assumes that the required information for the evaluation procedure have been readily gathered, such as measurement results, MIB, and SIB1. Please refer to the LTE module's Design Documentation for more details on the evaluation process.

If the cell passes the evaluation, the UE will immediately camp to it. Otherwise, the UE will pick another cell and restart the cell selection procedure.

Definition at line 1018 of file lte-ue-rrc.cc.

References ns3::LteRrcSap::SystemInformationBlockType1::cellAccessRelatedInfo, ns3::LteRrcSap::CellAccessRelatedInfo::cellIdentity, ns3::LteRrcSap::SystemInformationBlockType1::cellSelectionInfo, ns3::LteRrcSap::CellAccessRelatedInfo::csgIdentity, ns3::LteRrcSap::CellAccessRelatedInfo::csgIndication, IDLE_CAMPED_NORMALLY, IDLE_CELL_SEARCH, IDLE_WAIT_SIB1, ns3::EutranMeasurementMapping::IeValue2ActualQRxLevMin(), m_acceptableCell, m_cellId, m_cphySapProvider, m_csgWhiteList, m_dlBandwidth, m_dlEarfcn, m_hasReceivedMib, m_hasReceivedSib1, m_imsi, m_initialCellSelectionEndErrorTrace, m_initialCellSelectionEndOkTrace, m_lastSib1, m_state, m_storedMeasValues, NS_ASSERT, NS_LOG_FUNCTION, NS_LOG_LOGIC, ns3::LteRrcSap::CellSelectionInfo::qRxLevMin, ns3::LteUeCphySapProvider::SetDlBandwidth(), SwitchToState(), SynchronizeToStrongestCell(), and ns3::LteUeCphySapProvider::SynchronizeWithEnb().

Referenced by DoRecvSystemInformationBlockType1().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

LteAsSapProvider * ns3::LteUeRrc::GetAsSapProvider ( )
Returns
the AS SAP provider exported by this RRC

Definition at line 293 of file lte-ue-rrc.cc.

References m_asSapProvider.

uint16_t ns3::LteUeRrc::GetCellId ( ) const
Returns
the CellId of the attached Enb

Definition at line 319 of file lte-ue-rrc.cc.

References m_cellId, and NS_LOG_FUNCTION.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

uint8_t ns3::LteUeRrc::GetDlBandwidth ( ) const
Returns
the downlink bandwidth in RBs

Definition at line 334 of file lte-ue-rrc.cc.

References m_dlBandwidth, and NS_LOG_FUNCTION.

uint16_t ns3::LteUeRrc::GetDlEarfcn ( ) const
Returns
the downlink carrier frequency (EARFCN)

Definition at line 341 of file lte-ue-rrc.cc.

References m_dlEarfcn.

uint64_t ns3::LteUeRrc::GetImsi ( void  ) const
Returns
imsi the unique UE identifier

Definition at line 306 of file lte-ue-rrc.cc.

References m_imsi.

LteUeCmacSapUser * ns3::LteUeRrc::GetLteUeCmacSapUser ( )
Returns
s the CMAC SAP User interface offered to the MAC by this RRC

Definition at line 259 of file lte-ue-rrc.cc.

References m_cmacSapUser, and NS_LOG_FUNCTION.

LteUeCphySapUser * ns3::LteUeRrc::GetLteUeCphySapUser ( )
Returns
s the CPHY SAP User interface offered to the PHY by this RRC

Definition at line 245 of file lte-ue-rrc.cc.

References m_cphySapUser, and NS_LOG_FUNCTION.

LteUeRrcSapProvider * ns3::LteUeRrc::GetLteUeRrcSapProvider ( )
Returns
s the RRC SAP Provider interface offered to the MAC by this RRC

Definition at line 273 of file lte-ue-rrc.cc.

References m_rrcSapProvider, and NS_LOG_FUNCTION.

uint16_t ns3::LteUeRrc::GetRnti ( void  ) const
Returns
the C-RNTI of the user

Definition at line 312 of file lte-ue-rrc.cc.

References m_rnti, and NS_LOG_FUNCTION.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

LteUeRrc::State ns3::LteUeRrc::GetState ( void  ) const
Returns
the current state

Definition at line 354 of file lte-ue-rrc.cc.

References m_state, and NS_LOG_FUNCTION.

uint8_t ns3::LteUeRrc::GetUlBandwidth ( ) const
Returns
the uplink bandwidth in RBs

Definition at line 327 of file lte-ue-rrc.cc.

References m_ulBandwidth, and NS_LOG_FUNCTION.

uint16_t ns3::LteUeRrc::GetUlEarfcn ( ) const
Returns
the uplink carrier frequency (EARFCN)

Definition at line 347 of file lte-ue-rrc.cc.

References m_ulEarfcn, and NS_LOG_FUNCTION.

void ns3::LteUeRrc::LeaveConnectedMode ( )
private
void ns3::LteUeRrc::MeasurementReportTriggering ( uint8_t  measId)
private

Evaluate the reporting criteria of a measurement identity and invoke some reporting actions based on the result.

Parameters
measIdthe measurement identity to be evaluated

Implements Section 5.5.4.1 "Measurement report triggering - General" of 3GPP TS 36.331. This function take into use the latest measurement results and evaluate them against the entering condition and the leaving condition of the measurement identity's reporting criteria. The evaluation also take into account other defined criteria, such as hysteresis and time-to-trigger.

The entering and leaving condition to be evaluated are determined by the event type of the measurement identity's reporting criteria. As defined in LteRrcSap::ReportConfigEutra, there 5 supported events. The gore details of these events can be found in Section 5.5.4 of 3GPP TS 36.331.

An applicable entering condition (i.e., the condition evaluates to true) will insert a new reporting entry to m_varMeasReportList, so measurement reports would be produced and submitted to eNodeB. On the other hand, an applicable leaving condition will remove the related reporting entry from m_varMeasReportList, so submission of related measurement reports to eNodeB will be suspended.

Definition at line 1530 of file lte-ue-rrc.cc.

References CancelEnteringTrigger(), CancelLeavingTrigger(), ns3::LteUeRrc::PendingTrigger_t::concernedCells, ns3::LteRrcSap::ReportConfigEutra::EVENT, ns3::LteRrcSap::ReportConfigEutra::EVENT_A1, ns3::LteRrcSap::ReportConfigEutra::EVENT_A2, ns3::LteRrcSap::ReportConfigEutra::EVENT_A3, ns3::LteRrcSap::ReportConfigEutra::EVENT_A4, ns3::LteRrcSap::ReportConfigEutra::EVENT_A5, ns3::EutranMeasurementMapping::IeValue2ActualA3Offset(), ns3::EutranMeasurementMapping::IeValue2ActualHysteresis(), m_cellId, m_enteringTriggerQueue, m_leavingTriggerQueue, m_storedMeasValues, m_varMeasConfig, m_varMeasReportList, ns3::LteUeRrc::PendingTrigger_t::measId, ns3::LteUeRrc::VarMeasConfig::measIdList, ns3::LteUeRrc::VarMeasConfig::measObjectList, NS_ASSERT, NS_ASSERT_MSG, NS_FATAL_ERROR, NS_LOG_FUNCTION, NS_LOG_LOGIC, ns3::LteUeRrc::VarMeasConfig::reportConfigList, ns3::LteRrcSap::ReportConfigEutra::RSRP, ns3::EutranMeasurementMapping::RsrpRange2Dbm(), ns3::LteRrcSap::ReportConfigEutra::RSRQ, ns3::EutranMeasurementMapping::RsrqRange2Db(), ns3::Simulator::Schedule(), ns3::LteRrcSap::ThresholdEutra::THRESHOLD_RSRP, ns3::LteRrcSap::ThresholdEutra::THRESHOLD_RSRQ, ns3::LteUeRrc::PendingTrigger_t::timer, VarMeasReportListAdd(), and VarMeasReportListErase().

Referenced by DoReportUeMeasurements().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::LteUeRrc::SaveUeMeasurements ( uint16_t  cellId,
double  rsrp,
double  rsrq,
bool  useLayer3Filtering 
)
private

Keep the given measurement result as the latest measurement figures, to be utilised by UE RRC functions.

Parameters
cellIdthe cell ID of the measured cell
rsrpmeasured RSRP value to be saved (in dBm)
rsrqmeasured RSRQ value to be saved (in dB)
useLayer3Filtering
Todo:
Remove the useLayer3Filtering argument

Implements Section 5.5.3.2 "Layer 3 filtering" of 3GPP TS 36.331. Layer-3 filtering is applied to the given measurement results before saved to m_storedMeasValues. The filtering is however disabled when the UE is in IDLE mode, i.e., saving unfiltered values.

Layer-3 filtering is influenced by a filter coefficient, which determines the strength of the filtering. This coefficient is provided by the active quantity configuration in m_varMeasConfig, which is configured by the LteUeRrc::ApplyMeasConfig. Details on how the coefficient works and how to modify it can be found in LTE module's Design Documentation.

See also
LteUeRrc::m_storedMeasValues

Definition at line 1476 of file lte-ue-rrc.cc.

References ns3::LteUeRrc::VarMeasConfig::aRsrp, ns3::LteUeRrc::VarMeasConfig::aRsrq, m_cellId, m_imsi, m_state, m_storedMeasValues, m_varMeasConfig, ns3::Simulator::Now(), NS_ASSERT_MSG, NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::LteUeRrc::MeasValues::rsrp, ns3::LteUeRrc::MeasValues::rsrq, and ns3::ToString().

Referenced by DoReportUeMeasurements().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::LteUeRrc::SendMeasurementReport ( uint8_t  measId)
private

Produce a proper measurement report from the given measurement identity's reporting entry in m_varMeasReportList and then submit it to the serving eNodeB.

Parameters
measIdthe measurement identity which report is to be submitted.

Implements Section 5.5.5 "Measurement reporting" of 3GPP TS 36.331. Producing a measurement report involves several tasks such as:

  • including the measurement results of the serving cell into the report;
  • selecting some neighbour cells which triggered the reporting (i.e., those in cellsTriggeredList) to be included in the report;
  • sorting the order of neighbour cells in the report by their RSRP or RSRQ measurement results (the highest comes first); and
  • ensuring the number of neighbour cells in the report is under the maxReportCells limit defined by the measurement identity's reporting configuration.

The RSRP and RSRQ measurement results included in the report are expressed in 3GPP-specified range format. They are converted from dBm and dB units using EutranMeasurementMapping::Dbm2RsrpRange and EutranMeasurementMapping::Db2RsrqRange functions.

Measurement report is submitted to the serving eNodeB through the RRC protocol. The LteUeRrcSapUser::SendMeasurementReport method of the UE RRC SAP facilitates this submission.

After the submission, the function will repeat itself after a certain interval. The interval length may vary from 120 ms to 60 minutes and is determined by the report interval parameter specified by the measurement identity's reporting configuration.

Definition at line 2546 of file lte-ue-rrc.cc.

References ns3::EutranMeasurementMapping::Db2RsrqRange(), ns3::EutranMeasurementMapping::Dbm2RsrpRange(), ns3::LteRrcSap::MeasResults::haveMeasResultNeighCells, m_cellId, m_rrcSapUser, m_storedMeasValues, m_varMeasConfig, m_varMeasReportList, ns3::LteRrcSap::MeasResults::measId, ns3::LteUeRrc::VarMeasConfig::measIdList, ns3::LteRrcSap::MeasResults::measResultListEutra, ns3::LteRrcSap::MeasurementReport::measResults, ns3::LteRrcSap::ReportConfigEutra::MIN1, ns3::LteRrcSap::ReportConfigEutra::MIN12, ns3::LteRrcSap::ReportConfigEutra::MIN30, ns3::LteRrcSap::ReportConfigEutra::MIN6, ns3::LteRrcSap::ReportConfigEutra::MIN60, ns3::LteRrcSap::ReportConfigEutra::MS1024, ns3::LteRrcSap::ReportConfigEutra::MS10240, ns3::LteRrcSap::ReportConfigEutra::MS120, ns3::LteRrcSap::ReportConfigEutra::MS2048, ns3::LteRrcSap::ReportConfigEutra::MS240, ns3::LteRrcSap::ReportConfigEutra::MS480, ns3::LteRrcSap::ReportConfigEutra::MS5120, ns3::LteRrcSap::ReportConfigEutra::MS640, NS_ASSERT, NS_FATAL_ERROR, NS_LOG_ERROR, NS_LOG_FUNCTION, NS_LOG_INFO, NS_LOG_WARN, ns3::LteRrcSap::MeasResultEutra::physCellId, ns3::LteUeRrc::VarMeasConfig::reportConfigList, ns3::LteRrcSap::ReportConfigEutra::RSRP, ns3::LteRrcSap::MeasResults::rsrpResult, ns3::LteRrcSap::ReportConfigEutra::RSRQ, ns3::LteRrcSap::MeasResults::rsrqResult, ns3::Simulator::Schedule(), and ns3::LteUeRrcSapUser::SendMeasurementReport().

Referenced by VarMeasReportListAdd(), and VarMeasReportListErase().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::LteUeRrc::SetAsSapUser ( LteAsSapUser s)

Set the AS SAP user to interact with the NAS entity.

Parameters
sthe AS SAP user

Definition at line 287 of file lte-ue-rrc.cc.

References m_asSapUser, and s.

void ns3::LteUeRrc::SetImsi ( uint64_t  imsi)
Parameters
imsithe unique UE identifier

Definition at line 299 of file lte-ue-rrc.cc.

References m_imsi, and NS_LOG_FUNCTION.

void ns3::LteUeRrc::SetLteMacSapProvider ( LteMacSapProvider s)

set the MAC SAP provider.

The ue RRC does not use this directly, but it needs to provide it to newly created RLC instances.

Parameters
sthe MAC SAP provider that will be used by all newly created RLC instances

Definition at line 280 of file lte-ue-rrc.cc.

References m_macSapProvider, NS_LOG_FUNCTION, and s.

void ns3::LteUeRrc::SetLteUeCmacSapProvider ( LteUeCmacSapProvider s)

set the CMAC SAP this RRC should interact with

Parameters
sthe CMAC SAP Provider to be used by this RRC

Definition at line 252 of file lte-ue-rrc.cc.

References m_cmacSapProvider, NS_LOG_FUNCTION, and s.

void ns3::LteUeRrc::SetLteUeCphySapProvider ( LteUeCphySapProvider s)

set the CPHY SAP this RRC should use to interact with the PHY

Parameters
sthe CPHY SAP Provider

Definition at line 238 of file lte-ue-rrc.cc.

References m_cphySapProvider, NS_LOG_FUNCTION, and s.

void ns3::LteUeRrc::SetLteUeRrcSapUser ( LteUeRrcSapUser s)

set the RRC SAP this RRC should interact with

Parameters
sthe RRC SAP User to be used by this RRC

Definition at line 266 of file lte-ue-rrc.cc.

References m_rrcSapUser, NS_LOG_FUNCTION, and s.

void ns3::LteUeRrc::SetUseRlcSm ( bool  val)
Parameters
valtrue if RLC SM is to be used, false if RLC UM/AM are to be used

Definition at line 361 of file lte-ue-rrc.cc.

References m_useRlcSm, and NS_LOG_FUNCTION.

void ns3::LteUeRrc::StartConnection ( )
private

Definition at line 2704 of file lte-ue-rrc.cc.

References IDLE_RANDOM_ACCESS, m_cmacSapProvider, m_connectionPending, m_hasReceivedMib, m_hasReceivedSib2, m_imsi, NS_ASSERT, NS_LOG_FUNCTION, ns3::LteUeCmacSapProvider::StartContentionBasedRandomAccessProcedure(), and SwitchToState().

Referenced by DoRecvSystemInformation(), and SwitchToState().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::LteUeRrc::SynchronizeToStrongestCell ( )
private

Go through the list of measurement results, choose the one with the strongest RSRP, and tell PHY to synchronize to it.

Warning
This function is a part of the initial cell selection procedure, hence must be only executed during IDLE mode.

Definition at line 975 of file lte-ue-rrc.cc.

References IDLE_CELL_SEARCH, IDLE_WAIT_MIB_SIB1, m_acceptableCell, m_cphySapProvider, m_dlEarfcn, m_state, m_storedMeasValues, NS_ASSERT, NS_LOG_FUNCTION, NS_LOG_LOGIC, NS_LOG_WARN, SwitchToState(), and ns3::LteUeCphySapProvider::SynchronizeWithEnb().

Referenced by DoReportUeMeasurements(), and EvaluateCellForSelection().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::LteUeRrc::VarMeasReportListAdd ( uint8_t  measId,
ConcernedCells_t  enteringCells 
)
private

Compose a new reporting entry of the given measurement identity, insert it into m_varMeasReportList, and set it up for submission to eNodeB.

Parameters
measIdthe measurement identity which the new reporting entry will be based upon
enteringCellsthe cells which are responsible for triggering the reporting (i.e., successfully fulfilling the entering condition of the measurement identity) and will be included in the measurement report.
Note
If an existing reporting entry with the same measurement identity has already existed in m_varMeasReportList, the function will update it by adding the entering cells into the existing reporting entry.
When time-to-trigger is enabled for this measurement identity, the function will also remove the related trigger from the m_enteringTriggerQueue.

Definition at line 2399 of file lte-ue-rrc.cc.

References CancelEnteringTrigger(), m_enteringTriggerQueue, m_varMeasReportList, ns3::LteUeRrc::VarMeasReport::measId, NS_ASSERT, NS_ASSERT_MSG, NS_LOG_FUNCTION, ns3::Simulator::Schedule(), SendMeasurementReport(), and ns3::UE_MEASUREMENT_REPORT_DELAY.

Referenced by MeasurementReportTriggering().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::LteUeRrc::VarMeasReportListClear ( uint8_t  measId)
private

Remove the reporting entry of the given measurement identity from m_varMeasReportList.

Parameters
measIdthe measurement identity to be removed from m_varMeasReportList, must already exists there, otherwise an error would be raised

Any events or triggers related with this measurement identity will be canceled as well.

Definition at line 2527 of file lte-ue-rrc.cc.

References CancelEnteringTrigger(), CancelLeavingTrigger(), m_varMeasReportList, NS_LOG_FUNCTION, and NS_LOG_LOGIC.

Referenced by ApplyMeasConfig(), and DoNotifyRandomAccessSuccessful().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::LteUeRrc::VarMeasReportListErase ( uint8_t  measId,
ConcernedCells_t  leavingCells,
bool  reportOnLeave 
)
private

Remove some cells from an existing reporting entry in m_varMeasReportList.

Parameters
measIdthe measurement identity to be removed from m_varMeasReportList, must already exists there, otherwise an error would be raised
leavingCellsthe cells which are about to be removed
reportOnLeavewhen true, will make the function send one last measurement report to eNodeB before removing it
Note
If a given cell is not found in the reporting entry, the function will quietly continue.
If the removal has removed all the cells in the reporting entry, the function will remove the reporting entry as well.
When time-to-trigger is enabled for this measurement identity, the function will also remove the related trigger from the m_leavingTriggerQueue.

Definition at line 2466 of file lte-ue-rrc.cc.

References CancelLeavingTrigger(), m_leavingTriggerQueue, m_varMeasReportList, NS_ASSERT, NS_LOG_FUNCTION, and SendMeasurementReport().

Referenced by MeasurementReportTriggering().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Friends And Related Function Documentation

friend class LtePdcpSpecificLtePdcpSapUser< LteUeRrc >
friend

Definition at line 75 of file lte-ue-rrc.h.

friend class MemberLteAsSapProvider< LteUeRrc >
friend

Definition at line 76 of file lte-ue-rrc.h.

friend class MemberLteUeCphySapUser< LteUeRrc >
friend

Definition at line 77 of file lte-ue-rrc.h.

friend class MemberLteUeRrcSapProvider< LteUeRrc >
friend

Definition at line 78 of file lte-ue-rrc.h.

friend class UeMemberLteUeCmacSapUser
friend

Definition at line 73 of file lte-ue-rrc.h.

Referenced by LteUeRrc().

friend class UeRrcMemberLteEnbCmacSapUser
friend

Definition at line 74 of file lte-ue-rrc.h.

Member Data Documentation

std::set<uint16_t> ns3::LteUeRrc::m_acceptableCell
private

List of cell ID of acceptable cells for cell selection that have been detected.

Definition at line 546 of file lte-ue-rrc.h.

Referenced by EvaluateCellForSelection(), and SynchronizeToStrongestCell().

LteAsSapProvider* ns3::LteUeRrc::m_asSapProvider
private

Definition at line 486 of file lte-ue-rrc.h.

Referenced by DoDispose(), GetAsSapProvider(), and LteUeRrc().

LteAsSapUser* ns3::LteUeRrc::m_asSapUser
private
std::map<uint8_t, uint8_t> ns3::LteUeRrc::m_bid2DrbidMap
private

Definition at line 472 of file lte-ue-rrc.h.

Referenced by ApplyRadioResourceConfigDedicated(), Bid2Drbid(), and LeaveConnectedMode().

LteUeCmacSapUser* ns3::LteUeRrc::m_cmacSapUser
private

Definition at line 477 of file lte-ue-rrc.h.

Referenced by DoDispose(), GetLteUeCmacSapUser(), and LteUeRrc().

TracedCallback<uint64_t, uint16_t, uint16_t> ns3::LteUeRrc::m_connectionEstablishedTrace
private

Definition at line 527 of file lte-ue-rrc.h.

Referenced by DoRecvRrcConnectionSetup(), and GetTypeId().

bool ns3::LteUeRrc::m_connectionPending
private

true if a connection request by upper layers is pending

Definition at line 537 of file lte-ue-rrc.h.

Referenced by DoConnect(), DoRecvSystemInformation(), StartConnection(), and SwitchToState().

TracedCallback<uint64_t, uint16_t, uint16_t> ns3::LteUeRrc::m_connectionReconfigurationTrace
private

Definition at line 529 of file lte-ue-rrc.h.

Referenced by DoRecvRrcConnectionReconfiguration(), and GetTypeId().

LteUeCphySapUser* ns3::LteUeRrc::m_cphySapUser
private

Definition at line 474 of file lte-ue-rrc.h.

Referenced by DoDispose(), GetLteUeCphySapUser(), and LteUeRrc().

uint32_t ns3::LteUeRrc::m_csgWhiteList
private

List of CSG ID which this UE entity has access to.

Definition at line 549 of file lte-ue-rrc.h.

Referenced by DoSetCsgWhiteList(), and EvaluateCellForSelection().

uint8_t ns3::LteUeRrc::m_dlBandwidth
private

downlink bandwidth in RBs

Definition at line 504 of file lte-ue-rrc.h.

Referenced by DoRecvMasterInformationBlock(), EvaluateCellForSelection(), and GetDlBandwidth().

uint16_t ns3::LteUeRrc::m_dlEarfcn
private

downlink carrier frequency

Definition at line 507 of file lte-ue-rrc.h.

Referenced by DoForceCampedOnEnb(), DoStartCellSelection(), EvaluateCellForSelection(), GetDlEarfcn(), and SynchronizeToStrongestCell().

std::map<uint8_t, Ptr<LteDataRadioBearerInfo> > ns3::LteUeRrc::m_drbMap
private
LtePdcpSapUser* ns3::LteUeRrc::m_drbPdcpSapUser
private

Definition at line 484 of file lte-ue-rrc.h.

Referenced by ApplyRadioResourceConfigDedicated(), DoDispose(), and LteUeRrc().

std::map<uint8_t, std::list<PendingTrigger_t> > ns3::LteUeRrc::m_enteringTriggerQueue
private

List of triggers that were raised because entering condition have been true, but are still delayed from reporting it by time-to-trigger.

The list is indexed by the measurement identity where the trigger originates from. The enclosed event will run at the end of the time-to-trigger and insert a reporting entry to m_varMeasReportList.

Definition at line 705 of file lte-ue-rrc.h.

Referenced by ApplyMeasConfig(), CancelEnteringTrigger(), MeasurementReportTriggering(), and VarMeasReportListAdd().

TracedCallback<uint64_t, uint16_t, uint16_t> ns3::LteUeRrc::m_handoverEndErrorTrace
private

Definition at line 535 of file lte-ue-rrc.h.

Referenced by DoNotifyRandomAccessFailed(), and GetTypeId().

TracedCallback<uint64_t, uint16_t, uint16_t> ns3::LteUeRrc::m_handoverEndOkTrace
private

Definition at line 533 of file lte-ue-rrc.h.

Referenced by DoNotifyRandomAccessSuccessful(), and GetTypeId().

TracedCallback<uint64_t, uint16_t, uint16_t, uint16_t> ns3::LteUeRrc::m_handoverStartTrace
private

Definition at line 531 of file lte-ue-rrc.h.

Referenced by DoRecvRrcConnectionReconfiguration(), and GetTypeId().

bool ns3::LteUeRrc::m_hasReceivedMib
private

true if MIB was received for the current cell

Definition at line 538 of file lte-ue-rrc.h.

Referenced by DoRecvMasterInformationBlock(), EvaluateCellForSelection(), and StartConnection().

bool ns3::LteUeRrc::m_hasReceivedSib1
private

true if SIB1 was received for the current cell

Definition at line 539 of file lte-ue-rrc.h.

Referenced by DoRecvSystemInformationBlockType1(), and EvaluateCellForSelection().

bool ns3::LteUeRrc::m_hasReceivedSib2
private

true if SIB2 was received for the current cell

Definition at line 540 of file lte-ue-rrc.h.

Referenced by DoRecvSystemInformation(), StartConnection(), and SwitchToState().

TracedCallback<uint64_t, uint16_t> ns3::LteUeRrc::m_initialCellSelectionEndErrorTrace
private

Definition at line 521 of file lte-ue-rrc.h.

Referenced by EvaluateCellForSelection(), and GetTypeId().

TracedCallback<uint64_t, uint16_t> ns3::LteUeRrc::m_initialCellSelectionEndOkTrace
private

Definition at line 519 of file lte-ue-rrc.h.

Referenced by EvaluateCellForSelection(), and GetTypeId().

uint8_t ns3::LteUeRrc::m_lastRrcTransactionIdentifier
private
LteRrcSap::SystemInformationBlockType1 ns3::LteUeRrc::m_lastSib1
private

Stored content of the last SIB1 received.

Definition at line 543 of file lte-ue-rrc.h.

Referenced by DoRecvSystemInformationBlockType1(), and EvaluateCellForSelection().

std::map<uint8_t, std::list<PendingTrigger_t> > ns3::LteUeRrc::m_leavingTriggerQueue
private

List of triggers that were raised because leaving condition have been true, but are still delayed from stopping the reporting by time-to-trigger.

The list is indexed by the measurement identity where the trigger originates from. The enclosed event will run at the end of the time-to-trigger and remove the associated reporting entry from m_varMeasReportList.

Definition at line 717 of file lte-ue-rrc.h.

Referenced by ApplyMeasConfig(), CancelLeavingTrigger(), MeasurementReportTriggering(), and VarMeasReportListErase().

LteMacSapProvider* ns3::LteUeRrc::m_macSapProvider
private
TracedCallback<uint64_t, uint16_t, uint16_t, uint16_t> ns3::LteUeRrc::m_mibReceivedTrace
private

Definition at line 511 of file lte-ue-rrc.h.

Referenced by DoRecvMasterInformationBlock(), and GetTypeId().

TracedCallback<uint64_t, uint16_t, uint16_t> ns3::LteUeRrc::m_randomAccessErrorTrace
private

Definition at line 525 of file lte-ue-rrc.h.

Referenced by DoNotifyRandomAccessFailed(), and GetTypeId().

TracedCallback<uint64_t, uint16_t, uint16_t> ns3::LteUeRrc::m_randomAccessSuccessfulTrace
private

Definition at line 523 of file lte-ue-rrc.h.

Referenced by DoNotifyRandomAccessSuccessful(), and GetTypeId().

LteUeRrcSapProvider* ns3::LteUeRrc::m_rrcSapProvider
private

Definition at line 481 of file lte-ue-rrc.h.

Referenced by DoDispose(), GetLteUeRrcSapProvider(), and LteUeRrc().

TracedCallback<uint64_t, uint16_t, uint16_t, uint16_t> ns3::LteUeRrc::m_sib1ReceivedTrace
private

Definition at line 513 of file lte-ue-rrc.h.

Referenced by DoRecvSystemInformationBlockType1(), and GetTypeId().

TracedCallback<uint64_t, uint16_t, uint16_t> ns3::LteUeRrc::m_sib2ReceivedTrace
private

Definition at line 515 of file lte-ue-rrc.h.

Referenced by DoRecvSystemInformation(), and GetTypeId().

Ptr<LteSignalingRadioBearerInfo> ns3::LteUeRrc::m_srb1Old
private

Definition at line 497 of file lte-ue-rrc.h.

Referenced by DisposeOldSrb1(), and DoRecvRrcConnectionReconfiguration().

TracedCallback<uint64_t, uint16_t, uint16_t, State, State> ns3::LteUeRrc::m_stateTransitionTrace
private

Definition at line 517 of file lte-ue-rrc.h.

Referenced by GetTypeId(), and SwitchToState().

std::map<uint16_t, MeasValues> ns3::LteUeRrc::m_storedMeasValues
private

Internal storage of the latest measurement results from all detected detected cells, indexed by the cell ID where the measurement was taken from.

Each measurement result comprises of RSRP (in dBm) and RSRQ (in dB).

In IDLE mode, the measurement results are used by the initial cell selection procedure. While in CONNECTED mode, layer-3 filtering is applied to the measurement results and they are used by UE measurements function (LteUeRrc::MeasurementReportTriggering and LteUeRrc::SendMeasurementReport).

Definition at line 682 of file lte-ue-rrc.h.

Referenced by EvaluateCellForSelection(), MeasurementReportTriggering(), SaveUeMeasurements(), SendMeasurementReport(), and SynchronizeToStrongestCell().

uint8_t ns3::LteUeRrc::m_ulBandwidth
private

uplink bandwidth in RBs

Definition at line 505 of file lte-ue-rrc.h.

Referenced by DoRecvSystemInformation(), and GetUlBandwidth().

uint16_t ns3::LteUeRrc::m_ulEarfcn
private

uplink carrier frequency

Definition at line 508 of file lte-ue-rrc.h.

Referenced by DoRecvSystemInformation(), and GetUlEarfcn().

bool ns3::LteUeRrc::m_useRlcSm
private

Definition at line 500 of file lte-ue-rrc.h.

Referenced by ApplyRadioResourceConfigDedicated(), and SetUseRlcSm().

VarMeasConfig ns3::LteUeRrc::m_varMeasConfig
private

Includes the accumulated configuration of the measurements to be performed by the UE.

Based on 3GPP TS 36.331 section 7.1.

Definition at line 577 of file lte-ue-rrc.h.

Referenced by ApplyMeasConfig(), DoNotifyRandomAccessSuccessful(), DoReportUeMeasurements(), MeasurementReportTriggering(), SaveUeMeasurements(), and SendMeasurementReport().

std::map<uint8_t, VarMeasReport> ns3::LteUeRrc::m_varMeasReportList
private

The list of active reporting entries, indexed by the measurement identity which triggered the reporting.

Includes information about measurements for which the triggering conditions have been met.

Definition at line 599 of file lte-ue-rrc.h.

Referenced by ApplyMeasConfig(), MeasurementReportTriggering(), SendMeasurementReport(), VarMeasReportListAdd(), VarMeasReportListClear(), and VarMeasReportListErase().


The documentation for this class was generated from the following files: