A Discrete-Event Network Simulator
API
wave-bsm-stats.h
Go to the documentation of this file.
1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2014 North Carolina State University
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: Scott E. Carpenter <scarpen@ncsu.edu>
19  *
20  */
21 
22 #ifndef WAVE_BSM_STATS_H
23 #define WAVE_BSM_STATS_H
24 
25 #include "ns3/object.h"
26 #include <vector>
27 
28 namespace ns3 {
29 class WaveBsmStats : public Object
37 /*
38  * Note: This class collects data elements and accessors
39  * along with methods that calculate metrics from the data
40  * elements. The data and metrics calculation algorithms
41  * are collected together here purely to keep them together.
42  * Future work may need to add additional metric calculations,
43  * and for now, we are trying to keep all related data and
44  * algorithms together, although these could easily be
45  * refactored in the future and moved to separate classes.
46  * However, it seems that for now, moving the data elements
47  * or the algorithms separately into different classes could
48  * lead to confusion over usage.
49  */
50 {
51 public:
56  WaveBsmStats ();
57 
62  void IncTxPktCount ();
63 
68  int GetTxPktCount ();
69 
70  /*
71  * Note:
72  * The WAVE Basic Safety Message (BSM) is broadcast and
73  * unacknowledged. In order to calculate packet delivery
74  * ratio (PDR), we must count i) the packets that are
75  * actually received and ii) the transmitted packets that
76  * are expected to be received. Both are relative to a
77  * specified (circular) coverage area.
78  *
79  * For example: Say we have three nodes, A, B, and C, each
80  * separated by 40m, as follows:
81  *
82  * A --<40m>-- B --<40m>-- C
83  *
84  * Let's assume that the transmission range is 50m, and only
85  * A is transmitting (i.e. broadcasting). B can receive A's
86  * broadcasts, while C cannot. Let's assume no dropped packets.
87  * If we set the coverage area to 100m, then the PDR is 50%,
88  * because B receives every transmission from A, while C receives
89  * none of them. However, if we change the effective
90  * coverage area to 75m then the PDR improves to 100%, because
91  * B receives 100% of A's transmissions, and C is outside of the
92  * coverage area, and so does not factor in to the PDR.
93  */
94 
105  void IncExpectedRxPktCount (int index);
106 
112  void IncRxPktCount ();
113 
122  void IncRxPktInRangeCount (int index);
123 
128  int GetRxPktCount ();
129 
134  int GetExpectedRxPktCount (int index);
135 
140  int GetRxPktInRangeCount (int index);
141 
148  void SetExpectedRxPktCount (int index, int count);
149 
156  void SetRxPktInRangeCount (int index, int count);
157 
163  void ResetTotalRxPktCounts (int index);
164 
170  void SetTxPktCount (int count);
171 
177  void SetRxPktCount (int count);
178 
185  void IncTxByteCount (int bytes);
186 
192  int GetTxByteCount ();
193 
200  double GetBsmPdr (int index);
201 
208  double GetCumulativeBsmPdr (int index);
209 
214  void SetLogging (int log);
215 
220  int GetLogging ();
221 
222 private:
230  int m_log;
231 };
232 
233 } // namespace ns3
234 
235 #endif /* WAVE_BSM_STATS_H*/
void SetLogging(int log)
Enables/disables logging.
void SetExpectedRxPktCount(int index, int count)
Sets the count of packets expected to received.
double GetBsmPdr(int index)
Returns the BSM Packet Delivery Ratio (PDR) which is the percent of expected packets within range(ind...
int GetRxPktInRangeCount(int index)
Increments the count of actual packets recevied within range(index)
int GetTxByteCount()
Returns the count of (application data) bytes transmitted not include MAC/PHY overhead.
void SetRxPktInRangeCount(int index, int count)
Sets the count of packets within range that are received.
void IncTxByteCount(int bytes)
Increments the count of (application data) bytes transmitted not including MAC/PHY overhead...
void ResetTotalRxPktCounts(int index)
Resets the count of total packets expected and/or within range(index) that are received.
void IncTxPktCount()
Increments the count of transmitted packets.
int GetRxPktCount()
Returns the count of packets received.
int GetTxPktCount()
Returns the count of transmitted packets.
void IncExpectedRxPktCount(int index)
Increments the count of (broadcast) packets expected to be received within the coverage area1...
The WaveBsmStats class implements a stats collector for IEEE 1609 WAVE (Wireless Access in Vehicular ...
void SetRxPktCount(int count)
Sets the count of packets received.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
int GetExpectedRxPktCount(int index)
Returns the count of expected packets received within range(index)
std::vector< int > m_waveTotalPktInCoverageReceiveCounts
std::vector< int > m_wavePktInCoverageReceiveCounts
WaveBsmStats()
Constructor.
void IncRxPktCount()
Increments the count of actual packets received (regardless of coverage area).
void SetTxPktCount(int count)
Sets the count of packets transmitted.
std::vector< int > m_wavePktExpectedReceiveCounts
std::vector< int > m_waveTotalPktExpectedReceiveCounts
void IncRxPktInRangeCount(int index)
Increments the count of actual packets received within the coverage area(index).
int GetLogging()
Gets logging state.
double GetCumulativeBsmPdr(int index)
Returns the cumulative BSM Packet Delivery Ratio (PDR) which is the percent of cumulative expected pa...
A base class which provides memory management and object aggregation.
Definition: object.h:87