src/helper/mesh-helper.h
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Mon, 01 Feb 2010 08:09:11 +0100
changeset 5937 aa754f49d2f3
parent 5417 899604299046
child 6273 8d70de29d514
permissions -rw-r--r--
merge with HEAD
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
     2
/*
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
     3
 * Copyright (c) 2008,2009 IITP RAS
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
     4
 *
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
     8
 *
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
    12
 * GNU General Public License for more details.
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
    13
 *
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
    17
 *
4811
080b8f23fa4a Added license information to some files.
Andrey Mazo <mazo@iitp.ru>
parents: 4793
diff changeset
    18
 * Author: Kirill Andreev <andreev@iitp.ru>
4929
1689c94d7442 802.11s helper (ns3::dot11s::MeshWifiHelper) refactored
Pavel Boyko <boyko@iitp.ru>
parents: 4887
diff changeset
    19
 *         Pavel Boyko <boyko@iitp.ru>
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
    20
 */
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
    21
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
    22
5164
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
    23
#ifndef MESH_HELPER_H
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
    24
#define MESH_HELPER_H
4929
1689c94d7442 802.11s helper (ns3::dot11s::MeshWifiHelper) refactored
Pavel Boyko <boyko@iitp.ru>
parents: 4887
diff changeset
    25
4860
bb5194d57734 New peer management protocol moved to 802.11s/
Pavel Boyko <boyko@iitp.ru>
parents: 4858
diff changeset
    26
#include "ns3/wifi-helper.h"
5081
869b81c5e774 Restructured installers
Kirill Andreev <andreev@iitp.ru>
parents: 5063
diff changeset
    27
