src/devices/mesh/mesh-wifi-interface-mac.h
author Kirill Andreev <andreev@iitp.ru>
Tue, 09 Jun 2009 20:13:11 +0400
changeset 5054 49851228eec9
parent 5020 79e8178d69eb
child 5092 39e4d3a81e1c
permissions -rw-r--r--
Added interface helper
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4843
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
     2
/* 
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
     3
 * Copyright (c) 2009 IITP RAS
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
     4
 * 
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
     8
 *
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    12
 * GNU General Public License for more details.
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    13
 *
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    17
 * 
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    18
 * Authors: Kirill Andreev <andreev@iitp.ru>
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    19
 *          Pavel Boyko <boyko@iitp.ru>
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    20
 */
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    21
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    22
#ifndef MESHWIFIINTERFACEMAC_H_
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    23
#define MESHWIFIINTERFACEMAC_H_
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    24
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    25
#include <stdint.h>
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    26
#include <map>
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    27
#include "ns3/mac48-address.h"
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    28
#include "ns3/mgt-headers.h"
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    29
#include "ns3/callback.h"
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    30
#include "ns3/packet.h"
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    31
#include "ns3/nstime.h"
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    32
#include "ns3/wifi-remote-station-manager.h"
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    33
#include "ns3/wifi-mac.h"
4844
3c38e23fa821 Basic MAC plugins functionality implemented
Pavel Boyko <boyko@iitp.ru>
parents: 4843
diff changeset
    34
#include "ns3/mesh-wifi-interface-mac-plugin.h"
4872
ea1bce018a44 Added namespace dot11s
Kirill Andreev <andreev@iitp.ru>
parents: 4865
diff changeset
    35
