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

#include <lte-rlc-am.h>

+ Inheritance diagram for ns3::LteRlcAm:

Classes

struct  PduBuffer
 
struct  RetxBuffer
 

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 ExpirePollRetransmitTimer (void)
 
void ExpireReorderingTimer (void)
 
bool IsInsideReceivingWindow (SequenceNumber10 seqNumber)
 
void ReassembleAndDeliver (Ptr< Packet > packet)
 

Private Attributes

uint32_t m_byteWithoutPoll
 
Ptr< Packetm_controlPduBuffer
 
SequenceNumber10 m_expectedSeqNumber
 
Ptr< Packetm_keepS0
 
uint16_t m_maxRetxThreshold
 
uint32_t m_pduWithoutPoll
 
uint16_t m_pollByte
 
uint16_t m_pollPdu
 
EventId m_pollRetransmitTimer
 
Time m_pollRetransmitTimerValue
 
SequenceNumber10 m_pollSn
 
ReassemblingState_t m_reassemblingState
 
EventId m_reorderingTimer
 
std::vector< RetxBufferm_retxBuffer
 
uint32_t m_retxBufferSize
 
std::map< uint16_t, PduBufferm_rxonBuffer
 
std::list< Ptr< Packet > > m_sdusBuffer
 
uint32_t m_statusPduBufferSize
 
bool m_statusPduRequested
 
EventId m_statusProhibitTimer
 
std::vector< Ptr< Packet > > m_txedBuffer
 
uint32_t m_txedBufferSize
 
std::vector< Ptr< Packet > > m_txonBuffer
 
uint32_t m_txonBufferSize
 
SequenceNumber10 m_vrH
 
SequenceNumber10 m_vrMr
 
SequenceNumber10 m_vrMs
 
SequenceNumber10 m_vrR
 
SequenceNumber10 m_vrX
 
SequenceNumber10 m_vtA
 
SequenceNumber10 m_vtMs
 
SequenceNumber10 m_vtS
 
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 Acknowledged Mode (AM), see 3GPP TS 36.322

Config Paths

ns3::LteRlcAm 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::LteRlcAm
  • /NodeList/[i]/DeviceList/[i]/$ns3::LteEnbNetDevice/LteEnbRrc/UeMap/[i]/Srb0/LteRlc/$ns3::LteRlcAm
  • /NodeList/[i]/DeviceList/[i]/$ns3::LteEnbNetDevice/LteEnbRrc/UeMap/[i]/Srb1/LteRlc/$ns3::LteRlcAm
  • /NodeList/[i]/DeviceList/[i]/$ns3::LteNetDevice/$ns3::LteEnbNetDevice/LteEnbRrc/UeMap/[i]/DataRadioBearerMap/[i]/LteRlc/$ns3::LteRlcAm
  • /NodeList/[i]/DeviceList/[i]/$ns3::LteNetDevice/$ns3::LteEnbNetDevice/LteEnbRrc/UeMap/[i]/Srb0/LteRlc/$ns3::LteRlcAm
  • /NodeList/[i]/DeviceList/[i]/$ns3::LteNetDevice/$ns3::LteEnbNetDevice/LteEnbRrc/UeMap/[i]/Srb1/LteRlc/$ns3::LteRlcAm
  • /NodeList/[i]/DeviceList/[i]/$ns3::LteNetDevice/$ns3::LteUeNetDevice/LteUeRrc/DataRadioBearerMap/[i]/LteRlc/$ns3::LteRlcAm
  • /NodeList/[i]/DeviceList/[i]/$ns3::LteNetDevice/$ns3::LteUeNetDevice/LteUeRrc/Srb0/LteRlc/$ns3::LteRlcAm
  • /NodeList/[i]/DeviceList/[i]/$ns3::LteNetDevice/$ns3::LteUeNetDevice/LteUeRrc/Srb1/LteRlc/$ns3::LteRlcAm
  • /NodeList/[i]/DeviceList/[i]/$ns3::LteUeNetDevice/LteUeRrc/DataRadioBearerMap/[i]/LteRlc/$ns3::LteRlcAm
  • /NodeList/[i]/DeviceList/[i]/$ns3::LteUeNetDevice/LteUeRrc/Srb0/LteRlc/$ns3::LteRlcAm
  • /NodeList/[i]/DeviceList/[i]/$ns3::LteUeNetDevice/LteUeRrc/Srb1/LteRlc/$ns3::LteRlcAm

Attributes

  • PollRetransmitTimer: Value of the t-PollRetransmit (See section 7.3 of 3GPP TS 36.322)
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: +100000000.0ns
    • Flags: construct write read

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 36 of file lte-rlc-am.h.

Member Enumeration Documentation

SDU Reassembling state

Definition at line 157 of file lte-rlc-am.h.

Member Function Documentation

void ns3::LteRlcAm::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 101 of file lte-rlc-am.cc.

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

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

RLC SAP

Store arrival time

Store PDCP PDU

Report Buffer Status

Implements ns3::LteRlc.

Definition at line 128 of file lte-rlc-am.cc.

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

void ns3::LteRlcAm::ExpireReorderingTimer ( void  )
private

This method will schedule a timeout at WaitReplyTimeout interval in the future, unless a timer is already running for the cache, in which case this method does nothing.

Definition at line 1594 of file lte-rlc-am.cc.

References ns3::SequenceNumber10::GetValue(), NS_ASSERT_MSG, NS_LOG_FUNCTION, NS_LOG_LOGIC, and ns3::Simulator::Schedule().

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

Deliver one or multiple PDUs

Deliver full 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 1056 of file lte-rlc-am.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::LteRlcAm::m_expectedSeqNumber
private

Expected Sequence Number

Definition at line 166 of file lte-rlc-am.h.

Referenced by ReassembleAndDeliver().

uint16_t ns3::LteRlcAm::m_maxRetxThreshold
private

Configurable parameters. See section 7.4 in TS 36.322

Definition at line 150 of file lte-rlc-am.h.

uint32_t ns3::LteRlcAm::m_pduWithoutPoll
private

Counters. See section 7.1 in TS 36.322

Definition at line 131 of file lte-rlc-am.h.

Referenced by DoNotifyTxOpportunity().

EventId ns3::LteRlcAm::m_pollRetransmitTimer
private

Timers. See section 7.3 in TS 36.322

Definition at line 142 of file lte-rlc-am.h.

Referenced by DoDispose(), and DoNotifyTxOpportunity().

SequenceNumber10 ns3::LteRlcAm::m_vtA
private

State variables. See section 7.1 in TS 36.322

Definition at line 116 of file lte-rlc-am.h.

Referenced by DoNotifyTxOpportunity().

uint16_t ns3::LteRlcAm::m_windowSize
private

Constants. See section 7.2 in TS 36.322

Definition at line 137 of file lte-rlc-am.h.


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