#include <lte-ue-rrc.h>
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... | |
LteAsSapProvider * | GetAsSapProvider () |
uint16_t | GetCellId () const |
uint8_t | GetDlBandwidth () const |
uint16_t | GetDlEarfcn () const |
uint64_t | GetImsi (void) const |
LteUeCmacSapUser * | GetLteUeCmacSapUser () |
LteUeCphySapUser * | GetLteUeCphySapUser () |
LteUeRrcSapProvider * | GetLteUeRrcSapProvider () |
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... | |
SimpleRefCount & | operator= (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... | |
LteAsSapProvider * | m_asSapProvider |
LteAsSapUser * | m_asSapUser |
std::map< uint8_t, uint8_t > | m_bid2DrbidMap |
uint16_t | m_cellId |
LteUeCmacSapProvider * | m_cmacSapProvider |
LteUeCmacSapUser * | m_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 |
LteUeCphySapProvider * | m_cphySapProvider |
LteUeCphySapUser * | m_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 |
LtePdcpSapUser * | m_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... | |
LteMacSapProvider * | m_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 |
LteUeRrcSapProvider * | m_rrcSapProvider |
LteUeRrcSapUser * | m_rrcSapUser |
TracedCallback< uint64_t, uint16_t, uint16_t, uint16_t > | m_sib1ReceivedTrace |
TracedCallback< uint64_t, uint16_t, uint16_t > | m_sib2ReceivedTrace |
Ptr< LteSignalingRadioBearerInfo > | m_srb0 |
Ptr< LteSignalingRadioBearerInfo > | m_srb1 |
Ptr< LteSignalingRadioBearerInfo > | m_srb1Old |
State | m_state |
TracedCallback< uint64_t, uint16_t, uint16_t, State, State > | m_stateTransitionTrace |
std::map< uint16_t, MeasValues > | m_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, VarMeasReport > | m_varMeasReportList |
The list of active reporting entries, indexed by the measurement identity which triggered the reporting. More... | |
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... | |
ns3::LteUeRrc is accessible through the following paths with Config::Set and Config::Connect:
Definition at line 70 of file lte-ue-rrc.h.
|
private |
List of cell IDs which are responsible for a certain trigger.
Definition at line 604 of file lte-ue-rrc.h.
enum ns3::LteUeRrc::State |
The states of the UE RRC entity.
Definition at line 86 of file lte-ue-rrc.h.
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.
|
virtual |
|
private |
Update the current measurement configuration m_varMeasConfig.
mc | measurements to be performed by the UE |
Implements Section 5.5.2 "Measurement configuration" of 3GPP TS 36.331. The supported subfunctions are:
The subfunctions that will be invoked are determined by the content of the given measurement configuration.
Note the existence of some chain reaction behaviours:
Some unsupported features:
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.
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().
|
private |
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().
|
private |
Definition at line 2739 of file lte-ue-rrc.cc.
References m_bid2DrbidMap, and NS_ASSERT_MSG.
Referenced by DoSendData().
|
private |
Clear all the waiting triggers in m_enteringTriggerQueue which are associated with the given measurement identity.
measId | the measurement identity to be processed, must already exists in m_enteringTriggerQueue, otherwise an error would be raised |
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.
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().
|
private |
Remove a specific cell from the waiting triggers in m_enteringTriggerQueue which belong to the given measurement identity.
measId | the measurement identity to be processed, must already exists in m_enteringTriggerQueue, otherwise an error would be raised |
cellId | the cell ID to be removed from the waiting triggers |
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.
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.
|
private |
Clear all the waiting triggers in m_leavingTriggerQueue which are associated with the given measurement identity.
measId | the measurement identity to be processed, must already exists in m_leavingTriggerQueue, otherwise an error would be raised |
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.
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().
|
private |
Remove a specific cell from the waiting triggers in m_leavingTriggerQueue which belong to the given measurement identity.
measId | the measurement identity to be processed, must already exists in m_leavingTriggerQueue, otherwise an error would be raised |
cellId | the cell ID to be removed from the waiting triggers |
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.
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.
|
private |
Definition at line 2732 of file lte-ue-rrc.cc.
References m_srb1Old, and NS_LOG_FUNCTION.
Referenced by DoRecvRrcConnectionReconfiguration().
|
private |
Part of the RRC protocol. Implement the LteUeRrcSapProvider::CompleteSetup interface.
Definition at line 762 of file lte-ue-rrc.cc.
References m_rnti, m_srb0, m_srb1, NS_LOG_FUNCTION, ns3::LteUeRrcSapProvider::CompleteSetupParameters::srb0SapUser, and ns3::LteUeRrcSapProvider::CompleteSetupParameters::srb1SapUser.
|
private |
Definition at line 617 of file lte-ue-rrc.cc.
References CONNECTED_HANDOVER, CONNECTED_NORMALLY, CONNECTED_REESTABLISHING, IDLE_CAMPED_NORMALLY, IDLE_CELL_SEARCH, IDLE_CONNECTING, IDLE_RANDOM_ACCESS, IDLE_START, IDLE_WAIT_MIB, IDLE_WAIT_MIB_SIB1, IDLE_WAIT_SIB1, IDLE_WAIT_SIB2, m_connectionPending, m_imsi, m_state, NS_FATAL_ERROR, NS_LOG_FUNCTION, NS_LOG_INFO, SwitchToState(), and ns3::ToString().
|
private |
Definition at line 425 of file lte-ue-rrc.cc.
References CONNECTED_HANDOVER, CONNECTED_NORMALLY, CONNECTED_PHY_PROBLEM, CONNECTED_REESTABLISHING, IDLE_CAMPED_NORMALLY, IDLE_CELL_SEARCH, IDLE_CONNECTING, IDLE_START, IDLE_WAIT_MIB, IDLE_WAIT_MIB_SIB1, IDLE_WAIT_SIB1, IDLE_WAIT_SIB2, LeaveConnectedMode(), m_state, NS_FATAL_ERROR, NS_LOG_FUNCTION, NS_LOG_INFO, and ns3::ToString().
|
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.
|
private |
Definition at line 572 of file lte-ue-rrc.cc.
References CONNECTED_HANDOVER, CONNECTED_NORMALLY, CONNECTED_PHY_PROBLEM, CONNECTED_REESTABLISHING, IDLE_CAMPED_NORMALLY, IDLE_CELL_SEARCH, IDLE_CONNECTING, IDLE_RANDOM_ACCESS, IDLE_START, IDLE_WAIT_MIB, IDLE_WAIT_MIB_SIB1, IDLE_WAIT_SIB1, IDLE_WAIT_SIB2, m_cellId, m_cphySapProvider, m_dlEarfcn, m_imsi, m_state, NS_FATAL_ERROR, NS_LOG_FUNCTION, NS_LOG_INFO, SwitchToState(), ns3::LteUeCphySapProvider::SynchronizeWithEnb(), and ns3::ToString().
|
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.
|
private |
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().
|
private |
Definition at line 476 of file lte-ue-rrc.cc.
References CONNECTED_HANDOVER, CONNECTED_NORMALLY, IDLE_CONNECTING, IDLE_RANDOM_ACCESS, m_cellId, m_handoverEndOkTrace, m_imsi, m_lastRrcTransactionIdentifier, m_randomAccessSuccessfulTrace, m_rnti, m_rrcSapUser, m_state, m_varMeasConfig, ns3::LteUeRrc::VarMeasConfig::measIdList, NS_FATAL_ERROR, NS_LOG_FUNCTION, ns3::LteRrcSap::RrcConnectionReconfigurationCompleted::rrcTransactionIdentifier, ns3::LteUeRrcSapUser::SendRrcConnectionReconfigurationCompleted(), ns3::LteUeRrcSapUser::SendRrcConnectionRequest(), SwitchToState(), ns3::ToString(), ns3::LteRrcSap::RrcConnectionRequest::ueIdentity, and VarMeasReportListClear().
Referenced by ns3::UeMemberLteUeCmacSapUser::NotifyRandomAccessSuccessful().
|
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().
|
private |
Definition at line 659 of file lte-ue-rrc.cc.
References ns3::LteRrcSap::MasterInformationBlock::dlBandwidth, IDLE_CAMPED_NORMALLY, IDLE_WAIT_MIB, IDLE_WAIT_MIB_SIB1, IDLE_WAIT_SIB1, m_cellId, m_cphySapProvider, m_dlBandwidth, m_hasReceivedMib, m_imsi, m_mibReceivedTrace, m_rnti, m_state, ns3::LteUeCphySapProvider::SetDlBandwidth(), and SwitchToState().
|
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.
|
private |
Part of the RRC protocol. Implement the LteUeRrcSapProvider::RecvRrcConnectionReestablishment interface.
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().
|
private |
Part of the RRC protocol. Implement the LteUeRrcSapProvider::RecvRrcConnectionReestablishmentReject interface.
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().
|
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().
|
private |
Part of the RRC protocol. Implement the LteUeRrcSapProvider::RecvRrcConnectionRelease interface.
Definition at line 958 of file lte-ue-rrc.cc.
References m_rnti, and NS_LOG_FUNCTION.
|
private |
Part of the RRC protocol. Implement the LteUeRrcSapProvider::RecvRrcConnectionSetup interface.
Definition at line 817 of file lte-ue-rrc.cc.
References ApplyRadioResourceConfigDedicated(), CONNECTED_NORMALLY, IDLE_CONNECTING, m_asSapUser, m_cellId, m_connectionEstablishedTrace, m_imsi, m_rnti, m_rrcSapUser, m_state, ns3::LteAsSapUser::NotifyConnectionSuccessful(), NS_FATAL_ERROR, NS_LOG_FUNCTION, ns3::LteRrcSap::RrcConnectionSetup::radioResourceConfigDedicated, ns3::LteRrcSap::RrcConnectionSetup::rrcTransactionIdentifier, ns3::LteRrcSap::RrcConnectionSetupCompleted::rrcTransactionIdentifier, ns3::LteUeRrcSapUser::SendRrcConnectionSetupCompleted(), SwitchToState(), and ns3::ToString().
|
private |
Part of the RRC protocol. Implement the LteUeRrcSapProvider::RecvSystemInformation interface.
Definition at line 774 of file lte-ue-rrc.cc.
References ns3::LteUeCmacSapProvider::ConfigureRach(), ns3::LteUeCphySapProvider::ConfigureUplink(), CONNECTED_HANDOVER, CONNECTED_NORMALLY, CONNECTED_PHY_PROBLEM, CONNECTED_REESTABLISHING, ns3::LteRrcSap::SystemInformationBlockType2::freqInfo, ns3::LteRrcSap::SystemInformation::haveSib2, IDLE_CAMPED_NORMALLY, IDLE_CONNECTING, IDLE_RANDOM_ACCESS, IDLE_WAIT_SIB2, m_cellId, m_cmacSapProvider, m_connectionPending, m_cphySapProvider, m_hasReceivedSib2, m_imsi, m_rnti, m_sib2ReceivedTrace, m_state, m_ulBandwidth, m_ulEarfcn, NS_ASSERT, NS_LOG_FUNCTION, ns3::LteUeCmacSapProvider::RachConfig::numberOfRaPreambles, ns3::LteRrcSap::PreambleInfo::numberOfRaPreambles, ns3::LteRrcSap::RachConfigCommon::preambleInfo, ns3::LteUeCmacSapProvider::RachConfig::preambleTransMax, ns3::LteRrcSap::RaSupervisionInfo::preambleTransMax, ns3::LteRrcSap::RadioResourceConfigCommonSib::rachConfigCommon, ns3::LteRrcSap::SystemInformationBlockType2::radioResourceConfigCommon, ns3::LteUeCmacSapProvider::RachConfig::raResponseWindowSize, ns3::LteRrcSap::RaSupervisionInfo::raResponseWindowSize, ns3::LteRrcSap::RachConfigCommon::raSupervisionInfo, ns3::LteRrcSap::SystemInformation::sib2, StartConnection(), ns3::LteRrcSap::FreqInfo::ulBandwidth, and ns3::LteRrcSap::FreqInfo::ulCarrierFreq.
|
private |
Definition at line 686 of file lte-ue-rrc.cc.
References ns3::LteRrcSap::SystemInformationBlockType1::cellAccessRelatedInfo, ns3::LteRrcSap::CellAccessRelatedInfo::cellIdentity, CONNECTED_HANDOVER, CONNECTED_NORMALLY, CONNECTED_PHY_PROBLEM, CONNECTED_REESTABLISHING, EvaluateCellForSelection(), IDLE_CAMPED_NORMALLY, IDLE_CONNECTING, IDLE_RANDOM_ACCESS, IDLE_WAIT_MIB_SIB1, IDLE_WAIT_SIB1, m_cellId, m_hasReceivedSib1, m_imsi, m_lastSib1, m_rnti, m_sib1ReceivedTrace, m_state, and NS_ASSERT_MSG.
|
private |
Definition at line 725 of file lte-ue-rrc.cc.
References CONNECTED_NORMALLY, IDLE_CELL_SEARCH, m_state, ns3::LteUeCphySapUser::UeMeasurementsParameters::m_ueMeasurementsList, m_varMeasConfig, ns3::LteUeRrc::VarMeasConfig::measIdList, MeasurementReportTriggering(), NS_LOG_FUNCTION, SaveUeMeasurements(), and SynchronizeToStrongestCell().
Definition at line 402 of file lte-ue-rrc.cc.
References Bid2Drbid(), ns3::Packet::GetSize(), m_drbMap, m_rnti, NS_ASSERT_MSG, NS_LOG_FUNCTION, NS_LOG_LOGIC, and ns3::LtePdcpSapProvider::TransmitPdcpSduParameters::pdcpSdu.
|
private |
Definition at line 554 of file lte-ue-rrc.cc.
References m_csgWhiteList, m_imsi, and NS_LOG_FUNCTION.
|
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().
|
private |
Definition at line 561 of file lte-ue-rrc.cc.
References IDLE_CELL_SEARCH, IDLE_START, m_cphySapProvider, m_dlEarfcn, m_imsi, m_state, NS_ASSERT_MSG, NS_LOG_FUNCTION, ns3::LteUeCphySapProvider::StartCellSearch(), SwitchToState(), and ns3::ToString().
|
private |
Performs cell selection evaluation to the current 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().
LteAsSapProvider * ns3::LteUeRrc::GetAsSapProvider | ( | ) |
Definition at line 293 of file lte-ue-rrc.cc.
References m_asSapProvider.
uint16_t ns3::LteUeRrc::GetCellId | ( | ) | const |
Definition at line 319 of file lte-ue-rrc.cc.
References m_cellId, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
uint8_t ns3::LteUeRrc::GetDlBandwidth | ( | ) | const |
Definition at line 334 of file lte-ue-rrc.cc.
References m_dlBandwidth, and NS_LOG_FUNCTION.
uint16_t ns3::LteUeRrc::GetDlEarfcn | ( | ) | const |
Definition at line 341 of file lte-ue-rrc.cc.
References m_dlEarfcn.
uint64_t ns3::LteUeRrc::GetImsi | ( | void | ) | const |
Definition at line 306 of file lte-ue-rrc.cc.
References m_imsi.
LteUeCmacSapUser * ns3::LteUeRrc::GetLteUeCmacSapUser | ( | ) |
Definition at line 259 of file lte-ue-rrc.cc.
References m_cmacSapUser, and NS_LOG_FUNCTION.
LteUeCphySapUser * ns3::LteUeRrc::GetLteUeCphySapUser | ( | ) |
Definition at line 245 of file lte-ue-rrc.cc.
References m_cphySapUser, and NS_LOG_FUNCTION.
LteUeRrcSapProvider * ns3::LteUeRrc::GetLteUeRrcSapProvider | ( | ) |
Definition at line 273 of file lte-ue-rrc.cc.
References m_rrcSapProvider, and NS_LOG_FUNCTION.
uint16_t ns3::LteUeRrc::GetRnti | ( | void | ) | const |
Definition at line 312 of file lte-ue-rrc.cc.
References m_rnti, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
LteUeRrc::State ns3::LteUeRrc::GetState | ( | void | ) | const |
Definition at line 354 of file lte-ue-rrc.cc.
References m_state, and NS_LOG_FUNCTION.
|
static |
Definition at line 166 of file lte-ue-rrc.cc.
References GetCellId(), GetRnti(), m_connectionEstablishedTrace, m_connectionReconfigurationTrace, m_drbMap, m_handoverEndErrorTrace, m_handoverEndOkTrace, m_handoverStartTrace, m_initialCellSelectionEndErrorTrace, m_initialCellSelectionEndOkTrace, m_mibReceivedTrace, m_randomAccessErrorTrace, m_randomAccessSuccessfulTrace, m_sib1ReceivedTrace, m_sib2ReceivedTrace, m_srb0, m_srb1, m_stateTransitionTrace, ns3::MakeObjectMapAccessor(), ns3::MakeTraceSourceAccessor(), and ns3::TypeId::SetParent().
uint8_t ns3::LteUeRrc::GetUlBandwidth | ( | ) | const |
Definition at line 327 of file lte-ue-rrc.cc.
References m_ulBandwidth, and NS_LOG_FUNCTION.
uint16_t ns3::LteUeRrc::GetUlEarfcn | ( | ) | const |
Definition at line 347 of file lte-ue-rrc.cc.
References m_ulEarfcn, and NS_LOG_FUNCTION.
|
private |
Definition at line 2715 of file lte-ue-rrc.cc.
References IDLE_CAMPED_NORMALLY, m_asSapUser, m_bid2DrbidMap, m_cmacSapProvider, m_drbMap, m_imsi, m_srb1, ns3::LteAsSapUser::NotifyConnectionReleased(), NS_LOG_FUNCTION, ns3::LteUeCmacSapProvider::RemoveLc(), and SwitchToState().
Referenced by DoDisconnect(), and DoRecvRrcConnectionReestablishmentReject().
|
private |
Evaluate the reporting criteria of a measurement identity and invoke some reporting actions based on the result.
measId | the 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().
|
private |
Keep the given measurement result as the latest measurement figures, to be utilised by UE RRC functions.
cellId | the cell ID of the measured cell |
rsrp | measured RSRP value to be saved (in dBm) |
rsrq | measured RSRQ value to be saved (in dB) |
useLayer3Filtering |
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.
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().
|
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.
measId | the 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:
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().
void ns3::LteUeRrc::SetAsSapUser | ( | LteAsSapUser * | s | ) |
Set the AS SAP user to interact with the NAS entity.
s | the 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 | ) |
imsi | the 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.
s | the 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
s | the 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
s | the 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
s | the 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 | ) |
val | true 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.
|
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().
|
private |
Definition at line 2748 of file lte-ue-rrc.cc.
References CONNECTED_HANDOVER, CONNECTED_NORMALLY, CONNECTED_PHY_PROBLEM, CONNECTED_REESTABLISHING, IDLE_CAMPED_NORMALLY, IDLE_CELL_SEARCH, IDLE_CONNECTING, IDLE_RANDOM_ACCESS, IDLE_START, IDLE_WAIT_MIB, IDLE_WAIT_MIB_SIB1, IDLE_WAIT_SIB1, IDLE_WAIT_SIB2, m_cellId, m_connectionPending, m_hasReceivedSib2, m_imsi, m_rnti, m_state, m_stateTransitionTrace, NS_ASSERT, NS_FATAL_ERROR, NS_LOG_FUNCTION, NS_LOG_INFO, StartConnection(), and ns3::ToString().
Referenced by DoConnect(), DoForceCampedOnEnb(), DoNotifyRandomAccessFailed(), DoNotifyRandomAccessSuccessful(), DoRecvMasterInformationBlock(), DoRecvRrcConnectionReconfiguration(), DoRecvRrcConnectionReject(), DoRecvRrcConnectionSetup(), DoStartCellSelection(), EvaluateCellForSelection(), LeaveConnectedMode(), StartConnection(), and SynchronizeToStrongestCell().
|
private |
Go through the list of measurement results, choose the one with the strongest RSRP, and tell PHY to synchronize to it.
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().
|
private |
Compose a new reporting entry of the given measurement identity, insert it into m_varMeasReportList, and set it up for submission to eNodeB.
measId | the measurement identity which the new reporting entry will be based upon |
enteringCells | the 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. |
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().
|
private |
Remove the reporting entry of the given measurement identity from m_varMeasReportList.
measId | the 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().
|
private |
Remove some cells from an existing reporting entry in m_varMeasReportList.
measId | the measurement identity to be removed from m_varMeasReportList, must already exists there, otherwise an error would be raised |
leavingCells | the cells which are about to be removed |
reportOnLeave | when true, will make the function send one last measurement report to eNodeB before removing it |
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().
|
friend |
Definition at line 75 of file lte-ue-rrc.h.
|
friend |
Definition at line 76 of file lte-ue-rrc.h.
|
friend |
Definition at line 77 of file lte-ue-rrc.h.
|
friend |
Definition at line 78 of file lte-ue-rrc.h.
|
friend |
Definition at line 73 of file lte-ue-rrc.h.
Referenced by LteUeRrc().
|
friend |
Definition at line 74 of file lte-ue-rrc.h.
|
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().
|
private |
Definition at line 486 of file lte-ue-rrc.h.
Referenced by DoDispose(), GetAsSapProvider(), and LteUeRrc().
|
private |
Definition at line 487 of file lte-ue-rrc.h.
Referenced by DoNotifyRandomAccessFailed(), DoReceivePdcpSdu(), DoRecvRrcConnectionSetup(), LeaveConnectedMode(), and SetAsSapUser().
|
private |
Definition at line 472 of file lte-ue-rrc.h.
Referenced by ApplyRadioResourceConfigDedicated(), Bid2Drbid(), and LeaveConnectedMode().
|
private |
Definition at line 493 of file lte-ue-rrc.h.
Referenced by DoForceCampedOnEnb(), DoNotifyRandomAccessFailed(), DoNotifyRandomAccessSuccessful(), DoRecvMasterInformationBlock(), DoRecvRrcConnectionReconfiguration(), DoRecvRrcConnectionSetup(), DoRecvSystemInformation(), DoRecvSystemInformationBlockType1(), EvaluateCellForSelection(), GetCellId(), MeasurementReportTriggering(), SaveUeMeasurements(), SendMeasurementReport(), and SwitchToState().
|
private |
Definition at line 478 of file lte-ue-rrc.h.
Referenced by ApplyRadioResourceConfigDedicated(), DoInitialize(), DoRecvRrcConnectionReconfiguration(), DoRecvRrcConnectionReject(), DoRecvSystemInformation(), LeaveConnectedMode(), SetLteUeCmacSapProvider(), and StartConnection().
|
private |
Definition at line 477 of file lte-ue-rrc.h.
Referenced by DoDispose(), GetLteUeCmacSapUser(), and LteUeRrc().
|
private |
Definition at line 527 of file lte-ue-rrc.h.
Referenced by DoRecvRrcConnectionSetup(), and GetTypeId().
|
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().
|
private |
Definition at line 529 of file lte-ue-rrc.h.
Referenced by DoRecvRrcConnectionReconfiguration(), and GetTypeId().
|
private |
Definition at line 475 of file lte-ue-rrc.h.
Referenced by ApplyRadioResourceConfigDedicated(), DoForceCampedOnEnb(), DoRecvMasterInformationBlock(), DoRecvRrcConnectionReconfiguration(), DoRecvSystemInformation(), DoSetTemporaryCellRnti(), DoStartCellSelection(), EvaluateCellForSelection(), SetLteUeCphySapProvider(), and SynchronizeToStrongestCell().
|
private |
Definition at line 474 of file lte-ue-rrc.h.
Referenced by DoDispose(), GetLteUeCphySapUser(), and LteUeRrc().
|
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().
|
private |
downlink bandwidth in RBs
Definition at line 504 of file lte-ue-rrc.h.
Referenced by DoRecvMasterInformationBlock(), EvaluateCellForSelection(), and GetDlBandwidth().
|
private |
downlink carrier frequency
Definition at line 507 of file lte-ue-rrc.h.
Referenced by DoForceCampedOnEnb(), DoStartCellSelection(), EvaluateCellForSelection(), GetDlEarfcn(), and SynchronizeToStrongestCell().
|
private |
Definition at line 498 of file lte-ue-rrc.h.
Referenced by ApplyRadioResourceConfigDedicated(), DoDispose(), DoRecvRrcConnectionReconfiguration(), DoSendData(), GetTypeId(), and LeaveConnectedMode().
|
private |
Definition at line 484 of file lte-ue-rrc.h.
Referenced by ApplyRadioResourceConfigDedicated(), DoDispose(), and LteUeRrc().
|
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().
|
private |
Definition at line 535 of file lte-ue-rrc.h.
Referenced by DoNotifyRandomAccessFailed(), and GetTypeId().
|
private |
Definition at line 533 of file lte-ue-rrc.h.
Referenced by DoNotifyRandomAccessSuccessful(), and GetTypeId().
|
private |
Definition at line 531 of file lte-ue-rrc.h.
Referenced by DoRecvRrcConnectionReconfiguration(), and GetTypeId().
|
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().
|
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().
|
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().
|
private |
Definition at line 491 of file lte-ue-rrc.h.
Referenced by ApplyRadioResourceConfigDedicated(), DoConnect(), DoForceCampedOnEnb(), DoNotifyRandomAccessFailed(), DoNotifyRandomAccessSuccessful(), DoRecvMasterInformationBlock(), DoRecvRrcConnectionReconfiguration(), DoRecvRrcConnectionSetup(), DoRecvSystemInformation(), DoRecvSystemInformationBlockType1(), DoSetCsgWhiteList(), DoStartCellSelection(), EvaluateCellForSelection(), GetImsi(), LeaveConnectedMode(), SaveUeMeasurements(), SetImsi(), StartConnection(), and SwitchToState().
|
private |
Definition at line 521 of file lte-ue-rrc.h.
Referenced by EvaluateCellForSelection(), and GetTypeId().
|
private |
Definition at line 519 of file lte-ue-rrc.h.
Referenced by EvaluateCellForSelection(), and GetTypeId().
|
private |
Definition at line 502 of file lte-ue-rrc.h.
Referenced by DoNotifyRandomAccessSuccessful(), and DoRecvRrcConnectionReconfiguration().
|
private |
Stored content of the last SIB1 received.
Definition at line 543 of file lte-ue-rrc.h.
Referenced by DoRecvSystemInformationBlockType1(), and EvaluateCellForSelection().
|
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().
|
private |
Definition at line 483 of file lte-ue-rrc.h.
Referenced by ApplyRadioResourceConfigDedicated(), DoInitialize(), and SetLteMacSapProvider().
|
private |
Definition at line 511 of file lte-ue-rrc.h.
Referenced by DoRecvMasterInformationBlock(), and GetTypeId().
|
private |
Definition at line 525 of file lte-ue-rrc.h.
Referenced by DoNotifyRandomAccessFailed(), and GetTypeId().
|
private |
Definition at line 523 of file lte-ue-rrc.h.
Referenced by DoNotifyRandomAccessSuccessful(), and GetTypeId().
|
private |
Definition at line 492 of file lte-ue-rrc.h.
Referenced by ApplyRadioResourceConfigDedicated(), DoCompleteSetup(), DoInitialize(), DoNotifyRandomAccessFailed(), DoNotifyRandomAccessSuccessful(), DoRecvMasterInformationBlock(), DoRecvRrcConnectionReconfiguration(), DoRecvRrcConnectionReestablishment(), DoRecvRrcConnectionReestablishmentReject(), DoRecvRrcConnectionRelease(), DoRecvRrcConnectionSetup(), DoRecvSystemInformation(), DoRecvSystemInformationBlockType1(), DoSendData(), DoSetTemporaryCellRnti(), GetRnti(), and SwitchToState().
|
private |
Definition at line 481 of file lte-ue-rrc.h.
Referenced by DoDispose(), GetLteUeRrcSapProvider(), and LteUeRrc().
|
private |
Definition at line 480 of file lte-ue-rrc.h.
Referenced by ApplyRadioResourceConfigDedicated(), DoInitialize(), DoNotifyRandomAccessSuccessful(), DoRecvRrcConnectionReconfiguration(), DoRecvRrcConnectionSetup(), SendMeasurementReport(), and SetLteUeRrcSapUser().
|
private |
Definition at line 513 of file lte-ue-rrc.h.
Referenced by DoRecvSystemInformationBlockType1(), and GetTypeId().
|
private |
Definition at line 515 of file lte-ue-rrc.h.
Referenced by DoRecvSystemInformation(), and GetTypeId().
|
private |
Definition at line 495 of file lte-ue-rrc.h.
Referenced by ApplyRadioResourceConfigDedicated(), DoCompleteSetup(), DoInitialize(), DoRecvRrcConnectionReconfiguration(), DoSetTemporaryCellRnti(), and GetTypeId().
|
private |
Definition at line 496 of file lte-ue-rrc.h.
Referenced by ApplyRadioResourceConfigDedicated(), DoCompleteSetup(), DoRecvRrcConnectionReconfiguration(), GetTypeId(), and LeaveConnectedMode().
|
private |
Definition at line 497 of file lte-ue-rrc.h.
Referenced by DisposeOldSrb1(), and DoRecvRrcConnectionReconfiguration().
|
private |
Definition at line 489 of file lte-ue-rrc.h.
Referenced by ApplyRadioResourceConfigDedicated(), DoConnect(), DoDisconnect(), DoForceCampedOnEnb(), DoNotifyRandomAccessFailed(), DoNotifyRandomAccessSuccessful(), DoRecvMasterInformationBlock(), DoRecvRrcConnectionReconfiguration(), DoRecvRrcConnectionReestablishment(), DoRecvRrcConnectionReestablishmentReject(), DoRecvRrcConnectionSetup(), DoRecvSystemInformation(), DoRecvSystemInformationBlockType1(), DoReportUeMeasurements(), DoStartCellSelection(), EvaluateCellForSelection(), GetState(), SaveUeMeasurements(), SwitchToState(), and SynchronizeToStrongestCell().
|
private |
Definition at line 517 of file lte-ue-rrc.h.
Referenced by GetTypeId(), and SwitchToState().
|
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().
|
private |
uplink bandwidth in RBs
Definition at line 505 of file lte-ue-rrc.h.
Referenced by DoRecvSystemInformation(), and GetUlBandwidth().
|
private |
uplink carrier frequency
Definition at line 508 of file lte-ue-rrc.h.
Referenced by DoRecvSystemInformation(), and GetUlEarfcn().
|
private |
Definition at line 500 of file lte-ue-rrc.h.
Referenced by ApplyRadioResourceConfigDedicated(), and SetUseRlcSm().
|
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().
|
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().