src/wifi/helper/athstats-helper.h
author Vedran Miletić <rivanvx@gmail.com>
Tue, 02 Aug 2011 17:42:33 -0400
changeset 7385 10beb0e53130
parent 7141 072fb225b714
child 11045 6024c150e4c8
permissions -rw-r--r--
standardize emacs c++ mode comments
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7385
10beb0e53130 standardize emacs c++ mode comments
Vedran Miletić <rivanvx@gmail.com>
parents: 7141
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     2
/*
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     3
 * Copyright (c) 2009 CTTC
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     4
 *
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     8
 *
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    12
 * GNU General Public License for more details.
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    13
 *
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    17
 *
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    18
 * Author: Nicola Baldo <nbaldo@cttc.es>
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    19
 */
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    20
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    21
#ifndef ATHSTATS_HELPER_H
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    22
#define ATHSTATS_HELPER_H
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    23
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
    24
#include <string>
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    25
#include "ns3/object.h"
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    26
#include "ns3/attribute.h"
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    27
#include "ns3/object-factory.h"
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    28
#include "ns3/node-container.h"
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    29
#include "ns3/net-device-container.h"
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    30
#include "ns3/nstime.h"
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    31
#include "ns3/wifi-phy.h"
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    32
#include "ns3/double.h"
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    33
#include "ns3/mac48-address.h"
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    34
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    35
namespace ns3 {
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    36
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    37
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    38
class NetDevice;
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    39
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    40
/**
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    41
 * @brief create AthstatsWifiTraceSink instances and connect them to wifi devices
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    42
 *
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
    43
 *
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    44
 */
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    45
class AthstatsHelper
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    46
{
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    47
public:
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    48
  AthstatsHelper ();
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    49
  void EnableAthstats (std::string filename,  uint32_t nodeid, uint32_t deviceid);
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    50
  void EnableAthstats (std::string filename, Ptr<NetDevice> nd);
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    51
  void EnableAthstats (std::string filename, NetDeviceContainer d);
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    52
  void EnableAthstats (std::string filename, NodeContainer n);
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
    53
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    54
private:
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
    55
  Time m_interval;
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    56
};
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    57
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    58
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    59
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    60
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    61
/**
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    62
 * @brief trace sink for wifi device that mimics madwifi's athstats tool.
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    63
 *
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    64
 * The AthstatsWifiTraceSink class is a trace sink to be connected to several of the traces
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    65
 * available within a wifi device. The purpose of AthstatsWifiTraceSink is to
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    66
 * mimic the behavior of the athstats tool distributed wih the madwifi
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    67
 * driver. In particular, the reproduced behavior is that obtained
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    68
 * when executing athstats without parameters: a report written in
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    69
 * text format is produced every fixed interval, based on the events
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
    70
 * observed by the wifi device.
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
    71
 *
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    72
 * Differences with the "real" athstats:
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    73
 *
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    74
 * - AthstatsWifiTraceSink is expected to write its output to a file
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    75
 *   (not to stdout).
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    76
 *
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    77
 * - only a subset of the metrics supported by athstats is supported
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    78
 *   by AthstatsWifiTraceSink
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
    79
 *
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    80
 * - AthstatsWifiTraceSink does never produce a cumulative report.
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    81
 */
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    82
class AthstatsWifiTraceSink  : public Object
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    83
{
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
    84
public:
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    85
  static TypeId GetTypeId (void);
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    86
  AthstatsWifiTraceSink ();
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    87
  virtual ~AthstatsWifiTraceSink ();
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
    88
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    89
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
    90
  /**
5361
e8989b44bffb Doxygen and wscript messages point to test.py
Craig Dowell <craigdo@ee.washington.edu>
parents: 4734
diff changeset
    91
   * function to be called when the net device transmits a packet
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
    92
   *
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
    93
   * @param context
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    94
   * @param p the packet being transmitted
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    95
   */
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    96
  void DevTxTrace (std::string context, Ptr<const Packet> p);
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    97
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
    98
  /**
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
    99
   * function to be called when the net device receives a packet
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   100
   *
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   101
   * @param context
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   102
   * @param p the packet being received
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   103
   */
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   104
  void DevRxTrace (std::string context, Ptr<const Packet> p);
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   105
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   106
  /**
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   107
   * Function to be called when a RTS frame transmission by the considered
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   108
   * device has failed
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   109
   *
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   110
   * @param context
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   111
   * @param address the MAC address of the remote station
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   112
   */
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   113
  void TxRtsFailedTrace (std::string context, Mac48Address address);
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   114
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   115
  /**
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   116
   * Function to be called when a data frame transmission by the considered
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   117
   * device has failed
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   118
   *
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   119
   * @param context
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   120
   * @param address the MAC address of the remote station
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   121
   */
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   122
  void TxDataFailedTrace (std::string context, Mac48Address address);
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   123
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   124
  /**
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   125
   * Function to be called when the transmission of a RTS frame has
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   126
   * exceeded the retry limit
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   127
   *
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   128
   * @param context
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   129
   * @param address the MAC address of the remote station
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   130
   */
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   131
  void TxFinalRtsFailedTrace (std::string context, Mac48Address address);
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   132
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   133
  /**
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   134
   * Function to be called when the transmission of a data frame has
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   135
   * exceeded the retry limit
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   136
   *
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   137
   * @param context
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   138
   * @param address the MAC address of the remote station
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   139
   */
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   140
  void TxFinalDataFailedTrace (std::string context, Mac48Address address);
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   141
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   142
  /**
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   143
   * Function to be called when the PHY layer  of the considered
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   144
   * device receives a frame
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   145
   *
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   146
   * @param context
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   147
   * @param packet
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   148
   * @param snr
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   149
   * @param mode
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   150
   * @param preamble
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   151
   */
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   152
  void PhyRxOkTrace (std::string context, Ptr<const Packet> packet, double snr, WifiMode mode, enum WifiPreamble preamble);
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   153
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   154
  /**
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   155
   * Function to be called when a frame reception by the PHY
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   156
   * layer  of the considered device resulted in an error due to a failure in the CRC check of
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   157
   * the frame
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   158
   *
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   159
   * @param context
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   160
   * @param packet
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   161
   * @param snr
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   162
   */
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   163
  void PhyRxErrorTrace (std::string context, Ptr<const Packet> packet, double snr);
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   164
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   165
  /**
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   166
   * Function to be called when a frame is being transmitted by the
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   167
   * PHY layer of the considered device
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   168
   *
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   169
   * @param context
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   170
   * @param packet
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   171
   * @param mode
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   172
   * @param preamble
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   173
   * @param txPower
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   174
   */
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   175
  void PhyTxTrace (std::string context, Ptr<const Packet> packet, WifiMode mode, WifiPreamble preamble, uint8_t txPower);
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   176
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   177
  /**
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   178
   * Function to be called when the PHY layer of the considered device
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   179
   * changes state
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   180
   *
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   181
   * @param context
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   182
   * @param start
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   183
   * @param duration
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   184
   * @param state
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   185
   */
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   186
  void PhyStateTrace (std::string context, Time start, Time duration, enum WifiPhy::State state);
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   187
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   188
  /**
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   189
   * Open a file for output
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   190
   *
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   191
   * @param name the name of the file to be opened.
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   192
   */
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   193
  void Open (std::string const& name);
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   194
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   195
private:
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   196
  /**
5361
e8989b44bffb Doxygen and wscript messages point to test.py
Craig Dowell <craigdo@ee.washington.edu>
parents: 4734
diff changeset
   197
   * @internal
e8989b44bffb Doxygen and wscript messages point to test.py
Craig Dowell <craigdo@ee.washington.edu>
parents: 4734
diff changeset
   198
   */
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   199
  void WriteStats ();
5361
e8989b44bffb Doxygen and wscript messages point to test.py
Craig Dowell <craigdo@ee.washington.edu>
parents: 4734
diff changeset
   200
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   201
  /**
5361
e8989b44bffb Doxygen and wscript messages point to test.py
Craig Dowell <craigdo@ee.washington.edu>
parents: 4734
diff changeset
   202
   * @internal
e8989b44bffb Doxygen and wscript messages point to test.py
Craig Dowell <craigdo@ee.washington.edu>
parents: 4734
diff changeset
   203
   */
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   204
  void ResetCounters ();
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   205
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   206
  uint32_t m_txCount;
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   207
  uint32_t m_rxCount;
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   208
  uint32_t m_shortRetryCount;
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   209
  uint32_t m_longRetryCount;
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   210
  uint32_t m_exceededRetryCount;
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   211
  uint32_t m_phyRxOkCount;
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   212
  uint32_t m_phyRxErrorCount;
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   213
  uint32_t m_phyTxCount;
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   214
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   215
  std::ofstream *m_writer;
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   216
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   217
  Time m_interval;
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   218
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   219
}; // class AthstatsWifiTraceSink
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   220
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   221
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   222
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6865
diff changeset
   223
4734
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   224
} // namespace ns3
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   225
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   226
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   227
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   228
0b29285cc1af added AthstatsWifiTraceSink and AthstatsHelper
Nicola Baldo <nbaldo@cttc.es>
parents:
diff changeset
   229
#endif /* ATHSTATS_HELPER_H */