A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
radio-bearer-stats-calculator.h
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  * Nicola Baldo <nbaldo@cttc.es>
20  */
21 
22 #ifndef RADIO_BEARER_STATS_CALCULATOR_H_
23 #define RADIO_BEARER_STATS_CALCULATOR_H_
24 
25 #include "ns3/lte-stats-calculator.h"
26 #include "ns3/lte-common.h"
27 #include "ns3/uinteger.h"
28 #include "ns3/object.h"
29 #include "ns3/basic-data-calculators.h"
30 #include "ns3/lte-common.h"
31 #include <string>
32 #include <map>
33 #include <fstream>
34 
35 namespace ns3
36 {
37 
38 typedef std::map<ImsiLcidPair_t, uint32_t> Uint32Map;
39 typedef std::map<ImsiLcidPair_t, uint64_t> Uint64Map;
40 typedef std::map<ImsiLcidPair_t, Ptr<MinMaxAvgTotalCalculator<uint32_t> > > Uint32StatsMap;
41 typedef std::map<ImsiLcidPair_t, Ptr<MinMaxAvgTotalCalculator<uint64_t> > > Uint64StatsMap;
42 typedef std::map<ImsiLcidPair_t, double> DoubleMap;
43 typedef std::map<ImsiLcidPair_t, LteFlowId_t> FlowIdMap;
44 
64 {
65 public:
70 
74  RadioBearerStatsCalculator (std::string protocolType);
75 
79  virtual
81 
85  static TypeId GetTypeId (void);
86  void DoDispose ();
87 
91  std::string GetUlOutputFilename (void);
92 
96  std::string GetDlOutputFilename (void);
97 
103  void SetUlPdcpOutputFilename (std::string outputFilename);
104 
108  std::string GetUlPdcpOutputFilename (void);
109 
115  void SetDlPdcpOutputFilename (std::string outputFilename);
116 
120  std::string GetDlPdcpOutputFilename (void);
121 
122 
127  void SetStartTime (Time t);
128 
133  Time GetStartTime () const;
134 
139  void SetEpoch (Time e);
140 
145  Time GetEpoch () const;
146 
155  void
156  UlTxPdu (uint16_t cellId, uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize);
157 
167  void
168  UlRxPdu (uint16_t cellId, uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize, uint64_t delay);
169 
178  void
179  DlTxPdu (uint16_t cellId, uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize);
180 
190  void
191  DlRxPdu (uint16_t cellId, uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize, uint64_t delay);
192 
199  uint32_t
200  GetUlTxPackets (uint64_t imsi, uint8_t lcid);
201 
208  uint32_t
209  GetUlRxPackets (uint64_t imsi, uint8_t lcid);
210 
217  uint64_t
218  GetUlTxData (uint64_t imsi, uint8_t lcid);
219 
226  uint64_t
227  GetUlRxData (uint64_t imsi, uint8_t lcid);
228 
235  uint32_t
236  GetUlCellId (uint64_t imsi, uint8_t lcid);
237 
244  double
245  GetUlDelay (uint64_t imsi, uint8_t lcid);
246 
253  std::vector<double>
254  GetUlDelayStats (uint64_t imsi, uint8_t lcid);
255 
262  std::vector<double>
263  GetUlPduSizeStats (uint64_t imsi, uint8_t lcid);
264 
271  uint32_t
272  GetDlTxPackets (uint64_t imsi, uint8_t lcid);
273 
280  uint32_t
281  GetDlRxPackets (uint64_t imsi, uint8_t lcid);
282 
289  uint64_t
290  GetDlTxData (uint64_t imsi, uint8_t lcid);
291 
298  uint64_t
299  GetDlRxData (uint64_t imsi, uint8_t lcid);
300 
307  uint32_t
308  GetDlCellId (uint64_t imsi, uint8_t lcid);
309 
316  double
317  GetDlDelay (uint64_t imsi, uint8_t lcid);
318 
325  std::vector<double>
326  GetDlDelayStats (uint64_t imsi, uint8_t lcid);
327 
334  std::vector<double>
335  GetDlPduSizeStats (uint64_t imsi, uint8_t lcid);
336 
337 private:
338  void
339  ShowResults (void);
340  void
341  WriteUlResults (std::ofstream& outFile);
342  void
343  WriteDlResults (std::ofstream& outFile);
344  void
345  ResetResults (void);
346 
347  void RescheduleEndEpoch ();
348 
349  void EndEpoch (void);
350 
351  EventId m_endEpochEvent;
352 
353  FlowIdMap m_flowId;
354 
355  Uint32Map m_dlCellId;
356  Uint32Map m_dlTxPackets;
357  Uint32Map m_dlRxPackets;
358  Uint64Map m_dlTxData;
359  Uint64Map m_dlRxData;
360  Uint64StatsMap m_dlDelay;
361  Uint32StatsMap m_dlPduSize;
362 
363  Uint32Map m_ulCellId;
364  Uint32Map m_ulTxPackets;
365  Uint32Map m_ulRxPackets;
366  Uint64Map m_ulTxData;
367  Uint64Map m_ulRxData;
368  Uint64StatsMap m_ulDelay;
369  Uint32StatsMap m_ulPduSize;
370 
375 
380 
385 
390  std::string m_protocolType;
391 
392  std::string m_dlPdcpOutputFilename;
393  std::string m_ulPdcpOutputFilename;
394 
395 };
396 
397 } // namespace ns3
398 
399 #endif /* RADIO_BEARER_STATS_CALCULATOR_H_ */
keep track of time unit.
Definition: nstime.h:149
double GetUlDelay(uint64_t imsi, uint8_t lcid)
uint32_t GetDlRxPackets(uint64_t imsi, uint8_t lcid)
uint32_t GetUlCellId(uint64_t imsi, uint8_t lcid)
uint32_t GetUlTxPackets(uint64_t imsi, uint8_t lcid)
std::vector< double > GetUlPduSizeStats(uint64_t imsi, uint8_t lcid)
uint64_t GetDlRxData(uint64_t imsi, uint8_t lcid)
void SetUlPdcpOutputFilename(std::string outputFilename)
double GetDlDelay(uint64_t imsi, uint8_t lcid)
void UlTxPdu(uint16_t cellId, uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize)
uint32_t GetUlRxPackets(uint64_t imsi, uint8_t lcid)
uint64_t GetDlTxData(uint64_t imsi, uint8_t lcid)
void DlTxPdu(uint16_t cellId, uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize)
uint32_t GetDlCellId(uint64_t imsi, uint8_t lcid)
void UlRxPdu(uint16_t cellId, uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize, uint64_t delay)
uint64_t GetUlTxData(uint64_t imsi, uint8_t lcid)
uint64_t GetUlRxData(uint64_t imsi, uint8_t lcid)
std::vector< double > GetDlDelayStats(uint64_t imsi, uint8_t lcid)
an identifier for simulation events.
Definition: event-id.h:46
uint32_t GetDlTxPackets(uint64_t imsi, uint8_t lcid)
void SetDlPdcpOutputFilename(std::string outputFilename)
std::vector< double > GetUlDelayStats(uint64_t imsi, uint8_t lcid)
std::vector< double > GetDlPduSizeStats(uint64_t imsi, uint8_t lcid)
a unique identifier for an interface.
Definition: type-id.h:44
void DlRxPdu(uint16_t cellId, uint64_t imsi, uint16_t rnti, uint8_t lcid, uint32_t packetSize, uint64_t delay)