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

#include <epc-ue-nas.h>

+ Inheritance diagram for ns3::EpcUeNas:
+ Collaboration diagram for ns3::EpcUeNas:

Classes

struct  BearerToBeActivated
 

Public Types

enum  State {
  OFF = 0, ATTACHING, IDLE_REGISTERED, CONNECTING_TO_EPC,
  ACTIVE, NUM_STATES
}
 Definition of NAS states as per "LTE - From theory to practice", Section 3.2.3.2 "Connection Establishment and Release". More...
 

Public Member Functions

 EpcUeNas ()
 Constructor. More...
 
virtual ~EpcUeNas ()
 Destructor. More...
 
void ActivateEpsBearer (EpsBearer bearer, Ptr< EpcTft > tft)
 Activate an EPS bearer. More...
 
void Connect ()
 Causes NAS to tell AS to go to ACTIVE state. More...
 
void Connect (uint16_t cellId, uint16_t dlEarfcn)
 Causes NAS to tell AS to camp to a specific cell and go to ACTIVE state. More...
 
void Disconnect ()
 instruct the NAS to disconnect More...
 
virtual void DoDispose (void)
 This method is called by Object::Dispose or by the object's destructor, whichever comes first. More...
 
LteAsSapUserGetAsSapUser ()
 
uint32_t GetCsgId () const
 
State GetState () const
 
bool Send (Ptr< Packet > p)
 Enqueue an IP packet on the proper bearer for uplink transmission. More...
 
void SetAsSapProvider (LteAsSapProvider *s)
 Set the AS SAP provider to interact with the NAS entity. More...
 
void SetCsgId (uint32_t csgId)
 
void SetDevice (Ptr< NetDevice > dev)
 
void SetForwardUpCallback (Callback< void, Ptr< Packet > > cb)
 set the callback used to forward data packets up the stack More...
 
void SetImsi (uint64_t imsi)
 
void StartCellSelection (uint16_t dlEarfcn)
 Causes NAS to tell AS to find a suitable cell and camp to it. More...
 
- 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 Member Functions

void DoActivateEpsBearer (EpsBearer bearer, Ptr< EpcTft > tft)
 
void DoNotifyConnectionFailed ()
 
void DoNotifyConnectionReleased ()
 
void DoNotifyConnectionSuccessful ()
 
void DoRecvData (Ptr< Packet > packet)
 
void SwitchToState (State s)
 

Private Attributes

LteAsSapProviderm_asSapProvider
 
LteAsSapUserm_asSapUser
 
std::list< BearerToBeActivatedm_bearersToBeActivatedList
 
uint8_t m_bidCounter
 
uint32_t m_csgId
 
Ptr< NetDevicem_device
 
Callback< void, Ptr< Packet > > m_forwardUpCallback
 
uint64_t m_imsi
 
State m_state
 
TracedCallback< State, Statem_stateTransitionCallback
 
EpcTftClassifier m_tftClassifier
 

Friends

class MemberLteAsSapUser< EpcUeNas >
 

Additional Inherited Members

- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
 
virtual void DoInitialize (void)
 This method is called only once by Object::Initialize. More...
 
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::EpcUeNas is accessible through the following paths with Config::Set and Config::Connect:

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

No Attributes are defined for this type.

TraceSources

  • StateTransition: fired upon every UE NAS state transition

Definition at line 34 of file epc-ue-nas.h.

Member Enumeration Documentation

Definition of NAS states as per "LTE - From theory to practice", Section 3.2.3.2 "Connection Establishment and Release".

Enumerator
OFF 
ATTACHING 
IDLE_REGISTERED 
CONNECTING_TO_EPC 
ACTIVE 
NUM_STATES 

Definition at line 156 of file epc-ue-nas.h.

Constructor & Destructor Documentation

ns3::EpcUeNas::EpcUeNas ( )

Constructor.

Definition at line 58 of file epc-ue-nas.cc.

References m_asSapUser, and NS_LOG_FUNCTION.

ns3::EpcUeNas::~EpcUeNas ( )
virtual

Destructor.

Definition at line 69 of file epc-ue-nas.cc.

References NS_LOG_FUNCTION.

Member Function Documentation

void ns3::EpcUeNas::ActivateEpsBearer ( EpsBearer  bearer,
Ptr< EpcTft tft 
)

Activate an EPS bearer.

Parameters
bearerthe characteristics of the bearer to be created
tftthe TFT identifying the traffic that will go on this bearer

Definition at line 183 of file epc-ue-nas.cc.

References ACTIVE, ns3::EpcUeNas::BearerToBeActivated::bearer, m_bearersToBeActivatedList, m_state, NS_FATAL_ERROR, NS_LOG_FUNCTION, and ns3::EpcUeNas::BearerToBeActivated::tft.

