A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
radio-bearer-stats-calculator.h
Go to the documentation of this file.
1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2011 Centre Tecnologic de Telecomunicacions de Catalunya (CTTC)
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Author: Jaume Nin <jnin@cttc.es>
19  */
20 
21 #ifndef RADIO_BEARER_STATS_CALCULATOR_H_
22 #define RADIO_BEARER_STATS_CALCULATOR_H_
23 
24 #include "ns3/lte-stats-calculator.h"
25 #include "ns3/lte-common.h"
26 #include "ns3/uinteger.h"
27 #include "ns3/object.h"
28 #include "ns3/basic-data-calculators.h"
29 #include "ns3/lte-common.h"
30 #include <string>
31 #include <map>
32 #include <fstream>
33 
34 namespace ns3
35 {
36 
37 typedef std::map<ImsiLcidPair_t, uint32_t> Uint32Map;
38 typedef std::map<ImsiLcidPair_t, uint64_t> Uint64Map;
39 typedef std::map<ImsiLcidPair_t, Ptr<MinMaxAvgTotalCalculator<uint32_t> > > Uint32StatsMap;
40 typedef std::map<ImsiLcidPair_t, Ptr<MinMaxAvgTotalCalculator<uint64_t> > > Uint64StatsMap;
41 typedef std::map<ImsiLcidPair_t, double> DoubleMap;
42 typedef std::map<ImsiLcidPair_t, LteFlowId_t> FlowIdMap;
43 
56 {
57 public:
62 
66  RadioBearerStatsCalculator (std::string protocolType);
67 
71  virtual
73 
77  static TypeId GetTypeId (void);
78  void DoDispose ();
79 
83  std::string GetUlOutputFilename (void);
84 
88  std::string GetDlOutputFilename (void);
89 
95  void SetUlPdcpOutputFilename (std::string outputFilename);
96 
100  std::string GetUlPdcpOutputFilename (void);
101 
107  void SetDlPdcpOutputFilename (std::string outputFilename);
108 
112  std::string GetDlPdcpOutputFilename (void);
113 
121  void
122  UlTxPdu (uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize);
123 
133  void
134  UlRxPdu (uint16_t cellId, uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize, uint64_t delay);
135 
144  void
145  DlTxPdu (uint16_t cellId, uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize);
146 
155  void
156  DlRxPdu (uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize, uint64_t delay);
157 
164  uint32_t
165  GetUlTxPackets (uint64_t imsi, uint8_t lcid);
166 
173  uint32_t
174  GetUlRxPackets (uint64_t imsi, uint8_t lcid);
175 
182  uint64_t
183  GetUlTxData (uint64_t imsi, uint8_t lcid);
184 
191  uint64_t
192  GetUlRxData (uint64_t imsi, uint8_t lcid);
193 
200  uint32_t
201  GetUlCellId (uint64_t imsi, uint8_t lcid);
202 
209  double
210  GetUlDelay (uint64_t imsi, uint8_t lcid);
211 
218  std::vector<double>
219  GetUlDelayStats (uint64_t imsi, uint8_t lcid);
220 
227  std::vector<double>
228  GetUlPduSizeStats (uint64_t imsi, uint8_t lcid);
229 
236  uint32_t
237  GetDlTxPackets (uint64_t imsi, uint8_t lcid);
238 
245  uint32_t
246  GetDlRxPackets (uint64_t imsi, uint8_t lcid);
247 
254  uint64_t
255  GetDlTxData (uint64_t imsi, uint8_t lcid);
256 
263  uint64_t
264  GetDlRxData (uint64_t imsi, uint8_t lcid);
265 
272  uint32_t
273  GetDlCellId (uint64_t imsi, uint8_t lcid);
274 
281  double
282  GetDlDelay (uint64_t imsi, uint8_t lcid);
283 
290  std::vector<double>
291  GetDlDelayStats (uint64_t imsi, uint8_t lcid);
292 
299  std::vector<double>
300  GetDlPduSizeStats (uint64_t imsi, uint8_t lcid);
301 
302 private:
303  void
304  ShowResults (void);
305  void
306  WriteUlResults (std::ofstream& outFile);
307  void
308  WriteDlResults (std::ofstream& outFile);
309  void
310  ResetResults (void);
311 
312  void
313  StartEpoch (void);
314  void
315  CheckEpoch (void);
316 
318 
326 
334 
339 
344 
349 
354  std::string m_protocolType;
355 
358 
359 };
360 
361 } // namespace ns3
362 
363 #endif /* RADIO_BEARER_STATS_CALCULATOR_H_ */