22 #include "ns3/simulator.h"
24 #include "ns3/lte-pdcp.h"
25 #include "ns3/lte-pdcp-header.h"
26 #include "ns3/lte-pdcp-sap.h"
27 #include "ns3/lte-pdcp-tag.h"
47 LtePdcpSpecificLteRlcSapUser::LtePdcpSpecificLteRlcSapUser (
LtePdcp* pdcp)
52 LtePdcpSpecificLteRlcSapUser::LtePdcpSpecificLteRlcSapUser ()
59 m_pdcp->DoReceivePdu (p);
64 NS_OBJECT_ENSURE_REGISTERED (
LtePdcp);
71 m_txSequenceNumber (0),
72 m_rxSequenceNumber (0)
85 LtePdcp::GetTypeId (
void)
87 static TypeId tid = TypeId (
"ns3::LtePdcp")
89 .AddTraceSource (
"TxPDU",
90 "PDU transmission notified to the RLC.",
92 .AddTraceSource (
"RxPDU",
103 delete (m_pdcpSapProvider);
104 delete (m_rlcSapUser);
133 return m_pdcpSapProvider;
140 m_rlcSapProvider = s;
155 s.
rxSn = m_rxSequenceNumber;
163 m_rxSequenceNumber = s.
rxSn;
182 pdcpHeader.SetDcBit (LtePdcpHeader::DATA_PDU);
192 LteRlcSapProvider::TransmitPdcpPduParameters params;
193 params.rnti = m_rnti;
194 params.lcid = m_lcid;
201 LtePdcp::DoReceivePdu (Ptr<Packet> p)
203 NS_LOG_FUNCTION (
this << m_rnti << (uint32_t) m_lcid << p->GetSize ());
208 if (p->FindFirstMatchingByteTag (pdcpTag))
212 m_rxPdu(m_rnti, m_lcid, p->GetSize (), delay.GetNanoSeconds ());
214 LtePdcpHeader pdcpHeader;
215 p->RemoveHeader (pdcpHeader);
218 m_rxSequenceNumber = pdcpHeader.GetSequenceNumber () + 1;
221 m_rxSequenceNumber = 0;
224 LtePdcpSapUser::ReceivePdcpSduParameters params;
226 params.rnti = m_rnti;
227 params.lcid = m_lcid;
#define NS_LOG_FUNCTION(parameters)
LteRlcSapUser * GetLteRlcSapUser()
void SetLtePdcpSapUser(LtePdcpSapUser *s)
uint16_t txSn
TX sequence number.
#define NS_LOG_COMPONENT_DEFINE(name)
uint32_t GetSize(void) const
uint16_t m_txSequenceNumber
virtual void TransmitPdcpPdu(TransmitPdcpPduParameters params)=0
TracedCallback< uint16_t, uint8_t, uint32_t > m_txPdu
LtePdcpSapProvider * GetLtePdcpSapProvider()
void SetLteRlcSapProvider(LteRlcSapProvider *s)
uint16_t rxSn
RX sequence number.
#define NS_LOG_LOGIC(msg)
void SetLcId(uint8_t lcId)
void SetRnti(uint16_t rnti)
Ptr< const TraceSourceAccessor > MakeTraceSourceAccessor(T a)
virtual void ReceivePdcpSdu(ReceivePdcpSduParameters params)=0
virtual void ReceivePdcpPdu(Ptr< Packet > p)
TracedCallback< uint16_t, uint8_t, uint32_t, uint64_t > m_rxPdu
static const uint16_t m_maxPdcpSn
void AddHeader(const Header &header)
void AddByteTag(const Tag &tag) const