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

#include <lte-rlc-um.h>

+ Inheritance diagram for ns3::LteRlcUm:

Public Member Functions

virtual void DoDispose ()
 
virtual void DoNotifyHarqDeliveryFailure ()
 
virtual void DoNotifyTxOpportunity (uint32_t bytes, uint8_t layer, uint8_t harqId)
 
virtual void DoReceivePdu (Ptr< Packet > p)
 
virtual void DoTransmitPdcpPdu (Ptr< Packet > p)
 
- Public Member Functions inherited from ns3::LteRlc
LteMacSapUserGetLteMacSapUser ()
 
LteRlcSapProviderGetLteRlcSapProvider ()
 
void SetLcId (uint8_t lcId)
 
void SetLteMacSapProvider (LteMacSapProvider *s)
 
void SetLteRlcSapUser (LteRlcSapUser *s)
 
void SetRnti (uint16_t rnti)
 
- 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
 
SimpleRefCountoperator= (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::LteRlc
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)
 

Private Types

enum  ReassemblingState_t { NONE = 0, WAITING_S0_FULL = 1, WAITING_SI_SF = 2 }
 

Private Member Functions

void DoReportBufferStatus ()
 
void ExpireRbsTimer (void)
 
void ExpireReorderingTimer (void)
 
bool IsInsideReorderingWindow (SequenceNumber10 seqNumber)
 
void ReassembleAndDeliver (Ptr< Packet > packet)
 
void ReassembleOutsideWindow (void)
 
void ReassembleSnInterval (SequenceNumber10 lowSeqNumber, SequenceNumber10 highSeqNumber)
 

Private Attributes

SequenceNumber10 m_expectedSeqNumber
 
Ptr< Packetm_keepS0
 
uint32_t m_maxTxBufferSize
 
EventId m_rbsTimer
 
std::vector< Ptr< Packet > > m_reasBuffer
 
ReassemblingState_t m_reassemblingState
 
EventId m_reorderingTimer
 
std::map< uint16_t, Ptr< Packet > > m_rxBuffer
 
std::list< Ptr< Packet > > m_sdusBuffer
 
SequenceNumber10 m_sequenceNumber
 
std::vector< Ptr< Packet > > m_txBuffer
 
uint32_t m_txBufferSize
 
SequenceNumber10 m_vrUh
 
SequenceNumber10 m_vrUr
 
SequenceNumber10 m_vrUx
 
uint16_t m_windowSize
 

Additional Inherited Members

- 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)
 
- Protected Attributes inherited from ns3::LteRlc
uint8_t m_lcid
 
LteMacSapProviderm_macSapProvider
 
LteMacSapUserm_macSapUser
 
LteRlcSapProviderm_rlcSapProvider
 
LteRlcSapUserm_rlcSapUser
 
uint16_t m_rnti
 
TracedCallback< uint16_t,
uint8_t, uint32_t, uint64_t > 
m_rxPdu
 
TracedCallback< uint16_t,
uint8_t, uint32_t > 
m_txPdu
 

Detailed Description

LTE RLC Unacknowledged Mode (UM), see 3GPP TS 36.322

Config Paths

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

  • /NodeList/[i]/DeviceList/[i]/$ns3::LteEnbNetDevice/LteEnbRrc/UeMap/[i]/DataRadioBearerMap/[i]/LteRlc/$ns3::LteRlcUm
  • /NodeList/[i]/DeviceList/[i]/$ns3::LteEnbNetDevice/LteEnbRrc/UeMap/[i]/Srb0/LteRlc/$ns3::LteRlcUm
  • /NodeList/[i]/DeviceList/[i]/$ns3::LteEnbNetDevice/LteEnbRrc/UeMap/[i]/Srb1/LteRlc/$ns3::LteRlcUm
  • /NodeList/[i]/DeviceList/[i]/$ns3::LteNetDevice/$ns3::LteEnbNetDevice/LteEnbRrc/UeMap/[i]/DataRadioBearerMap/[i]/LteRlc/$ns3::LteRlcUm
  • /NodeList/[i]/DeviceList/[i]/$ns3::LteNetDevice/$ns3::LteEnbNetDevice/LteEnbRrc/UeMap/[i]/Srb0/LteRlc/$ns3::LteRlcUm
  • /NodeList/[i]/DeviceList/[i]/$ns3::LteNetDevice/$ns3::LteEnbNetDevice/LteEnbRrc/UeMap/[i]/Srb1/LteRlc/$ns3::LteRlcUm
  • /NodeList/[i]/DeviceList/[i]/$ns3::LteNetDevice/$ns3::LteUeNetDevice/LteUeRrc/DataRadioBearerMap/[i]/LteRlc/$ns3::LteRlcUm
  • /NodeList/[i]/DeviceList/[i]/$ns3::LteNetDevice/$ns3::LteUeNetDevice/LteUeRrc/Srb0/LteRlc/$ns3::LteRlcUm
  • /NodeList/[i]/DeviceList/[i]/$ns3::LteNetDevice/$ns3::LteUeNetDevice/LteUeRrc/Srb1/LteRlc/$ns3::LteRlcUm
  • /NodeList/[i]/DeviceList/[i]/$ns3::LteUeNetDevice/LteUeRrc/DataRadioBearerMap/[i]/LteRlc/$ns3::LteRlcUm
  • /NodeList/[i]/DeviceList/[i]/$ns3::LteUeNetDevice/LteUeRrc/Srb0/LteRlc/$ns3::LteRlcUm
  • /NodeList/[i]/DeviceList/[i]/$ns3::LteUeNetDevice/LteUeRrc/Srb1/LteRlc/$ns3::LteRlcUm

