A Discrete-Event Network Simulator
API
athstats-helper.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2009 CTTC
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation;
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program; if not, write to the Free Software
15  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16  *
17  * Author: Nicola Baldo <nbaldo@cttc.es>
18  */
19 
20 #ifndef ATHSTATS_HELPER_H
21 #define ATHSTATS_HELPER_H
22 
23 #include "ns3/nstime.h"
24 #include "ns3/object.h"
25 #include "ns3/ptr.h"
26 #include "ns3/type-id.h"
27 #include "ns3/wifi-phy-common.h"
28 #include "ns3/wifi-phy-state.h"
29 
30 #include <iosfwd>
31 #include <stdint.h>
32 #include <string>
33 
34 namespace ns3
35 {
36 
37 class NetDevice;
38 class NodeContainer;
39 class NetDeviceContainer;
40 class Packet;
41 class Mac48Address;
42 class WifiMode;
43 
50 {
51  public:
59  void EnableAthstats(std::string filename, uint32_t nodeid, uint32_t deviceid);
65  void EnableAthstats(std::string filename, Ptr<NetDevice> nd);
71  void EnableAthstats(std::string filename, NetDeviceContainer d);
77  void EnableAthstats(std::string filename, NodeContainer n);
78 
79  private:
81 };
82 
105 {
106  public:
111  static TypeId GetTypeId();
113  ~AthstatsWifiTraceSink() override;
114 
121  void DevTxTrace(std::string context, Ptr<const Packet> p);
122 
129  void DevRxTrace(std::string context, Ptr<const Packet> p);
130 
138  void TxRtsFailedTrace(std::string context, Mac48Address address);
139 
147  void TxDataFailedTrace(std::string context, Mac48Address address);
148 
156  void TxFinalRtsFailedTrace(std::string context, Mac48Address address);
157 
165  void TxFinalDataFailedTrace(std::string context, Mac48Address address);
166 
177  void PhyRxOkTrace(std::string context,
178  Ptr<const Packet> packet,
179  double snr,
180  WifiMode mode,
181  WifiPreamble preamble);
182 
192  void PhyRxErrorTrace(std::string context, Ptr<const Packet> packet, double snr);
193 
204  void PhyTxTrace(std::string context,
205  Ptr<const Packet> packet,
206  WifiMode mode,
207  WifiPreamble preamble,
208  uint8_t txPower);
209 
219  void PhyStateTrace(std::string context, Time start, Time duration, WifiPhyState state);
220 
226  void Open(const std::string& name);
227 
228  private:
230  void WriteStats();
232  void ResetCounters();
233 
234  uint32_t m_txCount;
235  uint32_t m_rxCount;
236  uint32_t m_shortRetryCount;
237  uint32_t m_longRetryCount;
239  uint32_t m_phyRxOkCount;
240  uint32_t m_phyRxErrorCount;
241  uint32_t m_phyTxCount;
242 
243  std::ofstream* m_writer;
244 
246 
247 }; // class AthstatsWifiTraceSink
248 
249 } // namespace ns3
250 
251 #endif /* ATHSTATS_HELPER_H */
create AthstatsWifiTraceSink instances and connect them to wifi devices
Time m_interval
interval
void EnableAthstats(std::string filename, uint32_t nodeid, uint32_t deviceid)
Enable athstats.
trace sink for wifi device that mimics madwifi's athstats tool.
void TxFinalRtsFailedTrace(std::string context, Mac48Address address)
Function to be called when the transmission of a RTS frame has exceeded the retry limit.
void Open(const std::string &name)
Open a file for output.
static TypeId GetTypeId()
Get the type ID.
void TxFinalDataFailedTrace(std::string context, Mac48Address address)
Function to be called when the transmission of a data frame has exceeded the retry limit.
void PhyRxOkTrace(std::string context, Ptr< const Packet > packet, double snr, WifiMode mode, WifiPreamble preamble)
Function to be called when the PHY layer of the considered device receives a frame.
uint32_t m_txCount
transmit count
void DevRxTrace(std::string context, Ptr< const Packet > p)
function to be called when the net device receives a packet
std::ofstream * m_writer
output stream
uint32_t m_rxCount
receive count
uint32_t m_shortRetryCount
short retry count
void WriteStats()
Write status function.
void TxRtsFailedTrace(std::string context, Mac48Address address)
Function to be called when a RTS frame transmission by the considered device has failed.
void PhyStateTrace(std::string context, Time start, Time duration, WifiPhyState state)
Function to be called when the PHY layer of the considered device changes state.
void PhyRxErrorTrace(std::string context, Ptr< const Packet > packet, double snr)
Function to be called when a frame reception by the PHY layer of the considered device resulted in an...
void DevTxTrace(std::string context, Ptr< const Packet > p)
function to be called when the net device transmits a packet
uint32_t m_longRetryCount
long retry count
void PhyTxTrace(std::string context, Ptr< const Packet > packet, WifiMode mode, WifiPreamble preamble, uint8_t txPower)
Function to be called when a frame is being transmitted by the PHY layer of the considered device.
uint32_t m_phyTxCount
PHY transmit count.
void TxDataFailedTrace(std::string context, Mac48Address address)
Function to be called when a data frame transmission by the considered device has failed.
uint32_t m_phyRxOkCount
PHY receive OK count.
uint32_t m_phyRxErrorCount
PHY receive error count.
void ResetCounters()
Reset counters function.
uint32_t m_exceededRetryCount
exceeded retry count
an EUI-48 address
Definition: mac48-address.h:46
holds a vector of ns3::NetDevice pointers
keep track of a set of node pointers.
A base class which provides memory management and object aggregation.
Definition: object.h:89
Smart pointer class similar to boost::intrusive_ptr.
Definition: ptr.h:77
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:105
a unique identifier for an interface.
Definition: type-id.h:59
represent a single transmission mode
Definition: wifi-mode.h:51
WifiPreamble
The type of preamble to be used by an IEEE 802.11 transmission.
address
Definition: first.py:47
Every class exported by the ns3 library is enclosed in the ns3 namespace.
WifiPhyState
The state of the PHY layer.