void ns3::EpcUeNas::Connect ( )

Causes NAS to tell AS to go to ACTIVE state.

The end result is equivalent with EMM Registered + ECM Connected states.

Definition at line 152 of file epc-ue-nas.cc.

References ns3::LteAsSapProvider::Connect(), m_asSapProvider, and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

void ns3::EpcUeNas::Connect ( uint16_t  cellId,
uint16_t  dlEarfcn 
)

Causes NAS to tell AS to camp to a specific cell and go to ACTIVE state.

Parameters
cellIdthe id of the eNB to camp on
dlEarfcnthe DL frequency of the eNB

The end result is equivalent with EMM Registered + ECM Connected states. Since RRC Idle Mode cell selection is not supported yet, we force the UE RRC to be camped on a specific eNB.

Definition at line 161 of file epc-ue-nas.cc.

References ns3::LteAsSapProvider::Connect(), ns3::LteAsSapProvider::ForceCampedOnEnb(), m_asSapProvider, and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

void ns3::EpcUeNas::Disconnect ( )

instruct the NAS to disconnect

Definition at line 174 of file epc-ue-nas.cc.

References ns3::LteAsSapProvider::Disconnect(), m_asSapProvider, NS_LOG_FUNCTION, OFF, and SwitchToState().

+ Here is the call graph for this function:

void ns3::EpcUeNas::DoActivateEpsBearer ( EpsBearer  bearer,
Ptr< EpcTft tft 
)
private

Definition at line 268 of file epc-ue-nas.cc.

References ns3::EpcTftClassifier::Add(), m_bidCounter, m_tftClassifier, NS_ASSERT_MSG, and NS_LOG_FUNCTION.

Referenced by SwitchToState().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void ns3::EpcUeNas::DoDispose ( void  )
virtual

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 75 of file epc-ue-nas.cc.

References m_asSapUser, and NS_LOG_FUNCTION.

void ns3::EpcUeNas::DoNotifyConnectionFailed ( )
private
Todo:
Currently not implemented, action by NAS and upper layers after UE fails to switch to CONNNECTED mode. Maybe a retry, or just stop here and fire a trace to let user know.

Definition at line 241 of file epc-ue-nas.cc.

References NS_LOG_FUNCTION, OFF, and SwitchToState().

+ Here is the call graph for this function:

void ns3::EpcUeNas::DoNotifyConnectionReleased ( )
private

Definition at line 261 of file epc-ue-nas.cc.

References NS_LOG_FUNCTION, OFF, and SwitchToState().

+ Here is the call graph for this function:

void ns3::EpcUeNas::DoNotifyConnectionSuccessful ( )
private

Definition at line 233 of file epc-ue-nas.cc.

References ACTIVE, NS_LOG_FUNCTION, and SwitchToState().

+ Here is the call graph for this function:

void ns3::EpcUeNas::DoRecvData ( Ptr< Packet packet)
private

Definition at line 254 of file epc-ue-nas.cc.

References m_forwardUpCallback, and NS_LOG_FUNCTION.

LteAsSapUser * ns3::EpcUeNas::GetAsSapUser ( )
Returns
the AS SAP user exported by this RRC

Definition at line 131 of file epc-ue-nas.cc.

References m_asSapUser, and NS_LOG_FUNCTION.

uint32_t ns3::EpcUeNas::GetCsgId ( ) const
Returns
csgId Closed Subscriber Group identity

Definition at line 117 of file epc-ue-nas.cc.

References m_csgId, and NS_LOG_FUNCTION.

EpcUeNas::State ns3::EpcUeNas::GetState ( void  ) const
Returns
The current state

Definition at line 277 of file epc-ue-nas.cc.

References m_state, and NS_LOG_FUNCTION.

TypeId ns3::EpcUeNas::GetTypeId ( void  )
static

Definition at line 82 of file epc-ue-nas.cc.

References m_stateTransitionCallback, ns3::MakeTraceSourceAccessor(), and ns3::TypeId::SetParent().

+ Here is the call graph for this function:

bool ns3::EpcUeNas::Send ( Ptr< Packet p)

Enqueue an IP packet on the proper bearer for uplink transmission.

Parameters
pthe packet
Returns
true if successful, false if an error occurred

Definition at line 202 of file epc-ue-nas.cc.

References ACTIVE, ns3::EpcTftClassifier::Classify(), m_asSapProvider, m_state, m_tftClassifier, NS_ASSERT, NS_LOG_FUNCTION, NS_LOG_WARN, ns3::LteAsSapProvider::SendData(), and ns3::EpcTft::UPLINK.