Attributes

  • MaxTxBufferSize: Maximum Size of the Transmission Buffer (in Bytes)

No TraceSources are defined for this type.

TraceSources defined in parent class ns3::LteRlc

  • TxPDU: PDU transmission notified to the MAC.
  • RxPDU: PDU received.

Definition at line 35 of file lte-rlc-um.h.

Member Enumeration Documentation

Reassembling state

Definition at line 100 of file lte-rlc-um.h.

Member Function Documentation

void ns3::LteRlcUm::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::LteRlc.

Definition at line 70 of file lte-rlc-um.cc.

References ns3::EventId::Cancel(), ns3::LteRlc::DoDispose(), m_reorderingTimer, and NS_LOG_FUNCTION.

void ns3::LteRlcUm::DoTransmitPdcpPdu ( Ptr< Packet p)
virtual

RLC SAP

Store arrival time

Store PDCP PDU

Report Buffer Status

Implements ns3::LteRlc.

Definition at line 84 of file lte-rlc-um.cc.

References ns3::Packet::AddPacketTag(), ns3::EventId::Cancel(), ns3::Packet::GetSize(), ns3::Simulator::Now(), NS_LOG_FUNCTION, and NS_LOG_LOGIC.

void ns3::LteRlcUm::ReassembleAndDeliver ( Ptr< Packet packet)
private

Deliver one or multiple PDUs

Deliver full PDUs

Keep S0

Discard SI or SN

Deliver zero, one or multiple PDUs

Discard SI or SN

Deliver zero, one or multiple PDUs

Keep S0

ERROR: Transition not possible

Deliver (Kept)S0 + SN

Deliver zero, one or multiple PDUs

Keep SI

Deliver (Kept)S0 + SN

Deliver zero, one or multiple PDUs

Keep S0

ERROR: Transition not possible

Deliver one or multiple PDUs

Deliver full PDUs

Keep S0

Discard SN

Deliver zero, one or multiple PDUs

Discard SI or SN

Deliver zero, one or multiple PDUs

Keep S0

ERROR: Transition not possible

Discard S0

Deliver one or multiple PDUs

Discard S0

Deliver zero, one or multiple PDUs

Keep S0

Discard S0

Discard SI or SN

Deliver zero, one or multiple PDUs

Discard S0

Discard SI or SN

Deliver zero, one or multiple PDUs

Keep S0

ERROR: Transition not possible

Definition at line 587 of file lte-rlc-um.cc.

References ns3::Packet::AddAtEnd(), ns3::Packet::CreateFragment(), ns3::Packet::GetSize(), m_expectedSeqNumber, NS_LOG_LOGIC, ns3::LteRlcSapUser::ReceivePdcpPdu(), ns3::Packet::RemoveAtStart(), and ns3::Packet::RemoveHeader().

Member Data Documentation

SequenceNumber10 ns3::LteRlcUm::m_expectedSeqNumber
private

Expected Sequence Number

Definition at line 109 of file lte-rlc-um.h.

Referenced by ReassembleAndDeliver().

EventId ns3::LteRlcUm::m_reorderingTimer
private

Timers. See section 7.3 in TS 36.322

Definition at line 94 of file lte-rlc-um.h.

Referenced by DoDispose().

SequenceNumber10 ns3::LteRlcUm::m_sequenceNumber
private

State variables. See section 7.1 in TS 36.322

Definition at line 80 of file lte-rlc-um.h.

Referenced by DoNotifyTxOpportunity().

uint16_t ns3::LteRlcUm::m_windowSize
private

Constants. See section 7.2 in TS 36.322

Definition at line 89 of file lte-rlc-um.h.


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