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
34namespace ns3
35{
36
37class NetDevice;
38class NodeContainer;
39class NetDeviceContainer;
40class Packet;
41class Mac48Address;
42class 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
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:78
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:50
WifiPreamble
The type of preamble to be used by an IEEE 802.11 transmission.
address
Definition: first.py:40
Every class exported by the ns3 library is enclosed in the ns3 namespace.
WifiPhyState
The state of the PHY layer.