A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
radio-bearer-stats-connector.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2012-2018 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 *
6 * Authors:
7 * Nicola Baldo <nbaldo@cttc.es>
8 * Manuel Requena <manuel.requena@cttc.es>
9 */
10
11#ifndef RADIO_BEARER_STATS_CONNECTOR_H
12#define RADIO_BEARER_STATS_CONNECTOR_H
13
14#include "ns3/config.h"
15#include "ns3/ptr.h"
16#include "ns3/simple-ref-count.h"
17#include "ns3/traced-callback.h"
18
19#include <map>
20
21namespace ns3
22{
23
24class RadioBearerStatsCalculator;
25
26/**
27 * @ingroup lte
28 *
29 * This class is very useful when user needs to collect
30 * statistics from PDCP and RLC. It automatically connects
31 * RadioBearerStatsCalculator to appropriate trace sinks.
32 * Usually user does not use this class. All he/she needs
33 * to do is to call: LteHelper::EnablePdcpTraces() and/or
34 * LteHelper::EnableRlcTraces().
35 */
36
38{
39 public:
40 /// Constructor
42
43 /**
44 * Enables trace sinks for RLC layer. Usually, this function
45 * is called by LteHelper::EnableRlcTraces().
46 * @param rlcStats statistics calculator for RLC layer
47 */
49
50 /**
51 * Enables trace sinks for PDCP layer. Usually, this function
52 * is called by LteHelper::EnablePdcpTraces().
53 * @param pdcpStats statistics calculator for PDCP layer
54 */
56
57 /**
58 * Connects trace sinks to appropriate trace sources
59 */
60 void EnsureConnected();
61
62 // trace sinks, to be used with MakeBoundCallback
63
64 /**
65 * Function hooked to NewUeContext trace source at eNB RRC,
66 * which is fired upon creation of a new UE context.
67 * It stores the UE manager path and connects the callback that will be called
68 * when the DRB is created in the eNB.
69 * @param c
70 * @param context
71 * @param cellid
72 * @param rnti
73 */
75 std::string context,
76 uint16_t cellid,
77 uint16_t rnti);
78
79 /**
80 * Function hooked to RandomAccessSuccessful trace source at UE RRC,
81 * which is fired upon successful completion of the random access procedure.
82 * It connects the callbacks for the SRB0 at the eNB and the UE.
83 * @param c
84 * @param context
85 * @param imsi
86 * @param cellid
87 * @param rnti
88 */
90 std::string context,
91 uint64_t imsi,
92 uint16_t cellid,
93 uint16_t rnti);
94
95 /**
96 * Function hooked to Srb1Created trace source at UE RRC,
97 * which is fired when SRB1 is created, i.e. RLC and PDCP are created for one LC = 1.
98 * It connects the callbacks for the DRB at the eNB.
99 * @param c
100 * @param context
101 * @param imsi
102 * @param cellid
103 * @param rnti
104 */
106 std::string context,
107 uint64_t imsi,
108 uint16_t cellid,
109 uint16_t rnti);
110
111 /**
112 * Function hooked to DrbCreated trace source at UE manager in eNB RRC,
113 * which is fired when DRB is created, i.e. RLC and PDCP are created for LC = lcid.
114 * It connects the callbacks for the DRB at the eNB.
115 * @param c
116 * @param context
117 * @param imsi
118 * @param cellid
119 * @param rnti
120 * @param lcid
121 */
123 std::string context,
124 uint64_t imsi,
125 uint16_t cellid,
126 uint16_t rnti,
127 uint8_t lcid);
128
129 /**
130 * Function hooked to DrbCreated trace source at UE RRC,
131 * which is fired when DRB is created, i.e. RLC and PDCP are created for LC = lcid.
132 * It connects the callbacks for the DRB at the UE.
133 * @param c
134 * @param context
135 * @param imsi
136 * @param cellid
137 * @param rnti
138 * @param lcid
139 */
141 std::string context,
142 uint64_t imsi,
143 uint16_t cellid,
144 uint16_t rnti,
145 uint8_t lcid);
146
147 /**
148 * Disconnects all trace sources at eNB to RLC and PDCP calculators.
149 * Function is not implemented.
150 * @param context
151 * @param imsi
152 * @param cellid
153 * @param rnti
154 */
155 void DisconnectTracesEnb(std::string context, uint64_t imsi, uint16_t cellid, uint16_t rnti);
156
157 /**
158 * Disconnects all trace sources at UE to RLC and PDCP calculators.
159 * Function is not implemented.
160 * @param context
161 * @param imsi
162 * @param cellid
163 * @param rnti
164 */
165 void DisconnectTracesUe(std::string context, uint64_t imsi, uint16_t cellid, uint16_t rnti);
166
167 private:
168 /**
169 * Creates UE Manager path and stores it in m_ueManagerPathByCellIdRnti
170 * @param ueManagerPath
171 * @param cellId
172 * @param rnti
173 */
174 void StoreUeManagerPath(std::string ueManagerPath, uint16_t cellId, uint16_t rnti);
175
176 /**
177 * Connects SRB0 trace sources at UE and eNB to RLC and PDCP calculators
178 * @param context
179 * @param imsi
180 * @param cellId
181 * @param rnti
182 */
183 void ConnectTracesSrb0(std::string context, uint64_t imsi, uint16_t cellId, uint16_t rnti);
184
185 /**
186 * Connects SRB1 trace sources at UE and eNB to RLC and PDCP calculators
187 * @param context
188 * @param imsi
189 * @param cellId
190 * @param rnti
191 */
192 void ConnectTracesSrb1(std::string context, uint64_t imsi, uint16_t cellId, uint16_t rnti);
193
194 /**
195 * Connects DRB trace sources at eNB to RLC and PDCP calculators
196 * @param context
197 * @param imsi
198 * @param cellId
199 * @param rnti
200 * @param lcid
201 */
202 void ConnectTracesDrbEnb(std::string context,
203 uint64_t imsi,
204 uint16_t cellId,
205 uint16_t rnti,
206 uint8_t lcid);
207
208 /**
209 * Connects DRB trace sources at UE to RLC and PDCP calculators
210 * @param context
211 * @param imsi
212 * @param cellId
213 * @param rnti
214 * @param lcid
215 */
216 void ConnectTracesDrbUe(std::string context,
217 uint64_t imsi,
218 uint16_t cellId,
219 uint16_t rnti,
220 uint8_t lcid);
221
222 Ptr<RadioBearerStatsCalculator> m_rlcStats; //!< Calculator for RLC Statistics
223 Ptr<RadioBearerStatsCalculator> m_pdcpStats; //!< Calculator for PDCP Statistics
224
225 bool m_connected; //!< true if traces are connected to sinks, initially set to false
226
227 /**
228 * Struct used as key in m_ueManagerPathByCellIdRnti map
229 */
231 {
232 uint16_t cellId; //!< Cell Id
233 uint16_t rnti; //!< RNTI
234 };
235
236 /**
237 * Less than operator for CellIdRnti, because it is used as key in map
238 *
239 * @param a the lhs operand
240 * @param b the rhs operand
241 * @returns true if less than
242 */
243 friend bool operator<(const CellIdRnti& a, const CellIdRnti& b);
244
245 /**
246 * List UE Manager Paths by CellIdRnti
247 */
248 std::map<CellIdRnti, std::string> m_ueManagerPathByCellIdRnti;
249};
250
251} // namespace ns3
252
253#endif // RADIO_BEARER_STATS_CONNECTOR_H
Smart pointer class similar to boost::intrusive_ptr.
Definition ptr.h:66
This class is very useful when user needs to collect statistics from PDCP and RLC.
void ConnectTracesDrbEnb(std::string context, uint64_t imsi, uint16_t cellId, uint16_t rnti, uint8_t lcid)
Connects DRB trace sources at eNB to RLC and PDCP calculators.
void ConnectTracesSrb0(std::string context, uint64_t imsi, uint16_t cellId, uint16_t rnti)
Connects SRB0 trace sources at UE and eNB to RLC and PDCP calculators.
Ptr< RadioBearerStatsCalculator > m_rlcStats
Calculator for RLC Statistics.
void EnablePdcpStats(Ptr< RadioBearerStatsCalculator > pdcpStats)
Enables trace sinks for PDCP layer.
static void NotifyRandomAccessSuccessfulUe(RadioBearerStatsConnector *c, std::string context, uint64_t imsi, uint16_t cellid, uint16_t rnti)
Function hooked to RandomAccessSuccessful trace source at UE RRC, which is fired upon successful comp...
void ConnectTracesSrb1(std::string context, uint64_t imsi, uint16_t cellId, uint16_t rnti)
Connects SRB1 trace sources at UE and eNB to RLC and PDCP calculators.
void StoreUeManagerPath(std::string ueManagerPath, uint16_t cellId, uint16_t rnti)
Creates UE Manager path and stores it in m_ueManagerPathByCellIdRnti.
void EnableRlcStats(Ptr< RadioBearerStatsCalculator > rlcStats)
Enables trace sinks for RLC layer.
static void NotifyNewUeContextEnb(RadioBearerStatsConnector *c, std::string context, uint16_t cellid, uint16_t rnti)
Function hooked to NewUeContext trace source at eNB RRC, which is fired upon creation of a new UE con...
void DisconnectTracesEnb(std::string context, uint64_t imsi, uint16_t cellid, uint16_t rnti)
Disconnects all trace sources at eNB to RLC and PDCP calculators.
Ptr< RadioBearerStatsCalculator > m_pdcpStats
Calculator for PDCP Statistics.
std::map< CellIdRnti, std::string > m_ueManagerPathByCellIdRnti
List UE Manager Paths by CellIdRnti.
static void CreatedDrbEnb(RadioBearerStatsConnector *c, std::string context, uint64_t imsi, uint16_t cellid, uint16_t rnti, uint8_t lcid)
Function hooked to DrbCreated trace source at UE manager in eNB RRC, which is fired when DRB is creat...
static void CreatedDrbUe(RadioBearerStatsConnector *c, std::string context, uint64_t imsi, uint16_t cellid, uint16_t rnti, uint8_t lcid)
Function hooked to DrbCreated trace source at UE RRC, which is fired when DRB is created,...
void DisconnectTracesUe(std::string context, uint64_t imsi, uint16_t cellid, uint16_t rnti)
Disconnects all trace sources at UE to RLC and PDCP calculators.
void EnsureConnected()
Connects trace sinks to appropriate trace sources.
void ConnectTracesDrbUe(std::string context, uint64_t imsi, uint16_t cellId, uint16_t rnti, uint8_t lcid)
Connects DRB trace sources at UE to RLC and PDCP calculators.
bool m_connected
true if traces are connected to sinks, initially set to false
friend bool operator<(const CellIdRnti &a, const CellIdRnti &b)
Less than operator for CellIdRnti, because it is used as key in map.
static void CreatedSrb1Ue(RadioBearerStatsConnector *c, std::string context, uint64_t imsi, uint16_t cellid, uint16_t rnti)
Function hooked to Srb1Created trace source at UE RRC, which is fired when SRB1 is created,...
Ptr< T > Create(Ts &&... args)
Create class instances by constructors with varying numbers of arguments and return them by Ptr.
Definition ptr.h:436
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Struct used as key in m_ueManagerPathByCellIdRnti map.