5G-LENA nr-v4.0
The 5G/NR module for the ns-3 simulator
Loading...
Searching...
No Matches
nr-rlc.h
1// Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
2//
3// SPDX-License-Identifier: GPL-2.0-only
4//
5// Author: Nicola Baldo <nbaldo@cttc.es>
6
7#ifndef NR_RLC_H
8#define NR_RLC_H
9
10#include "nr-mac-sap.h"
11#include "nr-rlc-sap.h"
12
13#include "ns3/nstime.h"
14#include "ns3/object.h"
15#include "ns3/packet.h"
16#include "ns3/simple-ref-count.h"
17#include "ns3/trace-source-accessor.h"
18#include "ns3/traced-value.h"
19#include "ns3/uinteger.h"
20
21namespace ns3
22{
23
24// class NrRlcSapProvider;
25// class NrRlcSapUser;
26//
27// class NrMacSapProvider;
28// class NrMacSapUser;
29
35class NrRlc : public Object // SimpleRefCount<NrRlc>
36{
41
42 public:
43 NrRlc();
44 ~NrRlc() override;
49 static TypeId GetTypeId();
50 void DoDispose() override;
51
57 void SetRnti(uint16_t rnti);
58
64 void SetLcId(uint8_t lcId);
65
69 void SetPacketDelayBudgetMs(uint16_t packetDelayBudget);
70
77
84
91
98
107 typedef void (*NotifyTxTracedCallback)(uint16_t rnti, uint8_t lcid, uint32_t bytes);
108
118 typedef void (*ReceiveTracedCallback)(uint16_t rnti,
119 uint8_t lcid,
120 uint32_t bytes,
121 uint64_t delay);
122
124 // NB to avoid the use of multiple inheritance
125
126 protected:
127 // Interface forwarded by NrRlcSapProvider
133 virtual void DoTransmitPdcpPdu(Ptr<Packet> p) = 0;
134
137
138 // Interface forwarded by NrMacSapUser
148 virtual void DoNotifyHarqDeliveryFailure() = 0;
155
158
159 uint16_t m_rnti;
160 uint8_t m_lcid;
162 UINT16_MAX};
163
167 TracedCallback<uint16_t, uint8_t, uint32_t> m_txPdu;
171 TracedCallback<uint16_t, uint8_t, uint32_t, uint64_t> m_rxPdu;
176 TracedCallback<Ptr<const Packet>> m_txDropTrace;
177};
178
187class NrRlcSm : public NrRlc
188{
189 public:
190 NrRlcSm();
191 ~NrRlcSm() override;
196 static TypeId GetTypeId();
197 void DoInitialize() override;
198 void DoDispose() override;
199
200 void DoTransmitPdcpPdu(Ptr<Packet> p) override;
202 void DoNotifyHarqDeliveryFailure() override;
203 void DoReceivePdu(NrMacSapUser::ReceivePduParameters rxPduParams) override;
204
205 private:
207 void BufferStatusReport();
208};
209
210// /**
211// * Implements NR_RLC Transparent Mode (TM), see 3GPP TS 36.322
212// *
213// */
214// class NrRlcTm : public NrRlc
215// {
216// public:
217// virtual ~NrRlcTm ();
218
219// };
220
221// /**
222// * Implements NR_RLC Unacknowledged Mode (UM), see 3GPP TS 36.322
223// *
224// */
225// class NrRlcUm : public NrRlc
226// {
227// public:
228// virtual ~NrRlcUm ();
229
230// };
231
232// /**
233// * Implements NR_RLC Acknowledged Mode (AM), see 3GPP TS 36.322
234// *
235// */
236
237// class NrRlcAm : public NrRlc
238// {
239// public:
240// virtual ~NrRlcAm ();
241// };
242
243} // namespace ns3
244
245#endif // NR_RLC_H
TracedCallback< Ptr< const Packet > > m_txDropTrace
Definition nr-rlc.h:176
void SetPacketDelayBudgetMs(uint16_t packetDelayBudget)
Definition nr-rlc.cc:135
virtual void DoNotifyTxOpportunity(NrMacSapUser::TxOpportunityParameters params)=0
void SetRnti(uint16_t rnti)
Definition nr-rlc.cc:121
TracedCallback< uint16_t, uint8_t, uint32_t, uint64_t > m_rxPdu
Definition nr-rlc.h:171
uint16_t m_rnti
RNTI.
Definition nr-rlc.h:159
NrRlcSapUser * m_rlcSapUser
RLC SAP user.
Definition nr-rlc.h:135
NrRlcSapProvider * m_rlcSapProvider
RLC SAP provider.
Definition nr-rlc.h:136
static TypeId GetTypeId()
Get the type ID.
Definition nr-rlc.cc:91
uint16_t m_packetDelayBudgetMs
the packet delay budget in ms of the corresponding logical channel
Definition nr-rlc.h:161
friend class NrRlcSpecificNrMacSapUser
allow NrRlcSpecificNrMacSapUser class friend access
Definition nr-rlc.h:38
void SetNrMacSapProvider(NrMacSapProvider *s)
Definition nr-rlc.cc:156
uint8_t m_lcid
LCID.
Definition nr-rlc.h:160
NrMacSapProvider * m_macSapProvider
MAC SAP provider.
Definition nr-rlc.h:157
void(* ReceiveTracedCallback)(uint16_t rnti, uint8_t lcid, uint32_t bytes, uint64_t delay)
Definition nr-rlc.h:118
void SetLcId(uint8_t lcId)
Definition nr-rlc.cc:128
virtual void DoReceivePdu(NrMacSapUser::ReceivePduParameters params)=0
NrMacSapUser * m_macSapUser
MAC SAP user.
Definition nr-rlc.h:156
NrRlcSapProvider * GetNrRlcSapProvider()
Definition nr-rlc.cc:149
virtual void DoTransmitPdcpPdu(Ptr< Packet > p)=0
void(* NotifyTxTracedCallback)(uint16_t rnti, uint8_t lcid, uint32_t bytes)
Definition nr-rlc.h:107
TracedCallback< uint16_t, uint8_t, uint32_t > m_txPdu
Definition nr-rlc.h:167
NrMacSapUser * GetNrMacSapUser()
Definition nr-rlc.cc:163
virtual void DoNotifyHarqDeliveryFailure()=0
void SetNrRlcSapUser(NrRlcSapUser *s)
Definition nr-rlc.cc:142
static TypeId GetTypeId()
Get the type ID.
Definition nr-rlc.cc:184
void DoTransmitPdcpPdu(Ptr< Packet > p) override
Definition nr-rlc.cc:206
void DoReceivePdu(NrMacSapUser::ReceivePduParameters rxPduParams) override
Definition nr-rlc.cc:212
void DoNotifyTxOpportunity(NrMacSapUser::TxOpportunityParameters txOpParams) override
Definition nr-rlc.cc:227
void DoNotifyHarqDeliveryFailure() override
Definition nr-rlc.cc:257
NrRlcSpecificNrRlcSapProvider.
Definition nr-rlc-sap.h:69