LTE PDCP entity, see 3GPP TS 36.323. More...
#include "lte-pdcp.h"
Classes | |
struct | Status |
Status variables of the PDCP. More... | |
Public Types | |
typedef void(* | PduRxTracedCallback) (const uint16_t rnti, const uint8_t lcid, const uint32_t size, const uint64_t delay) |
TracedCallback signature for PDU receive event. More... | |
typedef void(* | PduTxTracedCallback) (uint16_t rnti, uint8_t lcid, uint32_t size) |
TracedCallback for PDU transmission event. More... | |
Public Member Functions | |
LtePdcp () | |
~LtePdcp () override | |
void | DoDispose () override |
Destructor implementation. More... | |
LtePdcpSapProvider * | GetLtePdcpSapProvider () |
LteRlcSapUser * | GetLteRlcSapUser () |
Status | GetStatus () const |
void | SetLcId (uint8_t lcId) |
void | SetLtePdcpSapUser (LtePdcpSapUser *s) |
void | SetLteRlcSapProvider (LteRlcSapProvider *s) |
void | SetRnti (uint16_t rnti) |
void | SetStatus (Status s) |
Set the status of the PDCP. More... | |
Public Member Functions inherited from ns3::Object | |
Object () | |
Constructor. More... | |
~Object () override | |
Destructor. More... | |
void | AggregateObject (Ptr< Object > other) |
Aggregate two Objects together. More... | |
void | Dispose () |
Dispose of this Object. More... | |
AggregateIterator | GetAggregateIterator () const |
Get an iterator to the Objects aggregated to this one. More... | |
TypeId | GetInstanceTypeId () const override |
Get the most derived TypeId for this Object. More... | |
template<typename T > | |
Ptr< T > | GetObject () const |
Get a pointer to the requested aggregated Object. More... | |
template<> | |
Ptr< Object > | GetObject () const |
Specialization of () for objects of type ns3::Object. More... | |
template<typename T > | |
Ptr< T > | GetObject (TypeId tid) const |
Get a pointer to the requested aggregated Object by TypeId. More... | |
template<> | |
Ptr< Object > | GetObject (TypeId tid) const |
Specialization of (TypeId tid) for objects of type ns3::Object. More... | |
void | Initialize () |
Invoke DoInitialize on all Objects aggregated to this one. More... | |
bool | IsInitialized () const |
Check if the object has been initialized. More... | |
Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
SimpleRefCount () | |
Default constructor. More... | |
SimpleRefCount (const SimpleRefCount &o[[maybe_unused]]) | |
Copy constructor. More... | |
uint32_t | GetReferenceCount () const |
Get the reference count of the object. More... | |
SimpleRefCount & | operator= (const SimpleRefCount &o[[maybe_unused]]) |
Assignment operator. More... | |
void | Ref () const |
Increment the reference count. More... | |
void | Unref () 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 |
Get the value of an attribute, raising fatal errors if unsuccessful. More... | |
bool | GetAttributeFailSafe (std::string name, AttributeValue &value) const |
Get the value of an attribute without raising errors. More... | |
void | SetAttribute (std::string name, const AttributeValue &value) |
Set a single attribute, raising fatal errors if unsuccessful. More... | |
bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) |
Set a single attribute without raising errors. More... | |
bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) |
Connect a TraceSource to a Callback with a context. More... | |
bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) |
Connect a TraceSource to a Callback without a context. More... | |
bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected with a context. More... | |
bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) |
Disconnect from a TraceSource a Callback previously connected without a context. More... | |
Static Public Member Functions | |
static TypeId | GetTypeId () |
Get the type ID. More... | |
Static Public Member Functions inherited from ns3::Object | |
static TypeId | GetTypeId () |
Register this type. More... | |
Static Public Member Functions inherited from ns3::ObjectBase | |
static TypeId | GetTypeId () |
Get the type ID. More... | |
Static Public Attributes | |
static const uint16_t | MAX_PDCP_SN = 4096 |
maximum PDCP SN More... | |
Protected Member Functions | |
virtual void | DoReceivePdu (Ptr< Packet > p) |
Interface provided to lower RLC entity. More... | |
virtual void | DoTransmitPdcpSdu (LtePdcpSapProvider::TransmitPdcpSduParameters params) |
Interface provided to upper RRC entity. More... | |
Protected Member Functions inherited from ns3::Object | |
Object (const Object &o) | |
Copy an Object. More... | |
virtual void | DoInitialize () |
Initialize() implementation. More... | |
virtual void | NotifyNewAggregate () |
Notify all Objects aggregated to this one of a new Object being aggregated. More... | |
Protected Member Functions inherited from ns3::ObjectBase | |
void | ConstructSelf (const AttributeConstructionList &attributes) |
Complete construction of ObjectBase; invoked by derived classes. More... | |
virtual void | NotifyConstructionCompleted () |
Notifier called once the ObjectBase is fully constructed. More... | |
Protected Attributes | |
uint8_t | m_lcid |
LCID. More... | |
LtePdcpSapProvider * | m_pdcpSapProvider |
PDCP SAP provider. More... | |
LtePdcpSapUser * | m_pdcpSapUser |
PDCP SAP user. More... | |
LteRlcSapProvider * | m_rlcSapProvider |
RLC SAP provider. More... | |
LteRlcSapUser * | m_rlcSapUser |
RLC SAP user. More... | |
uint16_t | m_rnti |
RNTI. More... | |
TracedCallback< uint16_t, uint8_t, uint32_t, uint64_t > | m_rxPdu |
Used to inform of a PDU reception from the RLC SAP user. More... | |
TracedCallback< uint16_t, uint8_t, uint32_t > | m_txPdu |
Used to inform of a PDU delivery to the RLC SAP provider. More... | |
Private Attributes | |
uint16_t | m_rxSequenceNumber |
State variables. More... | |
uint16_t | m_txSequenceNumber |
State variables. More... | |
Static Private Attributes | |
static const uint16_t | m_maxPdcpSn = 4095 |
Constants. More... | |
Friends | |
class | LtePdcpSpecificLtePdcpSapProvider< LtePdcp > |
allow LtePdcpSpecificLtePdcpSapProvider<LtePdcp> class friend access More... | |
class | LtePdcpSpecificLteRlcSapUser |
allow LtePdcpSpecificLteRlcSapUser class friend access More... | |
Additional Inherited Members | |
Related Functions inherited from ns3::ObjectBase | |
static TypeId | GetObjectIid () |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. More... | |
LTE PDCP entity, see 3GPP TS 36.323.
Definition at line 36 of file lte-pdcp.h.
typedef void(* ns3::LtePdcp::PduRxTracedCallback) (const uint16_t rnti, const uint8_t lcid, const uint32_t size, const uint64_t delay) |
TracedCallback signature for PDU receive event.
[in] | rnti | The C-RNTI identifying the UE. |
[in] | lcid | The logical channel id corresponding to the sending RLC instance. |
[in] | size | Packet size. |
[in] | delay | Delay since packet sent, in ns.. |
Definition at line 139 of file lte-pdcp.h.
typedef void(* ns3::LtePdcp::PduTxTracedCallback) (uint16_t rnti, uint8_t lcid, uint32_t size) |
TracedCallback for PDU transmission event.
[in] | rnti | The C-RNTI identifying the UE. |
[in] | lcid | The logical channel id corresponding to the sending RLC instance. |
[in] | size | Packet size. |
Definition at line 128 of file lte-pdcp.h.
ns3::LtePdcp::LtePdcp | ( | ) |
Definition at line 72 of file lte-pdcp.cc.
References LtePdcpSpecificLtePdcpSapProvider< LtePdcp >, LtePdcpSpecificLteRlcSapUser, m_pdcpSapProvider, m_rlcSapUser, and NS_LOG_FUNCTION.
|
override |
Definition at line 85 of file lte-pdcp.cc.
References NS_LOG_FUNCTION.
|
overridevirtual |
Destructor implementation.
This method is called by Dispose() or by the Object's destructor, whichever comes first.
Subclasses are expected to implement their real destruction code in an overridden 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 108 of file lte-pdcp.cc.
References m_pdcpSapProvider, m_rlcSapUser, and NS_LOG_FUNCTION.
Interface provided to lower RLC entity.
p | packet |
Definition at line 209 of file lte-pdcp.cc.
References ns3::Packet::FindFirstMatchingByteTag(), ns3::Time::GetNanoSeconds(), ns3::PdcpTag::GetSenderTimestamp(), ns3::LtePdcpHeader::GetSequenceNumber(), ns3::Packet::GetSize(), m_lcid, m_maxPdcpSn, m_pdcpSapUser, m_rnti, m_rxPdu, m_rxSequenceNumber, ns3::Simulator::Now(), NS_LOG_FUNCTION, NS_LOG_LOGIC, two-ray-to-three-gpp-ch-calibration::params, ns3::LtePdcpSapUser::ReceivePdcpSdu(), and ns3::Packet::RemoveHeader().
Referenced by ns3::LtePdcpSpecificLteRlcSapUser::ReceivePdcpPdu().
|
protectedvirtual |
Interface provided to upper RRC entity.
params | the TransmitPdcpSduParameters |
Definition at line 176 of file lte-pdcp.cc.
References ns3::Packet::AddByteTag(), ns3::Packet::AddHeader(), ns3::LtePdcpHeader::DATA_PDU, ns3::LtePdcpHeader::GetSerializedSize(), ns3::Packet::GetSize(), ns3::LteRlcSapProvider::TransmitPdcpPduParameters::lcid, m_lcid, m_maxPdcpSn, m_rlcSapProvider, m_rnti, m_txPdu, m_txSequenceNumber, ns3::Simulator::Now(), NS_LOG_FUNCTION, NS_LOG_INFO, two-ray-to-three-gpp-ch-calibration::params, ns3::LteRlcSapProvider::TransmitPdcpPduParameters::pdcpPdu, ns3::LteRlcSapProvider::TransmitPdcpPduParameters::rnti, ns3::LtePdcpHeader::SetDcBit(), ns3::LtePdcpHeader::SetSequenceNumber(), and ns3::LteRlcSapProvider::TransmitPdcpPdu().
LtePdcpSapProvider * ns3::LtePdcp::GetLtePdcpSapProvider | ( | ) |
Definition at line 137 of file lte-pdcp.cc.
References m_pdcpSapProvider, and NS_LOG_FUNCTION.
LteRlcSapUser * ns3::LtePdcp::GetLteRlcSapUser | ( | ) |
Definition at line 151 of file lte-pdcp.cc.
References m_rlcSapUser, and NS_LOG_FUNCTION.
LtePdcp::Status ns3::LtePdcp::GetStatus | ( | ) | const |
Definition at line 158 of file lte-pdcp.cc.
References m_rxSequenceNumber, m_txSequenceNumber, ns3::LtePdcp::Status::rxSn, and ns3::LtePdcp::Status::txSn.
|
static |
Get the type ID.
Definition at line 91 of file lte-pdcp.cc.
References m_rxPdu, m_txPdu, ns3::MakeTraceSourceAccessor(), and ns3::TypeId::SetParent().
void ns3::LtePdcp::SetLcId | ( | uint8_t | lcId | ) |
void ns3::LtePdcp::SetLtePdcpSapUser | ( | LtePdcpSapUser * | s | ) |
s | the PDCP SAP user to be used by this LTE_PDCP |
Definition at line 130 of file lte-pdcp.cc.
References m_pdcpSapUser, and NS_LOG_FUNCTION.
void ns3::LtePdcp::SetLteRlcSapProvider | ( | LteRlcSapProvider * | s | ) |
s | the RLC SAP Provider to be used by this LTE_PDCP |
Definition at line 144 of file lte-pdcp.cc.
References m_rlcSapProvider, and NS_LOG_FUNCTION.
void ns3::LtePdcp::SetRnti | ( | uint16_t | rnti | ) |
void ns3::LtePdcp::SetStatus | ( | Status | s | ) |
Set the status of the PDCP.
s |
Definition at line 167 of file lte-pdcp.cc.
References m_rxSequenceNumber, m_txSequenceNumber, ns3::LtePdcp::Status::rxSn, and ns3::LtePdcp::Status::txSn.
|
friend |
allow LtePdcpSpecificLtePdcpSapProvider<LtePdcp> class friend access
Definition at line 39 of file lte-pdcp.h.
Referenced by LtePdcp().
|
friend |
allow LtePdcpSpecificLteRlcSapUser class friend access
Definition at line 39 of file lte-pdcp.h.
Referenced by LtePdcp().
|
protected |
LCID.
Definition at line 166 of file lte-pdcp.h.
Referenced by DoReceivePdu(), DoTransmitPdcpSdu(), and SetLcId().
|
staticprivate |
Constants.
See section 7.2 in TS 36.323
Definition at line 192 of file lte-pdcp.h.
Referenced by DoReceivePdu(), and DoTransmitPdcpSdu().
|
protected |
PDCP SAP provider.
Definition at line 153 of file lte-pdcp.h.
Referenced by LtePdcp(), DoDispose(), and GetLtePdcpSapProvider().
|
protected |
PDCP SAP user.
Definition at line 152 of file lte-pdcp.h.
Referenced by DoReceivePdu(), and SetLtePdcpSapUser().
|
protected |
RLC SAP provider.
Definition at line 163 of file lte-pdcp.h.
Referenced by DoTransmitPdcpSdu(), and SetLteRlcSapProvider().
|
protected |
RLC SAP user.
Definition at line 162 of file lte-pdcp.h.
Referenced by LtePdcp(), DoDispose(), and GetLteRlcSapUser().
|
protected |
RNTI.
Definition at line 165 of file lte-pdcp.h.
Referenced by DoReceivePdu(), DoTransmitPdcpSdu(), and SetRnti().
|
protected |
Used to inform of a PDU reception from the RLC SAP user.
The parameters are RNTI, LCID, bytes delivered and delivery delay in nanoseconds.
Definition at line 177 of file lte-pdcp.h.
Referenced by DoReceivePdu(), and GetTypeId().
|
private |
State variables.
See section 7.1 in TS 36.323
Definition at line 187 of file lte-pdcp.h.
Referenced by DoReceivePdu(), GetStatus(), and SetStatus().
|
protected |
Used to inform of a PDU delivery to the RLC SAP provider.
The parameters are RNTI, LCID and bytes delivered
Definition at line 172 of file lte-pdcp.h.
Referenced by DoTransmitPdcpSdu(), and GetTypeId().
|
private |
State variables.
See section 7.1 in TS 36.323
Definition at line 183 of file lte-pdcp.h.
Referenced by DoTransmitPdcpSdu(), GetStatus(), and SetStatus().
|
static |
maximum PDCP SN
Definition at line 96 of file lte-pdcp.h.