#include <lte-enb-rrc.h>
Classes | |
struct | X2uTeidInfo |
Public Types | |
enum | LteEpsBearerToRlcMapping_t { RLC_SM_ALWAYS = 1, RLC_UM_ALWAYS = 2, RLC_AM_ALWAYS = 3, PER_BASED = 4 } |
Public Member Functions | |
LteEnbRrc () | |
virtual | ~LteEnbRrc () |
void | ConfigureCell (uint8_t ulBandwidth, uint8_t dlBandwidth, uint16_t ulEarfcn, uint16_t dlEarfcn, uint16_t cellId) |
void | ConnectionTimeout (uint16_t rnti) |
EpcX2SapUser * | GetEpcX2SapUser () |
LteEnbCmacSapUser * | GetLteEnbCmacSapUser () |
LteEnbCphySapUser * | GetLteEnbCphySapUser () |
LteEnbRrcSapProvider * | GetLteEnbRrcSapProvider () |
EpcEnbS1SapUser * | GetS1SapUser () |
uint32_t | GetSrsPeriodicity () const |
Ptr< UeManager > | GetUeManager (uint16_t rnti) |
bool | SendData (Ptr< Packet > p) |
void | SendHandoverRequest (uint16_t rnti, uint16_t cellId) |
void | SetCellId (uint16_t m_cellId) |
void | SetEpcX2SapProvider (EpcX2SapProvider *s) |
void | SetForwardUpCallback (Callback< void, Ptr< Packet > > cb) |
void | SetLteEnbCmacSapProvider (LteEnbCmacSapProvider *s) |
void | SetLteEnbCphySapProvider (LteEnbCphySapProvider *s) |
void | SetLteEnbRrcSapUser (LteEnbRrcSapUser *s) |
void | SetLteMacSapProvider (LteMacSapProvider *s) |
void | SetS1SapProvider (EpcEnbS1SapProvider *s) |
void | SetSrsPeriodicity (uint32_t p) |
Public Member Functions inherited from ns3::Object | |
void | AggregateObject (Ptr< Object > other) |
void | Dispose (void) |
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) |
Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
SimpleRefCount (const SimpleRefCount &o) | |
uint32_t | GetReferenceCount (void) const |
SimpleRefCount & | operator= (const SimpleRefCount &o) |
void | Ref (void) const |
void | Unref (void) const |
Public Member Functions inherited from ns3::ObjectBase | |
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) |
Static Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
static void | Cleanup (void) |
Static Public Member Functions inherited from ns3::ObjectBase | |
static TypeId | GetTypeId (void) |
Protected Member Functions | |
virtual void | DoDispose (void) |
Protected Member Functions inherited from ns3::Object | |
Object (const Object &o) | |
virtual void | DoInitialize (void) |
virtual void | NotifyNewAggregate (void) |
Protected Member Functions inherited from ns3::ObjectBase | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
virtual void | NotifyConstructionCompleted (void) |
Private Member Functions | |
uint16_t | AddUe (UeManager::State state) |
uint16_t | DoAllocateTemporaryCellRnti () |
void | DoCompleteSetupUe (uint16_t rnti, LteEnbRrcSapProvider::CompleteSetupUeParameters params) |
void | DoDataRadioBearerSetupRequest (EpcEnbS1SapUser::DataRadioBearerSetupRequestParameters params) |
void | DoNotifyLcConfigResult (uint16_t rnti, uint8_t lcid, bool success) |
void | DoPathSwitchRequestAcknowledge (EpcEnbS1SapUser::PathSwitchRequestAcknowledgeParameters params) |
void | DoRecvHandoverPreparationFailure (EpcX2SapUser::HandoverPreparationFailureParams params) |
void | DoRecvHandoverRequest (EpcX2SapUser::HandoverRequestParams params) |
void | DoRecvHandoverRequestAck (EpcX2SapUser::HandoverRequestAckParams params) |
void | DoRecvLoadInformation (EpcX2SapUser::LoadInformationParams params) |
void | DoRecvMeasurementReport (uint16_t rnti, LteRrcSap::MeasurementReport msg) |
void | DoRecvResourceStatusUpdate (EpcX2SapUser::ResourceStatusUpdateParams params) |
void | DoRecvRrcConnectionReconfigurationCompleted (uint16_t rnti, LteRrcSap::RrcConnectionReconfigurationCompleted msg) |
void | DoRecvRrcConnectionReestablishmentComplete (uint16_t rnti, LteRrcSap::RrcConnectionReestablishmentComplete msg) |
void | DoRecvRrcConnectionReestablishmentRequest (uint16_t rnti, LteRrcSap::RrcConnectionReestablishmentRequest msg) |
void | DoRecvRrcConnectionRequest (uint16_t rnti, LteRrcSap::RrcConnectionRequest msg) |
void | DoRecvRrcConnectionSetupCompleted (uint16_t rnti, LteRrcSap::RrcConnectionSetupCompleted msg) |
void | DoRecvSnStatusTransfer (EpcX2SapUser::SnStatusTransferParams params) |
void | DoRecvUeContextRelease (EpcX2SapUser::UeContextReleaseParams params) |
void | DoRecvUeData (EpcX2SapUser::UeDataParams params) |
void | DoRrcConfigurationUpdateInd (LteEnbCmacSapUser::UeConfig params) |
uint8_t | GetLogicalChannelGroup (EpsBearer bearer) |
uint8_t | GetLogicalChannelPriority (EpsBearer bearer) |
uint16_t | GetNewSrsConfigurationIndex (void) |
TypeId | GetRlcType (EpsBearer bearer) |
void | RemoveSrsConfigurationIndex (uint16_t srcCi) |
void | RemoveUe (uint16_t rnti) |
void | SendSystemInformation () |
Private Attributes | |
bool | m_admitHandoverRequest |
bool | m_admitRrcConnectionRequest |
uint16_t | m_cellId |
LteEnbCmacSapProvider * | m_cmacSapProvider |
LteEnbCmacSapUser * | m_cmacSapUser |
bool | m_configured |
TracedCallback< uint64_t, uint16_t, uint16_t > | m_connectionEstablishedTrace |
TracedCallback< uint64_t, uint16_t, uint16_t > | m_connectionReconfigurationTrace |
LteEnbCphySapProvider * | m_cphySapProvider |
LteEnbCphySapUser * | m_cphySapUser |
uint8_t | m_defaultTransmissionMode |
uint16_t | m_dlBandwidth |
uint16_t | m_dlEarfcn |
enum LteEpsBearerToRlcMapping_t | m_epsBearerToRlcMapping |
Callback< void, Ptr< Packet > > | m_forwardUpCallback |
TracedCallback< uint64_t, uint16_t, uint16_t > | m_handoverEndOkTrace |
TracedCallback< uint64_t, uint16_t, uint16_t, uint16_t > | m_handoverStartTrace |
uint16_t | m_lastAllocatedConfigurationIndex |
uint16_t | m_lastAllocatedRnti |
LteMacSapProvider * | m_macSapProvider |
TracedCallback< uint16_t, uint16_t > | m_newUeContextTrace |
bool | m_reconfigureUes |
LteEnbRrcSapProvider * | m_rrcSapProvider |
LteEnbRrcSapUser * | m_rrcSapUser |
EpcEnbS1SapProvider * | m_s1SapProvider |
EpcEnbS1SapUser * | m_s1SapUser |
uint16_t | m_srsCurrentPeriodicityId |
Time | m_systemInformationPeriodicity |
std::map< uint16_t, Ptr < UeManager > > | m_ueMap |
std::set< uint16_t > | m_ueSrsConfigurationIndexSet |
uint16_t | m_ulBandwidth |
uint16_t | m_ulEarfcn |
EpcX2SapProvider * | m_x2SapProvider |
EpcX2SapUser * | m_x2SapUser |
std::map< uint32_t, X2uTeidInfo > | m_x2uTeidInfoMap |
Friends | |
class | EnbRrcMemberLteEnbCmacSapUser |
class | EpcX2SpecificEpcX2SapUser< LteEnbRrc > |
class | MemberEpcEnbS1SapUser< LteEnbRrc > |
class | MemberLteEnbRrcSapProvider< LteEnbRrc > |
class | UeManager |
The LTE Radio Resource Control entity at the eNB
ns3::LteEnbRrc is accessible through the following paths with Config::Set and Config::Connect:
Definition at line 403 of file lte-enb-rrc.h.
Identifies how EPS Bearer parameters are mapped to different RLC types
Definition at line 585 of file lte-enb-rrc.h.
ns3::LteEnbRrc::LteEnbRrc | ( | ) |
create an RRC instance for use within an eNB
Definition at line 1160 of file lte-enb-rrc.cc.
References NS_LOG_FUNCTION.
|
virtual |
|
private |
Allocate a new RNTI for a new UE. This is done in the following cases:
state | the initial state of the UeManager |
Definition at line 1714 of file lte-enb-rrc.cc.
References NS_ASSERT_MSG, NS_LOG_DEBUG, and NS_LOG_FUNCTION.
void ns3::LteEnbRrc::ConfigureCell | ( | uint8_t | ulBandwidth, |
uint8_t | dlBandwidth, | ||
uint16_t | ulEarfcn, | ||
uint16_t | dlEarfcn, | ||
uint16_t | cellId | ||
) |
configure cell-specific parameters
ulBandwidth | the uplink bandwidth in number of RB |
dlBandwidth | the downlink bandwidth in number of RB |
ulEarfcn | the UL EARFCN |
dlEarfcn | the DL EARFCN |
cellId | the ID of the cell |
Definition at line 1353 of file lte-enb-rrc.cc.
References ns3::LteEnbCmacSapProvider::ConfigureMac(), ns3::MilliSeconds(), NS_ASSERT, NS_LOG_FUNCTION, ns3::Simulator::Schedule(), SendSystemInformation(), ns3::LteEnbCphySapProvider::SetBandwidth(), ns3::LteEnbCphySapProvider::SetCellId(), ns3::LteEnbCphySapProvider::SetEarfcn(), and ns3::LteEnbCphySapProvider::SetMasterInformationBlock().
void ns3::LteEnbRrc::ConnectionTimeout | ( | uint16_t | rnti | ) |
Method triggered when a UE is expected to get connected but does not do so in a reasonable time
rnti | the T-C-RNTI whose timeout expired |
Definition at line 1403 of file lte-enb-rrc.cc.
References NS_LOG_FUNCTION, and RemoveUe().
Referenced by ns3::UeManager::DoInitialize().
|
protectedvirtual |
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 1191 of file lte-enb-rrc.cc.
References NS_LOG_FUNCTION.
EpcX2SapUser * ns3::LteEnbRrc::GetEpcX2SapUser | ( | ) |
Get the X2 SAP offered by this RRC
Definition at line 1274 of file lte-enb-rrc.cc.
References NS_LOG_FUNCTION.
|
private |
bearer | the characteristics of the bearer |
Definition at line 1896 of file lte-enb-rrc.cc.
References ns3::EpsBearer::IsGbr().
|
private |
bearer | the characteristics of the bearer |
Definition at line 1909 of file lte-enb-rrc.cc.
LteEnbCmacSapUser * ns3::LteEnbRrc::GetLteEnbCmacSapUser | ( | ) |
Get the CMAC SAP offered by this RRC
Definition at line 1288 of file lte-enb-rrc.cc.
References NS_LOG_FUNCTION.
LteEnbCphySapUser * ns3::LteEnbRrc::GetLteEnbCphySapUser | ( | ) |
Definition at line 1336 of file lte-enb-rrc.cc.
References NS_LOG_FUNCTION.
LteEnbRrcSapProvider * ns3::LteEnbRrc::GetLteEnbRrcSapProvider | ( | ) |
Definition at line 1302 of file lte-enb-rrc.cc.
References NS_LOG_FUNCTION.
|
private |
Allocate a new SRS configuration index for a new UE.
Definition at line 1833 of file lte-enb-rrc.cc.
References NS_ASSERT, NS_FATAL_ERROR, NS_LOG_DEBUG, and NS_LOG_FUNCTION.
bearer | the specification of an EPS bearer |
Definition at line 1759 of file lte-enb-rrc.cc.
References ns3::EpsBearer::GetPacketErrorLossRate().
EpcEnbS1SapUser * ns3::LteEnbRrc::GetS1SapUser | ( | ) |
Definition at line 1323 of file lte-enb-rrc.cc.
uint32_t ns3::LteEnbRrc::GetSrsPeriodicity | ( | ) | const |
Definition at line 1823 of file lte-enb-rrc.cc.
References NS_ASSERT, and NS_LOG_FUNCTION.
rnti | the identifier of an UE |
Definition at line 1343 of file lte-enb-rrc.cc.
References NS_ASSERT, NS_ASSERT_MSG, and NS_LOG_FUNCTION.
Referenced by SendData(), and SendHandoverRequest().
|
private |
remove a previously allocated SRS configuration index
srcCi | the indext to be removed |
Definition at line 1887 of file lte-enb-rrc.cc.
References NS_ASSERT_MSG, and NS_LOG_FUNCTION.
Referenced by RemoveUe().
|
private |
remove a UE from the cell
rnti | the C-RNTI identiftying the user |
Definition at line 1741 of file lte-enb-rrc.cc.
References NS_ASSERT_MSG, NS_LOG_FUNCTION, RemoveSrsConfigurationIndex(), ns3::LteEnbCmacSapProvider::RemoveUe(), ns3::LteEnbCphySapProvider::RemoveUe(), and ns3::EpcEnbS1SapProvider::UeContextRelease().
Referenced by ConnectionTimeout().
Enqueue an IP data packet on the proper bearer for downlink transmission. Normally expected to be called by the NetDevice forwarding a packet coming from the EpcEnbApplication
p | the packet |
Definition at line 1383 of file lte-enb-rrc.cc.
References GetUeManager(), NS_ASSERT_MSG, NS_LOG_FUNCTION, and ns3::Packet::RemovePacketTag().
void ns3::LteEnbRrc::SendHandoverRequest | ( | uint16_t | rnti, |
uint16_t | cellId | ||
) |
Send a HandoverRequest through the X2 SAP interface
This method will trigger a handover which is started by the RRC by sending a handover request to the target eNB over the X2 interface
imsi | the id of the UE to be handed over |
cellId | the id of the target eNB |
Definition at line 1411 of file lte-enb-rrc.cc.
References GetUeManager(), NS_ASSERT, NS_LOG_FUNCTION, and NS_LOG_LOGIC.
|
private |
method used to periodically send System Information
Definition at line 1915 of file lte-enb-rrc.cc.
References ns3::LteEnbCmacSapProvider::GetRachConfig(), NS_LOG_FUNCTION, and ns3::Simulator::Schedule().
Referenced by ConfigureCell().
void ns3::LteEnbRrc::SetCellId | ( | uint16_t | m_cellId | ) |
void ns3::LteEnbRrc::SetEpcX2SapProvider | ( | EpcX2SapProvider * | s | ) |
Set the X2 SAP this RRC should interact with
s | the X2 SAP Provider to be used by this RRC entity |
Definition at line 1267 of file lte-enb-rrc.cc.
References NS_LOG_FUNCTION.
set the callback used to forward data packets up the stack
void | |
cb |
Definition at line 1397 of file lte-enb-rrc.cc.
void ns3::LteEnbRrc::SetLteEnbCmacSapProvider | ( | LteEnbCmacSapProvider * | s | ) |
set the CMAC SAP this RRC should interact with
s | the CMAC SAP Provider to be used by this RRC |
Definition at line 1281 of file lte-enb-rrc.cc.
References NS_LOG_FUNCTION.
void ns3::LteEnbRrc::SetLteEnbCphySapProvider | ( | LteEnbCphySapProvider * | s | ) |
set the CPHY SAP this RRC should use to interact with the PHY
s | the CPHY SAP Provider |
Definition at line 1329 of file lte-enb-rrc.cc.
References NS_LOG_FUNCTION.
void ns3::LteEnbRrc::SetLteEnbRrcSapUser | ( | LteEnbRrcSapUser * | s | ) |
set the RRC SAP this RRC should interact with
s | the RRC SAP User to be used by this RRC |
Definition at line 1295 of file lte-enb-rrc.cc.
References NS_LOG_FUNCTION.
void ns3::LteEnbRrc::SetLteMacSapProvider | ( | LteMacSapProvider * | s | ) |
set the MAC SAP provider. The eNB 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 1309 of file lte-enb-rrc.cc.
References NS_LOG_FUNCTION.
void ns3::LteEnbRrc::SetS1SapProvider | ( | EpcEnbS1SapProvider * | s | ) |
Set the S1 SAP Provider
s | the S1 SAP Provider |
Definition at line 1316 of file lte-enb-rrc.cc.
void ns3::LteEnbRrc::SetSrsPeriodicity | ( | uint32_t | p | ) |
p | the SRS periodicity in num TTIs |
Definition at line 1802 of file lte-enb-rrc.cc.
References NS_FATAL_ERROR, and NS_LOG_FUNCTION.