+ Here is the call graph for this function:

void ns3::EpcUeNas::SetAsSapProvider ( LteAsSapProvider s)

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

Parameters
sthe AS SAP provider

Definition at line 124 of file epc-ue-nas.cc.

References m_asSapProvider, NS_LOG_FUNCTION, and s.

void ns3::EpcUeNas::SetCsgId ( uint32_t  csgId)
Parameters
csgIdClosed Subscriber Group identity

Definition at line 109 of file epc-ue-nas.cc.

References m_asSapProvider, m_csgId, NS_LOG_FUNCTION, and ns3::LteAsSapProvider::SetCsgWhiteList().

+ Here is the call graph for this function:

void ns3::EpcUeNas::SetDevice ( Ptr< NetDevice dev)
Parameters
devthe UE NetDevice

Definition at line 95 of file epc-ue-nas.cc.

References m_device, and NS_LOG_FUNCTION.

void ns3::EpcUeNas::SetForwardUpCallback ( Callback< void, Ptr< Packet > >  cb)

set the callback used to forward data packets up the stack

Parameters
cbthe callback

Definition at line 138 of file epc-ue-nas.cc.

References m_forwardUpCallback, and NS_LOG_FUNCTION.

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

Definition at line 102 of file epc-ue-nas.cc.

References m_imsi, and NS_LOG_FUNCTION.

void ns3::EpcUeNas::StartCellSelection ( uint16_t  dlEarfcn)

Causes NAS to tell AS to find a suitable cell and camp to it.

Parameters
dlEarfcnthe DL frequency of the eNB

Definition at line 145 of file epc-ue-nas.cc.

References m_asSapProvider, NS_LOG_FUNCTION, and ns3::LteAsSapProvider::StartCellSelection().

+ Here is the call graph for this function:

void ns3::EpcUeNas::SwitchToState ( State  s)
private

Definition at line 284 of file epc-ue-nas.cc.

References ACTIVE, DoActivateEpsBearer(), m_bearersToBeActivatedList, m_imsi, m_state, m_stateTransitionCallback, NS_LOG_FUNCTION, NS_LOG_INFO, and ns3::ToString().

Referenced by Disconnect(), DoNotifyConnectionFailed(), DoNotifyConnectionReleased(), and DoNotifyConnectionSuccessful().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Friends And Related Function Documentation

friend class MemberLteAsSapUser< EpcUeNas >
friend

Definition at line 36 of file epc-ue-nas.h.

Member Data Documentation

LteAsSapProvider* ns3::EpcUeNas::m_asSapProvider
private

Definition at line 194 of file epc-ue-nas.h.

Referenced by Connect(), Disconnect(), Send(), SetAsSapProvider(), SetCsgId(), and StartCellSelection().

LteAsSapUser* ns3::EpcUeNas::m_asSapUser
private

Definition at line 195 of file epc-ue-nas.h.

Referenced by DoDispose(), EpcUeNas(), and GetAsSapUser().

std::list<BearerToBeActivated> ns3::EpcUeNas::m_bearersToBeActivatedList
private

Definition at line 208 of file epc-ue-nas.h.

Referenced by ActivateEpsBearer(), and SwitchToState().

uint8_t ns3::EpcUeNas::m_bidCounter
private

Definition at line 197 of file epc-ue-nas.h.

Referenced by DoActivateEpsBearer().

uint32_t ns3::EpcUeNas::m_csgId
private

Definition at line 192 of file epc-ue-nas.h.

Referenced by GetCsgId(), and SetCsgId().

Ptr<NetDevice> ns3::EpcUeNas::m_device
private

Definition at line 188 of file epc-ue-nas.h.

Referenced by SetDevice().

Callback<void, Ptr<Packet> > ns3::EpcUeNas::m_forwardUpCallback
private

Definition at line 200 of file epc-ue-nas.h.

Referenced by DoRecvData(), and SetForwardUpCallback().

uint64_t ns3::EpcUeNas::m_imsi
private

Definition at line 190 of file epc-ue-nas.h.

Referenced by SetImsi(), and SwitchToState().

State ns3::EpcUeNas::m_state
private

Definition at line 184 of file epc-ue-nas.h.

Referenced by ActivateEpsBearer(), GetState(), Send(), and SwitchToState().

TracedCallback<State, State> ns3::EpcUeNas::m_stateTransitionCallback
private

Definition at line 186 of file epc-ue-nas.h.

Referenced by GetTypeId(), and SwitchToState().

EpcTftClassifier ns3::EpcUeNas::m_tftClassifier
private

Definition at line 198 of file epc-ue-nas.h.

Referenced by DoActivateEpsBearer(), and Send().


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