#include "ns3/mesh-stack-installer.h"
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
    28
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    29
namespace ns3 {
4855
0b5980b04249 Restructured helper: switch to new mac, now only beacon functionality works
Kirill Andreev <andreev@iitp.ru>
parents: 4852
diff changeset
    30
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    31
class WifiChannel;
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
    32
4815
4d5befafc0a5 L2RoutingNetDevice refactored to MeshPointDevice
pavlo
parents: 4813
diff changeset
    33
/** 
4860
bb5194d57734 New peer management protocol moved to 802.11s/
Pavel Boyko <boyko@iitp.ru>
parents: 4858
diff changeset
    34
 * \ingroup dot11s
4815
4d5befafc0a5 L2RoutingNetDevice refactored to MeshPointDevice
pavlo
parents: 4813
diff changeset
    35
 * 
4929
1689c94d7442 802.11s helper (ns3::dot11s::MeshWifiHelper) refactored
Pavel Boyko <boyko@iitp.ru>
parents: 4887
diff changeset
    36
 * \brief Helper to create IEEE 802.11s mesh networks
4815
4d5befafc0a5 L2RoutingNetDevice refactored to MeshPointDevice
pavlo
parents: 4813
diff changeset
    37
 */
5086
fccfd0073ea3 Fixed names: now protocols are called *-protocol.[h,cc], plugin is called
Kirill Andreev <andreev@iitp.ru>
parents: 5081
diff changeset
    38
class MeshHelper
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    39
{
4929
1689c94d7442 802.11s helper (ns3::dot11s::MeshWifiHelper) refactored
Pavel Boyko <boyko@iitp.ru>
parents: 4887
diff changeset
    40
public:
5362
d31f56c9b7cb Piles o' doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents: 5202
diff changeset
    41
  /**
d31f56c9b7cb Piles o' doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents: 5202
diff changeset
    42
   * Construct a MeshHelper used to make life easier when creating 802.11s networks.
d31f56c9b7cb Piles o' doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents: 5202
diff changeset
    43
   */
5164
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
    44
  MeshHelper ();
5362
d31f56c9b7cb Piles o' doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents: 5202
diff changeset
    45
d31f56c9b7cb Piles o' doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents: 5202
diff changeset
    46
  /**
5417
899604299046 plug leaks (bug 711)
Craig Dowell <craigdo@ee.washington.edu>
parents: 5362
diff changeset
    47
   * Destroy a MeshHelper.
899604299046 plug leaks (bug 711)
Craig Dowell <craigdo@ee.washington.edu>
parents: 5362
diff changeset
    48
   */
899604299046 plug leaks (bug 711)
Craig Dowell <craigdo@ee.washington.edu>
parents: 5362
diff changeset
    49
  ~MeshHelper ();
899604299046 plug leaks (bug 711)
Craig Dowell <craigdo@ee.washington.edu>
parents: 5362
diff changeset
    50
899604299046 plug leaks (bug 711)
Craig Dowell <craigdo@ee.washington.edu>
parents: 5362
diff changeset
    51
  /**
5362
d31f56c9b7cb Piles o' doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents: 5202
diff changeset
    52
   * \brief Set the helper to the default values for the MAC type,  remote
d31f56c9b7cb Piles o' doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents: 5202
diff changeset
    53
   * station manager and channel policy.
d31f56c9b7cb Piles o' doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents: 5202
diff changeset
    54
   */
d31f56c9b7cb Piles o' doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents: 5202
diff changeset
    55
   static MeshHelper Default ();
d31f56c9b7cb Piles o' doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents: 5202
diff changeset
    56
5164
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
    57
  /**
5167
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
    58
   * \param n0 the name of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
    59
   * \param v0 the value of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
    60
   * \param n1 the name of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
    61
   * \param v1 the value of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
    62
   * \param n2 the name of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
    63
   * \param v2 the value of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
    64
   * \param n3 the name of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
    65
   * \param v3 the value of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
    66
   * \param n4 the name of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
    67
   * \param v4 the value of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
    68
   * \param n5 the name of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
    69
   * \param v5 the value of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
    70
   * \param n6 the name of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
    71
   * \param v6 the value of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
    72
   * \param n7 the name of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
    73
   * \param v7 the value of the attribute to set
5164
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
    74
   *
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
    75
   * All the attributes specified in this method should exist
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
    76
   * in the requested mac.
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
    77
   */
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
    78
  void SetMacType (std::string n0 = "", const AttributeValue &v0 = EmptyAttributeValue (),
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
    79
        std::string n1 = "", const AttributeValue &v1 = EmptyAttributeValue (),
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
    80
        std::string n2 = "", const AttributeValue &v2 = EmptyAttributeValue (),
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
    81
        std::string n3 = "", const AttributeValue &v3 = EmptyAttributeValue (),
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
    82
        std::string n4 = "", const AttributeValue &v4 = EmptyAttributeValue (),
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
    83
        std::string n5 = "", const AttributeValue &v5 = EmptyAttributeValue (),
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
    84
        std::string n6 = "", const AttributeValue &v6 = EmptyAttributeValue (),
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
    85
        std::string n7 = "", const AttributeValue &v7 = EmptyAttributeValue ());
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
    86
  /**
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
    87
   * \param type the type of ns3::WifiRemoteStationManager to create.
5167
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
    88
   * \param n0 the name of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
    89
   * \param v0 the value of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
    90
   * \param n1 the name of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
    91
   * \param v1 the value of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
    92
   * \param n2 the name of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
    93
   * \param v2 the value of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
    94
   * \param n3 the name of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
    95
   * \param v3 the value of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
    96
   * \param n4 the name of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
    97
   * \param v4 the value of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
    98
   * \param n5 the name of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
    99
   * \param v5 the value of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
   100
   * \param n6 the name of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
   101
   * \param v6 the value of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
   102
   * \param n7 the name of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
   103
   * \param v7 the value of the attribute to set
5164
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   104
   *
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   105
   * All the attributes specified in this method should exist
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   106
   * in the requested station manager.
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   107
   */
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   108
  void
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   109
  SetRemoteStationManager (std::string type,
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   110
      std::string n0 = "", const AttributeValue &v0 = EmptyAttributeValue (),    
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   111
      std::string n1 = "", const AttributeValue &v1 = EmptyAttributeValue (),
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   112
      std::string n2 = "", const AttributeValue &v2 = EmptyAttributeValue (),
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   113
      std::string n3 = "", const AttributeValue &v3 = EmptyAttributeValue (),
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   114
      std::string n4 = "", const AttributeValue &v4 = EmptyAttributeValue (),
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   115
      std::string n5 = "", const AttributeValue &v5 = EmptyAttributeValue (),
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   116
      std::string n6 = "", const AttributeValue &v6 = EmptyAttributeValue (),
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   117
      std::string n7 = "", const AttributeValue &v7 = EmptyAttributeValue ());
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   118
  /**
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   119
   * Set PHY standard
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   120
   */
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   121
  void SetStandard (enum WifiPhyStandard standard);
5202
53bee26fce31 Missing code, methods declared but not implemented...
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 5167
diff changeset
   122
  //void SetMeshId (std::string s); // XXX
4929
1689c94d7442 802.11s helper (ns3::dot11s::MeshWifiHelper) refactored
Pavel Boyko <boyko@iitp.ru>
parents: 4887
diff changeset
   123
  /** 
4937
7211ebc93e69 Add spread interfaces frequency channels option
Pavel Boyko <boyko@iitp.ru>
parents: 4930
diff changeset
   124
   *  \brief Spread/not spread frequency channels of MP interfaces. 
7211ebc93e69 Add spread interfaces frequency channels option
Pavel Boyko <boyko@iitp.ru>
parents: 4930
diff changeset
   125
   * 
7211ebc93e69 Add spread interfaces frequency channels option
Pavel Boyko <boyko@iitp.ru>
parents: 4930
diff changeset
   126
   *  If set to true different non-overlaping 20MHz frequency 
7211ebc93e69 Add spread interfaces frequency channels option
Pavel Boyko <boyko@iitp.ru>
parents: 4930
diff changeset
   127
   *  channels will be assigned to different mesh point interfaces.
5163
f1119f03b7a9 Code review fixes
Kirill Andreev <andreev@iitp.ru>
parents: 5141
diff changeset
   128
   */
5164
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   129
  enum ChannelPolicy
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   130
  {
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   131
    SPREAD_CHANNELS,
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   132
    ZERO_CHANNEL
5163
f1119f03b7a9 Code review fixes
Kirill Andreev <andreev@iitp.ru>
parents: 5141
diff changeset
   133
  };
5362
d31f56c9b7cb Piles o' doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents: 5202
diff changeset
   134
d31f56c9b7cb Piles o' doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents: 5202
diff changeset
   135
  /**
d31f56c9b7cb Piles o' doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents: 5202
diff changeset
   136
   * \brief set the channel policy
d31f56c9b7cb Piles o' doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents: 5202
diff changeset
   137
   */
5163
f1119f03b7a9 Code review fixes
Kirill Andreev <andreev@iitp.ru>
parents: 5141
diff changeset
   138
  void SetSpreadInterfaceChannels (ChannelPolicy);
f1119f03b7a9 Code review fixes
Kirill Andreev <andreev@iitp.ru>
parents: 5141
diff changeset
   139
  /**
f1119f03b7a9 Code review fixes
Kirill Andreev <andreev@iitp.ru>
parents: 5141
diff changeset
   140
   * \brief Set a number of interfaces in a mesh network
f1119f03b7a9 Code review fixes
Kirill Andreev <andreev@iitp.ru>
parents: 5141
diff changeset
   141
   * \param nInterfaces is the number of interfaces
f1119f03b7a9 Code review fixes
Kirill Andreev <andreev@iitp.ru>
parents: 5141
diff changeset
   142
   */
f1119f03b7a9 Code review fixes
Kirill Andreev <andreev@iitp.ru>
parents: 5141
diff changeset
   143
  void SetNumberOfInterfaces (uint32_t nInterfaces);
4937
7211ebc93e69 Add spread interfaces frequency channels option
Pavel Boyko <boyko@iitp.ru>
parents: 4930
diff changeset
   144
  
7211ebc93e69 Add spread interfaces frequency channels option
Pavel Boyko <boyko@iitp.ru>
parents: 4930
diff changeset
   145
  /** 
5063
97b947e83640 Faker's code review response
Pavel Boyko <boyko@iitp.ru>
parents: 5056
diff changeset
   146
   * \brief Install 802.11s mesh device & protocols on given node list
4929
1689c94d7442 802.11s helper (ns3::dot11s::MeshWifiHelper) refactored
Pavel Boyko <boyko@iitp.ru>
parents: 4887
diff changeset
   147
   * 
5167
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
   148
   * \param phyHelper           Wifi PHY helper
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
   149
   * \param c               List of nodes to install
4929
1689c94d7442 802.11s helper (ns3::dot11s::MeshWifiHelper) refactored
Pavel Boyko <boyko@iitp.ru>
parents: 4887
diff changeset
   150
   * 
1689c94d7442 802.11s helper (ns3::dot11s::MeshWifiHelper) refactored
Pavel Boyko <boyko@iitp.ru>
parents: 4887
diff changeset
   151
   * \return list of created mesh point devices, see MeshPointDevice
1689c94d7442 802.11s helper (ns3::dot11s::MeshWifiHelper) refactored
Pavel Boyko <boyko@iitp.ru>
parents: 4887
diff changeset
   152
   */
5163
f1119f03b7a9 Code review fixes
Kirill Andreev <andreev@iitp.ru>
parents: 5141
diff changeset
   153
  NetDeviceContainer
5164
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   154
  Install (const WifiPhyHelper &phyHelper, NodeContainer c) const;
5081
869b81c5e774 Restructured installers
Kirill Andreev <andreev@iitp.ru>
parents: 5063
diff changeset
   155
  /**
869b81c5e774 Restructured installers
Kirill Andreev <andreev@iitp.ru>
parents: 5063
diff changeset
   156
   * \param type the type of ns3::MeshStack.
5167
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
   157
   * \param n0 the name of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
   158
   * \param v0 the value of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
   159
   * \param n1 the name of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
   160
   * \param v1 the value of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
   161
   * \param n2 the name of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
   162
   * \param v2 the value of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
   163
   * \param n3 the name of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
   164
   * \param v3 the value of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
   165
   * \param n4 the name of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
   166
   * \param v4 the value of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
   167
   * \param n5 the name of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
   168
   * \param v5 the value of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
   169
   * \param n6 the name of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
   170
   * \param v6 the value of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
   171
   * \param n7 the name of the attribute to set
a3ede758b713 Doxygen: fixed warnings
Kirill Andreev <andreev@iitp.ru>
parents: 5164
diff changeset
   172
   * \param v7 the value of the attribute to set
5081
869b81c5e774 Restructured installers
Kirill Andreev <andreev@iitp.ru>
parents: 5063
diff changeset
   173
   */
5141
22e79c2a4c5f Added root mesh point as argument of command line
Kirill Andreev <andreev@iitp.ru>
parents: 5086
diff changeset
   174
  void SetStackInstaller (std::string type,
22e79c2a4c5f Added root mesh point as argument of command line
Kirill Andreev <andreev@iitp.ru>
parents: 5086
diff changeset
   175
                std::string n0 = "", const AttributeValue &v0 = EmptyAttributeValue (),
22e79c2a4c5f Added root mesh point as argument of command line
Kirill Andreev <andreev@iitp.ru>
parents: 5086
diff changeset
   176
                std::string n1 = "", const AttributeValue &v1 = EmptyAttributeValue (),
22e79c2a4c5f Added root mesh point as argument of command line
Kirill Andreev <andreev@iitp.ru>
parents: 5086
diff changeset
   177
                std::string n2 = "", const AttributeValue &v2 = EmptyAttributeValue (),
22e79c2a4c5f Added root mesh point as argument of command line
Kirill Andreev <andreev@iitp.ru>
parents: 5086
diff changeset
   178
                std::string n3 = "", const AttributeValue &v3 = EmptyAttributeValue (),
22e79c2a4c5f Added root mesh point as argument of command line
Kirill Andreev <andreev@iitp.ru>
parents: 5086
diff changeset
   179
                std::string n4 = "", const AttributeValue &v4 = EmptyAttributeValue (),
22e79c2a4c5f Added root mesh point as argument of command line
Kirill Andreev <andreev@iitp.ru>
parents: 5086
diff changeset
   180
                std::string n5 = "", const AttributeValue &v5 = EmptyAttributeValue (),
22e79c2a4c5f Added root mesh point as argument of command line
Kirill Andreev <andreev@iitp.ru>
parents: 5086
diff changeset
   181
                std::string n6 = "", const AttributeValue &v6 = EmptyAttributeValue (),
22e79c2a4c5f Added root mesh point as argument of command line
Kirill Andreev <andreev@iitp.ru>
parents: 5086
diff changeset
   182
                std::string n7 = "", const AttributeValue &v7 = EmptyAttributeValue ());
5362
d31f56c9b7cb Piles o' doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents: 5202
diff changeset
   183
d31f56c9b7cb Piles o' doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents: 5202
diff changeset
   184
  /**
d31f56c9b7cb Piles o' doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents: 5202
diff changeset
   185
   * \brief Print statistics.
d31f56c9b7cb Piles o' doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents: 5202
diff changeset
   186
   */
5081
869b81c5e774 Restructured installers
Kirill Andreev <andreev@iitp.ru>
parents: 5063
diff changeset
   187
  void Report (const ns3::Ptr<ns3::NetDevice>&, std::ostream&);
5362
d31f56c9b7cb Piles o' doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents: 5202
diff changeset
   188
d31f56c9b7cb Piles o' doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents: 5202
diff changeset
   189
  /**
d31f56c9b7cb Piles o' doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents: 5202
diff changeset
   190
   * \brief Reset statistics.
d31f56c9b7cb Piles o' doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents: 5202
diff changeset
   191
   */
5081
869b81c5e774 Restructured installers
Kirill Andreev <andreev@iitp.ru>
parents: 5063
diff changeset
   192
  void ResetStats (const ns3::Ptr<ns3::NetDevice>&);
4929
1689c94d7442 802.11s helper (ns3::dot11s::MeshWifiHelper) refactored
Pavel Boyko <boyko@iitp.ru>
parents: 4887
diff changeset
   193
private:
5164
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   194
  /**
5362
d31f56c9b7cb Piles o' doxygen
Craig Dowell <craigdo@ee.washington.edu>
parents: 5202
diff changeset
   195
   * \internal
5164
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   196
   * \returns a WifiNetDevice with ready-to-use interface
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   197
   */
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   198
  Ptr<WifiNetDevice> CreateInterface (const WifiPhyHelper &phyHelper, Ptr<Node> node, uint16_t channelId) const;
5163
f1119f03b7a9 Code review fixes
Kirill Andreev <andreev@iitp.ru>
parents: 5141
diff changeset
   199
  uint32_t m_nInterfaces;
f1119f03b7a9 Code review fixes
Kirill Andreev <andreev@iitp.ru>
parents: 5141
diff changeset
   200
  ChannelPolicy m_spreadChannelPolicy;
5081
869b81c5e774 Restructured installers
Kirill Andreev <andreev@iitp.ru>
parents: 5063
diff changeset
   201
  Ptr<MeshStack> m_stack;
869b81c5e774 Restructured installers
Kirill Andreev <andreev@iitp.ru>
parents: 5063
diff changeset
   202
  ObjectFactory m_stackFactory;
5164
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   203
  ///\name Interface factory
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   204
  ///\{
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   205
  ObjectFactory m_mac;
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   206
  ObjectFactory m_stationManager;
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   207
  enum WifiPhyStandard m_standard;
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   208
    ///\}
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   209
};
4872
ea1bce018a44 Added namespace dot11s
Kirill Andreev <andreev@iitp.ru>
parents: 4871
diff changeset
   210
} //namespace ns3
ea1bce018a44 Added namespace dot11s
Kirill Andreev <andreev@iitp.ru>
parents: 4871
diff changeset
   211
5164
b81ab8394a61 Restructured helper - removed MeshInterfaceHelper
Kirill Andreev <andreev@iitp.ru>
parents: 5163
diff changeset
   212
#endif /* MESH_HELPER_H */
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
   213