#include "ns3/event-id.h"
4843
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    36
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    37
namespace ns3 {
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    38
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    39
class WifiMacHeader;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    40
class DcaTxop;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    41
class WifiPhy;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    42
class DcfManager;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    43
class MacRxMiddle;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    44
class MacLow;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    45
/**
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    46
 * \ingroup mesh
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    47
 *
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    48
 * \brief Basic MAC of mesh point Wi-Fi interface. Its function is extendable through plugins mechanism.
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    49
 * 
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    50
 * Now only three output queues are used:
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    51
 *  - beacons (PIFS and no backoff),
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    52
 *  - background traffic,
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    53
 *  - management and priority traffic.
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    54
 *  
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    55
 */
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    56
class MeshWifiInterfaceMac : public WifiMac
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    57
{
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    58
public:
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    59
  /// Never forget to support typeid
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    60
  static TypeId  GetTypeId ();
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    61
  /// C-tor
4852
123dc54d734e Coding style changes: indentation (some fixes), spaces in operators, function
Andrey Mazo <mazo@iitp.ru>
parents: 4849
diff changeset
    62
  MeshWifiInterfaceMac ();
4843
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    63
  /// D-tor
4852
123dc54d734e Coding style changes: indentation (some fixes), spaces in operators, function
Andrey Mazo <mazo@iitp.ru>
parents: 4849
diff changeset
    64
  virtual ~MeshWifiInterfaceMac ();
4843
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    65
  
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    66
  ///\name Inherited from WifiMac
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    67
  //\{
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    68
  virtual void  SetSlot (Time slotTime);
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    69
  virtual void  SetSifs (Time sifs);
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    70
  virtual void  SetPifs (Time pifs);
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    71
  virtual void  SetCtsTimeout (Time ctsTimeout);
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    72
  virtual void  SetAckTimeout (Time ackTimeout);
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    73
  virtual void  SetEifsNoDifs (Time eifsNoDifs);
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    74
  virtual Time  GetSlot () const;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    75
  virtual Time  GetSifs () const;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    76
  virtual Time  GetPifs () const;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    77
  virtual Time  GetCtsTimeout () const;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    78
  virtual Time  GetAckTimeout () const;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    79
  virtual Time  GetEifsNoDifs () const;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    80
  virtual void  SetWifiPhy (Ptr<WifiPhy> phy);
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    81
  virtual void  SetWifiRemoteStationManager (Ptr<WifiRemoteStationManager> stationManager);
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    82
  virtual void  Enqueue (Ptr<const Packet> packet, Mac48Address to, Mac48Address from);
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    83
  virtual void  Enqueue (Ptr<const Packet> packet, Mac48Address to);
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    84
  virtual bool  SupportsSendFrom () const;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    85
  virtual void  SetForwardUpCallback (Callback<void,Ptr<Packet>, Mac48Address, Mac48Address> upCallback);
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    86
  virtual void  SetLinkUpCallback (Callback<void> linkUp);
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    87
  virtual void  SetLinkDownCallback (Callback<void> linkDown);
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    88
  virtual Mac48Address GetAddress () const;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    89
  virtual Mac48Address GetBssid () const;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    90
  virtual Ssid  GetSsid () const;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    91
  virtual void  SetAddress (Mac48Address address);
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    92
  virtual void  SetSsid (Ssid ssid);
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    93
  //\}
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
    94
  
4985
8dbdba66f5e1 Mehs point MAC address is now known to all interfaces and included into beacons as Address3
Pavel Boyko <boyko@iitp.ru>
parents: 4946
diff changeset
    95
  ///\name Each mesh point interfaces must know the mesh point address
8dbdba66f5e1 Mehs point MAC address is now known to all interfaces and included into beacons as Address3
Pavel Boyko <boyko@iitp.ru>
parents: 4946
diff changeset
    96
  //\{
8dbdba66f5e1 Mehs point MAC address is now known to all interfaces and included into beacons as Address3
Pavel Boyko <boyko@iitp.ru>
parents: 4946
diff changeset
    97
  void SetMeshPointAddress (Mac48Address);
8dbdba66f5e1 Mehs point MAC address is now known to all interfaces and included into beacons as Address3
Pavel Boyko <boyko@iitp.ru>
parents: 4946
diff changeset
    98
  Mac48Address GetMeshPointAddress () const;
8dbdba66f5e1 Mehs point MAC address is now known to all interfaces and included into beacons as Address3
Pavel Boyko <boyko@iitp.ru>
parents: 4946
diff changeset
    99
  //\}
4843
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   100
  ///\name Beacons
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   101
  //\{
4929
1689c94d7442 802.11s helper (ns3::dot11s::MeshWifiHelper) refactored
Pavel Boyko <boyko@iitp.ru>
parents: 4878
diff changeset
   102
  /// Set maximum initial random delay before first beacon
1689c94d7442 802.11s helper (ns3::dot11s::MeshWifiHelper) refactored
Pavel Boyko <boyko@iitp.ru>
parents: 4878
diff changeset
   103
  void SetRandomStartDelay (Time interval);
4843
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   104
  /// Set interval between two successive beacons
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   105
  void SetBeaconInterval (Time interval);
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   106
  /// \return interval between two beacons
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   107
  Time GetBeaconInterval () const;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   108
  /** 
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   109
   * \brief Next beacon frame time
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   110
   * 
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   111
   * This is supposed to be used by any entity managing beacon collision avoidance (e.g. Peer management protocol in 802.11s)
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   112
   */ 
4855
0b5980b04249 Restructured helper: switch to new mac, now only beacon functionality works
Kirill Andreev <andreev@iitp.ru>
parents: 4852
diff changeset
   113
  Time GetTbtt () const;
4843
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   114
  /**
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   115
   * \brief Shift TBTT.
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   116
   * 
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   117
   * This is supposed to be used by any entity managing beacon collision avoidance (e.g. Peer management protocol in 802.11s)
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   118
   * 
4857
ddfb13420455 Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents: 4855
diff changeset
   119
   * \attention User of ShiftTbtt () must take care to not shift it to the past. 
4843
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   120
   */
4857
ddfb13420455 Added new peer manager class, an old one we keep without change
Kirill Andreev <andreev@iitp.ru>
parents: 4855
diff changeset
   121
  void ShiftTbtt (Time shift);
4843
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   122
  //\}
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   123
  
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   124
  ///\name Plugins
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   125
  //\{
4844
3c38e23fa821 Basic MAC plugins functionality implemented
Pavel Boyko <boyko@iitp.ru>
parents: 4843
diff changeset
   126
  /// Install plugin. TODO return unique ID to allow unregister plugins
4852
123dc54d734e Coding style changes: indentation (some fixes), spaces in operators, function
Andrey Mazo <mazo@iitp.ru>
parents: 4849
diff changeset
   127
  void InstallPlugin (Ptr<MeshWifiInterfaceMacPlugin> plugin);
4843
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   128
  //\}
4934
345b49df838b Frequency channel switch on channel, PHY and MAC levels
Pavel Boyko <boyko@iitp.ru>
parents: 4929
diff changeset
   129
  
345b49df838b Frequency channel switch on channel, PHY and MAC levels
Pavel Boyko <boyko@iitp.ru>
parents: 4929
diff changeset
   130
  /** \name Channel switching
345b49df838b Frequency channel switch on channel, PHY and MAC levels
Pavel Boyko <boyko@iitp.ru>
parents: 4929
diff changeset
   131
   * 
5015
e460e29f9f78 Statistics fixed
Kirill Andreev <andreev@iitp.ru>
parents: 5014
diff changeset
   132
   * Channel center frequency = Channel starting frequency + 5 * channel_id (MHz), 
4934
345b49df838b Frequency channel switch on channel, PHY and MAC levels
Pavel Boyko <boyko@iitp.ru>
parents: 4929
diff changeset
   133
   * where Starting channel frequency is standard-dependent as defined in IEEE 802.11-2007 17.3.8.3.2.
345b49df838b Frequency channel switch on channel, PHY and MAC levels
Pavel Boyko <boyko@iitp.ru>
parents: 4929
diff changeset
   134
   * 
345b49df838b Frequency channel switch on channel, PHY and MAC levels
Pavel Boyko <boyko@iitp.ru>
parents: 4929
diff changeset
   135
   * Number of channels to use must be limited elsewhere. 
345b49df838b Frequency channel switch on channel, PHY and MAC levels
Pavel Boyko <boyko@iitp.ru>
parents: 4929
diff changeset
   136
   */
4865
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents: 4857
diff changeset
   137
  //\{
4934
345b49df838b Frequency channel switch on channel, PHY and MAC levels
Pavel Boyko <boyko@iitp.ru>
parents: 4929
diff changeset
   138
  /// Return true if PHY layer can switch channels
345b49df838b Frequency channel switch on channel, PHY and MAC levels
Pavel Boyko <boyko@iitp.ru>
parents: 4929
diff changeset
   139
  bool CanSwitchChannel () const;
345b49df838b Frequency channel switch on channel, PHY and MAC levels
Pavel Boyko <boyko@iitp.ru>
parents: 4929
diff changeset
   140
  /// Current channel Id
345b49df838b Frequency channel switch on channel, PHY and MAC levels
Pavel Boyko <boyko@iitp.ru>
parents: 4929
diff changeset
   141
  uint16_t GetFrequencyChannel () const;
345b49df838b Frequency channel switch on channel, PHY and MAC levels
Pavel Boyko <boyko@iitp.ru>
parents: 4929
diff changeset
   142
  /// Switch channel
345b49df838b Frequency channel switch on channel, PHY and MAC levels
Pavel Boyko <boyko@iitp.ru>
parents: 4929
diff changeset
   143
  void SwitchFrequencyChannel (uint16_t new_id);
4865
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents: 4857
diff changeset
   144
  //\}
4934
345b49df838b Frequency channel switch on channel, PHY and MAC levels
Pavel Boyko <boyko@iitp.ru>
parents: 4929
diff changeset
   145
  
345b49df838b Frequency channel switch on channel, PHY and MAC levels
Pavel Boyko <boyko@iitp.ru>
parents: 4929
diff changeset
   146
  /// To be used by plugins sending management frames.
345b49df838b Frequency channel switch on channel, PHY and MAC levels
Pavel Boyko <boyko@iitp.ru>
parents: 4929
diff changeset
   147
  void SendManagementFrame(Ptr<Packet> frame, const WifiMacHeader& hdr);
345b49df838b Frequency channel switch on channel, PHY and MAC levels
Pavel Boyko <boyko@iitp.ru>
parents: 4929
diff changeset
   148
  /// \return true if rates are supported
4865
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents: 4857
diff changeset
   149
  bool CheckSupportedRates(SupportedRates rates) const;
4934
345b49df838b Frequency channel switch on channel, PHY and MAC levels
Pavel Boyko <boyko@iitp.ru>
parents: 4929
diff changeset
   150
  /// \return list of supported bitrates
4865
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents: 4857
diff changeset
   151
  SupportedRates GetSupportedRates () const;
4946
f97e16db1d79 Added airtime link metric. packet error rate is not done yet
Kirill Andreev <andreev@iitp.ru>
parents: 4944
diff changeset
   152
  ///\ name Metric Calculation routines:
f97e16db1d79 Added airtime link metric. packet error rate is not done yet
Kirill Andreev <andreev@iitp.ru>
parents: 4944
diff changeset
   153
  ///\{
f97e16db1d79 Added airtime link metric. packet error rate is not done yet
Kirill Andreev <andreev@iitp.ru>
parents: 4944
diff changeset
   154
  void SetLinkMetricCallback(Callback<uint32_t, Mac48Address, Ptr<MeshWifiInterfaceMac> > cb);
4944
779b641cff5a Unicast chain instead of broadcast data frame added. Metric
Kirill Andreev <andreev@iitp.ru>
parents: 4934
diff changeset
   155
  uint32_t GetLinkMetric(Mac48Address peerAddress);
4946
f97e16db1d79 Added airtime link metric. packet error rate is not done yet
Kirill Andreev <andreev@iitp.ru>
parents: 4944
diff changeset
   156
  Ptr<WifiRemoteStationManager> GetStationManager ();
f97e16db1d79 Added airtime link metric. packet error rate is not done yet
Kirill Andreev <andreev@iitp.ru>
parents: 4944
diff changeset
   157
  ///\}
5014
3bfccc1d8e01 Interface stats added
Kirill Andreev <andreev@iitp.ru>
parents: 4985
diff changeset
   158
  ///\brief Statistics:
3bfccc1d8e01 Interface stats added
Kirill Andreev <andreev@iitp.ru>
parents: 4985
diff changeset
   159
  void Report (std::ostream &) const;
3bfccc1d8e01 Interface stats added
Kirill Andreev <andreev@iitp.ru>
parents: 4985
diff changeset
   160
  void ResetStats ();
4843
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   161
private:
5054
49851228eec9 Added interface helper
Kirill Andreev <andreev@iitp.ru>
parents: 5020
diff changeset
   162
  Ptr<DcaTxop> GetBE(void) const;
49851228eec9 Added interface helper
Kirill Andreev <andreev@iitp.ru>
parents: 5020
diff changeset
   163
  void SetBE (Ptr<DcaTxop> dcaTxop);
49851228eec9 Added interface helper
Kirill Andreev <andreev@iitp.ru>
parents: 5020
diff changeset
   164
  Ptr<DcaTxop> GetVO(void) const;
49851228eec9 Added interface helper
Kirill Andreev <andreev@iitp.ru>
parents: 5020
diff changeset
   165
  void SetVO (Ptr<DcaTxop> dcaTxop);
4843
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   166
  /// Frame receive handler
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   167
  void  Receive (Ptr<Packet> packet, WifiMacHeader const *hdr);
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   168
  /// Forward frame to mesh point
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   169
  virtual void ForwardUp (Ptr<Packet> packet, Mac48Address src, Mac48Address dst);
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   170
  /// Send frame. Frame is supposed to be tagged by routing information. TODO: clarify this point 
4852
123dc54d734e Coding style changes: indentation (some fixes), spaces in operators, function
Andrey Mazo <mazo@iitp.ru>
parents: 4849
diff changeset
   171
  void  ForwardDown (Ptr<const Packet> packet, Mac48Address from, Mac48Address to);
4843
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   172
  /// Send beacon
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   173
  void SendBeacon ();
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   174
  /// Schedule next beacon
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   175
  void ScheduleNextBeacon ();
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   176
  /// Enable/disable beacons
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   177
  void SetBeaconGeneration (bool enable);
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   178
  /// Get current beaconing status
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   179
  bool GetBeaconGeneration () const;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   180
  /// Real d-tor
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   181
  virtual void DoDispose ();
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   182
  
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   183
private:
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   184
  ///\name Wifi MAC internals
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   185
  //\{
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   186
  Ptr<DcaTxop>   m_BE;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   187
  Ptr<DcaTxop>   m_BK;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   188
  Ptr<DcaTxop>   m_VI;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   189
  Ptr<DcaTxop>   m_VO;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   190
  Ptr<DcaTxop>   m_beaconDca;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   191
  Ptr<WifiRemoteStationManager> m_stationManager;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   192
  Ptr<WifiPhy>   m_phy;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   193
  Callback<void, Ptr<Packet>, Mac48Address, Mac48Address>  m_upCallback;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   194
  //\}
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   195
  
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   196
  ///\name Wifi timing intervals
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   197
  //\{
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   198
  Time m_slot;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   199
  Time m_sifs;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   200
  Time m_pifs;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   201
  Time m_ackTimeout;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   202
  Time m_ctsTimeout;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   203
  Time m_eifsNoDifs;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   204
  //\}
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   205
  
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   206
  ///\name Mesh timing intervals 
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   207
  //\{
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   208
  /// Beaconing interval.
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   209
  Time m_beaconInterval;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   210
  /// Maximum delay before first beacon
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   211
  Time m_randomStart;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   212
  /// Time for the next frame
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   213
  Time m_tbtt;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   214
  //\}
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   215
  
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   216
  /// DCF implementation
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   217
  DcfManager* m_dcfManager;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   218
  /// Middle MAC sublayer
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   219
  MacRxMiddle* m_rxMiddle;
4849
323c3cf6cf96 Merge fix - mac interface did not compile
Kirill Andreev <andreev@iitp.ru>
parents: 4844
diff changeset
   220
  /// Low MAC sublayer
4843
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   221
  Ptr<MacLow> m_low;
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   222
  /// My address
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   223
  Mac48Address m_address;
4985
8dbdba66f5e1 Mehs point MAC address is now known to all interfaces and included into beacons as Address3
Pavel Boyko <boyko@iitp.ru>
parents: 4946
diff changeset
   224
  /// Mesh point address
8dbdba66f5e1 Mehs point MAC address is now known to all interfaces and included into beacons as Address3
Pavel Boyko <boyko@iitp.ru>
parents: 4946
diff changeset
   225
  Mac48Address m_mpAddress;
4843
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   226
  /// SSID
4865
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents: 4857
diff changeset
   227
  Ssid m_meshId;
4843
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   228
  
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   229
  /// "Timer" for the next beacon 
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   230
  EventId m_beaconSendEvent;
4844
3c38e23fa821 Basic MAC plugins functionality implemented
Pavel Boyko <boyko@iitp.ru>
parents: 4843
diff changeset
   231
  
3c38e23fa821 Basic MAC plugins functionality implemented
Pavel Boyko <boyko@iitp.ru>
parents: 4843
diff changeset
   232
  typedef std::vector< Ptr<MeshWifiInterfaceMacPlugin> > PluginList; 
3c38e23fa821 Basic MAC plugins functionality implemented
Pavel Boyko <boyko@iitp.ru>
parents: 4843
diff changeset
   233
  /// List of all installed plugins
3c38e23fa821 Basic MAC plugins functionality implemented
Pavel Boyko <boyko@iitp.ru>
parents: 4843
diff changeset
   234
  PluginList m_plugins;
4946
f97e16db1d79 Added airtime link metric. packet error rate is not done yet
Kirill Andreev <andreev@iitp.ru>
parents: 4944
diff changeset
   235
  Callback<uint32_t, Mac48Address, Ptr<MeshWifiInterfaceMac> > m_linkMetricCallback;
5014
3bfccc1d8e01 Interface stats added
Kirill Andreev <andreev@iitp.ru>
parents: 4985
diff changeset
   236
  ///\name Statistics:
3bfccc1d8e01 Interface stats added
Kirill Andreev <andreev@iitp.ru>
parents: 4985
diff changeset
   237
  ///\{
3bfccc1d8e01 Interface stats added
Kirill Andreev <andreev@iitp.ru>
parents: 4985
diff changeset
   238
  struct Statistics
3bfccc1d8e01 Interface stats added
Kirill Andreev <andreev@iitp.ru>
parents: 4985
diff changeset
   239
  {
3bfccc1d8e01 Interface stats added
Kirill Andreev <andreev@iitp.ru>
parents: 4985
diff changeset
   240
    uint16_t recvBeacons;
3bfccc1d8e01 Interface stats added
Kirill Andreev <andreev@iitp.ru>
parents: 4985
diff changeset
   241
    uint32_t sentFrames;
3bfccc1d8e01 Interface stats added
Kirill Andreev <andreev@iitp.ru>
parents: 4985
diff changeset
   242
    uint32_t sentBytes;
3bfccc1d8e01 Interface stats added
Kirill Andreev <andreev@iitp.ru>
parents: 4985
diff changeset
   243
    uint32_t recvFrames;
3bfccc1d8e01 Interface stats added
Kirill Andreev <andreev@iitp.ru>
parents: 4985
diff changeset
   244
    uint32_t recvBytes;
3bfccc1d8e01 Interface stats added
Kirill Andreev <andreev@iitp.ru>
parents: 4985
diff changeset
   245
    void Print (std::ostream & os) const;
3bfccc1d8e01 Interface stats added
Kirill Andreev <andreev@iitp.ru>
parents: 4985
diff changeset
   246
    Statistics () :
3bfccc1d8e01 Interface stats added
Kirill Andreev <andreev@iitp.ru>
parents: 4985
diff changeset
   247
      recvBeacons (0),
3bfccc1d8e01 Interface stats added
Kirill Andreev <andreev@iitp.ru>
parents: 4985
diff changeset
   248
      sentFrames (0),
3bfccc1d8e01 Interface stats added
Kirill Andreev <andreev@iitp.ru>
parents: 4985
diff changeset
   249
      sentBytes (0),
3bfccc1d8e01 Interface stats added
Kirill Andreev <andreev@iitp.ru>
parents: 4985
diff changeset
   250
      recvFrames (0),
3bfccc1d8e01 Interface stats added
Kirill Andreev <andreev@iitp.ru>
parents: 4985
diff changeset
   251
      recvBytes (0)
3bfccc1d8e01 Interface stats added
Kirill Andreev <andreev@iitp.ru>
parents: 4985
diff changeset
   252
      {}
3bfccc1d8e01 Interface stats added
Kirill Andreev <andreev@iitp.ru>
parents: 4985
diff changeset
   253
  };
3bfccc1d8e01 Interface stats added
Kirill Andreev <andreev@iitp.ru>
parents: 4985
diff changeset
   254
  Statistics m_stats;
3bfccc1d8e01 Interface stats added
Kirill Andreev <andreev@iitp.ru>
parents: 4985
diff changeset
   255
  ///\}
3bfccc1d8e01 Interface stats added
Kirill Andreev <andreev@iitp.ru>
parents: 4985
diff changeset
   256
4843
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   257
};
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   258
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   259
} // namespace ns3
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   260
f65f22ef327e MeshWifiInterfaceMac just added and beacon generation refactored
Pavel Boyko <boyko@iitp.ru>
parents:
diff changeset
   261
#endif /* MESHWIFIINTERFACEMAC_H_ */