src/devices/mesh/mesh-wifi-mac.h
author Kirill Andreev <andreev@iitp.ru>
Sun, 22 Mar 2009 12:34:24 +0300
changeset 4865 e331ed5d3662
parent 4853 cb12c7003071
permissions -rw-r--r--
Added header for peer link frame (first fields without information element)
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: 4810
diff changeset
    18
 * Author: Kirill Andreev <andreev@iitp.ru>
4820
8507b0cef8c0 WifiInformationElement class added as the base for all IEs
Pavel Boyko <boyko@iitp.ru>
parents: 4813
diff changeset
    19
 *         Pavel Boyko <boyko@iitp.ru>
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
    20
 */
4811
080b8f23fa4a Added license information to some files.
Andrey Mazo <mazo@iitp.ru>
parents: 4810
diff changeset
    21
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
    22
#ifndef MAC_HIGH_MESH_H
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
    23
#define MAC_HIGH_MESH_H
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
    24
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
    25
#include <map>
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
    26
#include "ns3/mac48-address.h"
4813
e4e2c44d27cd All mesh related filed moved to devices/mesh. Let the refactoring begins!
Pavel Boyko <boyko@iitp.ru>
parents: 4812
diff changeset
    27
#include "ns3/mesh-mgt-headers.h"
e4e2c44d27cd All mesh related filed moved to devices/mesh. Let the refactoring begins!
Pavel Boyko <boyko@iitp.ru>
parents: 4812
diff changeset
    28
#include "ns3/wifi-mac.h"
4841
702fa974e205 Fixed bugs with includes
Kirill Andreev <andreev@iitp.ru>
parents: 4840
diff changeset
    29
#include "ns3/ie-dot11s-preq.h"
702fa974e205 Fixed bugs with includes
Kirill Andreev <andreev@iitp.ru>
parents: 4840
diff changeset
    30
#include "ns3/ie-dot11s-prep.h"
702fa974e205 Fixed bugs with includes
Kirill Andreev <andreev@iitp.ru>
parents: 4840
diff changeset
    31
#include "ns3/ie-dot11s-perr.h"
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
    32
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
    33
namespace ns3 {
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
    34
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    35
class WifiMacHeader;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    36
class DcaTxop;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    37
class WifiPhy;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    38
class DcfManager;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    39
class MacRxMiddle;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    40
class MacLow;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    41
class WifiPeerManager;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    42
/**
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    43
 * \ingroup mesh
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    44
 *
4820
8507b0cef8c0 WifiInformationElement class added as the base for all IEs
Pavel Boyko <boyko@iitp.ru>
parents: 4813
diff changeset
    45
 * \brief Implements basic MAC layer of mesh point interface. Basic function is extendable through plugins mechanism.
8507b0cef8c0 WifiInformationElement class added as the base for all IEs
Pavel Boyko <boyko@iitp.ru>
parents: 4813
diff changeset
    46
 * 
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    47
 * Now only three output queues are used:
4820
8507b0cef8c0 WifiInformationElement class added as the base for all IEs
Pavel Boyko <boyko@iitp.ru>
parents: 4813
diff changeset
    48
 *  - beacons (PIFS and no backoff),
8507b0cef8c0 WifiInformationElement class added as the base for all IEs
Pavel Boyko <boyko@iitp.ru>
parents: 4813
diff changeset
    49
 *  - background traffic,
8507b0cef8c0 WifiInformationElement class added as the base for all IEs
Pavel Boyko <boyko@iitp.ru>
parents: 4813
diff changeset
    50
 *  - management and priority traffic.
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    51
 */
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    52
class MeshWifiMac : public WifiMac
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    53
{
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    54
public:
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    55
  static TypeId  GetTypeId ();
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
    56
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    57
  MeshWifiMac ();
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    58
  ~MeshWifiMac ();
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    59
  // inherited from WifiMac.
4840
093e7d79bc27 Removed unneeded virtual methods in mesh-wifi-mac.h Fixed ticket #40
Kirill Andreev <andreev@iitp.ru>
parents: 4838
diff changeset
    60
  void  SetSlot (Time slotTime);
093e7d79bc27 Removed unneeded virtual methods in mesh-wifi-mac.h Fixed ticket #40
Kirill Andreev <andreev@iitp.ru>
parents: 4838
diff changeset
    61
  void  SetSifs (Time sifs);
093e7d79bc27 Removed unneeded virtual methods in mesh-wifi-mac.h Fixed ticket #40
Kirill Andreev <andreev@iitp.ru>
parents: 4838
diff changeset
    62
  void  SetPifs (Time pifs);
093e7d79bc27 Removed unneeded virtual methods in mesh-wifi-mac.h Fixed ticket #40
Kirill Andreev <andreev@iitp.ru>
parents: 4838
diff changeset
    63
  void  SetCtsTimeout (Time ctsTimeout);
093e7d79bc27 Removed unneeded virtual methods in mesh-wifi-mac.h Fixed ticket #40
Kirill Andreev <andreev@iitp.ru>
parents: 4838
diff changeset
    64
  void  SetAckTimeout (Time ackTimeout);
093e7d79bc27 Removed unneeded virtual methods in mesh-wifi-mac.h Fixed ticket #40
Kirill Andreev <andreev@iitp.ru>
parents: 4838
diff changeset
    65
  void  SetEifsNoDifs (Time eifsNoDifs);
4841
702fa974e205 Fixed bugs with includes
Kirill Andreev <andreev@iitp.ru>
parents: 4840
diff changeset
    66
  Time  GetSlot () const;
702fa974e205 Fixed bugs with includes
Kirill Andreev <andreev@iitp.ru>
parents: 4840
diff changeset
    67
  Time  GetSifs () const;
702fa974e205 Fixed bugs with includes
Kirill Andreev <andreev@iitp.ru>
parents: 4840
diff changeset
    68
  Time  GetPifs () const;
702fa974e205 Fixed bugs with includes
Kirill Andreev <andreev@iitp.ru>
parents: 4840
diff changeset
    69
  Time  GetCtsTimeout () const;
702fa974e205 Fixed bugs with includes
Kirill Andreev <andreev@iitp.ru>
parents: 4840
diff changeset
    70
  Time  GetAckTimeout () const;
702fa974e205 Fixed bugs with includes
Kirill Andreev <andreev@iitp.ru>
parents: 4840
diff changeset
    71
  Time  GetEifsNoDifs () const;
4840
093e7d79bc27 Removed unneeded virtual methods in mesh-wifi-mac.h Fixed ticket #40
Kirill Andreev <andreev@iitp.ru>
parents: 4838
diff changeset
    72
  void  SetWifiPhy (Ptr<WifiPhy> phy);
093e7d79bc27 Removed unneeded virtual methods in mesh-wifi-mac.h Fixed ticket #40
Kirill Andreev <andreev@iitp.ru>
parents: 4838
diff changeset
    73
  void  SetWifiRemoteStationManager (Ptr<WifiRemoteStationManager> stationManager);
093e7d79bc27 Removed unneeded virtual methods in mesh-wifi-mac.h Fixed ticket #40
Kirill Andreev <andreev@iitp.ru>
parents: 4838
diff changeset
    74
  void  Enqueue (Ptr<const Packet> packet, Mac48Address to, Mac48Address from);
093e7d79bc27 Removed unneeded virtual methods in mesh-wifi-mac.h Fixed ticket #40
Kirill Andreev <andreev@iitp.ru>
parents: 4838
diff changeset
    75
  void  Enqueue (Ptr<const Packet> packet, Mac48Address to);
4841
702fa974e205 Fixed bugs with includes
Kirill Andreev <andreev@iitp.ru>
parents: 4840
diff changeset
    76
  bool  SupportsSendFrom () const;
4840
093e7d79bc27 Removed unneeded virtual methods in mesh-wifi-mac.h Fixed ticket #40
Kirill Andreev <andreev@iitp.ru>
parents: 4838
diff changeset
    77
  void  SetForwardUpCallback (Callback<void,Ptr<Packet>, Mac48Address, Mac48Address> upCallback);
093e7d79bc27 Removed unneeded virtual methods in mesh-wifi-mac.h Fixed ticket #40
Kirill Andreev <andreev@iitp.ru>
parents: 4838
diff changeset
    78
  void  SetLinkUpCallback (Callback<void> linkUp);
093e7d79bc27 Removed unneeded virtual methods in mesh-wifi-mac.h Fixed ticket #40
Kirill Andreev <andreev@iitp.ru>
parents: 4838
diff changeset
    79
  void  SetLinkDownCallback (Callback<void> linkDown);
4841
702fa974e205 Fixed bugs with includes
Kirill Andreev <andreev@iitp.ru>
parents: 4840
diff changeset
    80
  Mac48Address GetAddress () const;
702fa974e205 Fixed bugs with includes
Kirill Andreev <andreev@iitp.ru>
parents: 4840
diff changeset
    81
  Mac48Address GetBssid () const;
702fa974e205 Fixed bugs with includes
Kirill Andreev <andreev@iitp.ru>
parents: 4840
diff changeset
    82
  Ssid  GetSsid () const;
4840
093e7d79bc27 Removed unneeded virtual methods in mesh-wifi-mac.h Fixed ticket #40
Kirill Andreev <andreev@iitp.ru>
parents: 4838
diff changeset
    83
  void  SetAddress (Mac48Address address);
093e7d79bc27 Removed unneeded virtual methods in mesh-wifi-mac.h Fixed ticket #40
Kirill Andreev <andreev@iitp.ru>
parents: 4838
diff changeset
    84
  void  SetSsid (Ssid ssid);
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    85
  /**
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    86
   * \param interval is an interval between two
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    87
   * successive beacons
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    88
   */
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    89
  void   SetBeaconInterval (Time interval);
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    90
  /**
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    91
   * \returns interval between two beacons
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    92
   */
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    93
  Time   GetBeaconInterval () const;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    94
  /**
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    95
   * \param delay is the maximum software delay.
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    96
   *
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    97
   * \details Software delay is calculated as uniformely
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    98
   * distributed random value between zero and
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
    99
   * given parameter.
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   100
   *
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   101
   * All management frames are sent after software delay is passed,
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   102
   * for example, beacon is formed at software
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   103
   * delay before putting it to the queue.
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   104
   *
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   105
   * \attention The software delay is supposed
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   106
   * to be independent from traffic intensity.
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   107
   *
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   108
   */
4852
123dc54d734e Coding style changes: indentation (some fixes), spaces in operators, function
Andrey Mazo <mazo@iitp.ru>
parents: 4841
diff changeset
   109
  void   SetSoftwareDelay (Time delay);
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   110
  /**
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   111
   * \returns software delay parameter
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   112
   */
4852
123dc54d734e Coding style changes: indentation (some fixes), spaces in operators, function
Andrey Mazo <mazo@iitp.ru>
parents: 4841
diff changeset
   113
  Time   GetSoftwareDelay ();
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   114
  /**
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   115
   * \param manager is pointer to the
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   116
   * WifiPeerManager class, which implements
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   117
   * peer-link management state machine.
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   118
   *
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   119
   * \details The purpose of peer manager is
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   120
   * obtaining all needed information from
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   121
   * beacons and send peer link management
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   122
   * frames.
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   123
   *
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   124
   * This funcion sets all needed callbacks to
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   125
   * a given peer manager
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   126
   */
4852
123dc54d734e Coding style changes: indentation (some fixes), spaces in operators, function
Andrey Mazo <mazo@iitp.ru>
parents: 4841
diff changeset
   127
  void          SetPeerLinkManager (Ptr<WifiPeerManager> manager);
123dc54d734e Coding style changes: indentation (some fixes), spaces in operators, function
Andrey Mazo <mazo@iitp.ru>
parents: 4841
diff changeset
   128
  void  SetPreqReceivedCallback (
4835
eca7ff6b2b47 Class names restructured
Kirill Andreev <andreev@iitp.ru>
parents: 4833
diff changeset
   129
    Callback<void, IeDot11sPreq&, const Mac48Address&, const uint32_t&> cb);
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   130
  /**
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   131
   * \brief this callback is set by Hwmp routing
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   132
   * protocol and executed when MAC has received
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   133
   * PREP.
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   134
   * \param cb is a callback to be executed when
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   135
   * receiving PREP.
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   136
   */
4852
123dc54d734e Coding style changes: indentation (some fixes), spaces in operators, function
Andrey Mazo <mazo@iitp.ru>
parents: 4841
diff changeset
   137
  void  SetPrepReceivedCallback (
4835
eca7ff6b2b47 Class names restructured
Kirill Andreev <andreev@iitp.ru>
parents: 4833
diff changeset
   138
    Callback<void, IeDot11sPrep&, const Mac48Address&, const uint32_t&> cb);
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   139
  /**
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   140
   * \brief this callback is set by Hwmp routing
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   141
   * protocol and executed when MAC has received
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   142
   * PERR.
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   143
   * \param cb is a callback to be executed when
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   144
   * receiving PERR.
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   145
   */
4852
123dc54d734e Coding style changes: indentation (some fixes), spaces in operators, function
Andrey Mazo <mazo@iitp.ru>
parents: 4841
diff changeset
   146
  void  SetPerrReceivedCallback (
4835
eca7ff6b2b47 Class names restructured
Kirill Andreev <andreev@iitp.ru>
parents: 4833
diff changeset
   147
    Callback<void, IeDot11sPerr&, const Mac48Address&> cb);
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
   148
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   149
  /**
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   150
   * \brief this callback is set by Hwmp routing
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   151
   * protocol and executed when MAC has detected
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   152
   * the peer link failure
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   153
   * \param cb is a callback to be executed when
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   154
   * peer failure has ben detected
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   155
   */
4852
123dc54d734e Coding style changes: indentation (some fixes), spaces in operators, function
Andrey Mazo <mazo@iitp.ru>
parents: 4841
diff changeset
   156
  void            SetPeerStatusCallback (
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   157
    Callback<void, Mac48Address, bool, uint32_t> cb);
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   158
  /**
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   159
   * \brief Sends a PREQ frame.
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   160
   * \param preq is preq information element
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   161
   * formed by protocol. This function just adds
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   162
   * a proper WifiMacHeader
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   163
   * \attention This method is public, because
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   164
   * HWMP makes a callback using this method
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   165
   */
4852
123dc54d734e Coding style changes: indentation (some fixes), spaces in operators, function
Andrey Mazo <mazo@iitp.ru>
parents: 4841
diff changeset
   166
  void  SendPreq (const IeDot11sPreq& preq);
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   167
  /**
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   168
   * \brief Sends a PREP frame.
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   169
   * \param prep is prep information element
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   170
   * formed by protocol. This function just adds
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   171
   * a proper WifiMacHeader
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   172
   * \param to is an address of retransmitter of
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   173
   * the prep
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   174
   * \attention This method is public, because
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   175
   * HWMP makes a callback using this method
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   176
   */
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
   177
4852
123dc54d734e Coding style changes: indentation (some fixes), spaces in operators, function
Andrey Mazo <mazo@iitp.ru>
parents: 4841
diff changeset
   178
  void  SendPrep (const IeDot11sPrep& prep, const Mac48Address& to);
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   179
  /**
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   180
   * \brief Sends a PERR frame.
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   181
   * \param perr is perr information element
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   182
   * formed by protocol. This function just adds
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   183
   * a proper WifiMacHeader.
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   184
   * \param receivers is list of addresses where
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   185
   * to send PERR (unicast PERR case)
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   186
   * \attention This method is public, because
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   187
   * HWMP makes a callback using this method
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   188
   */
4852
123dc54d734e Coding style changes: indentation (some fixes), spaces in operators, function
Andrey Mazo <mazo@iitp.ru>
parents: 4841
diff changeset
   189
  void  SendPerr (const IeDot11sPerr& perr, std::vector<Mac48Address> receivers);
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   190
  /**
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   191
   * \brief Sends PeerLinkOpen frame to a given
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   192
   * address. Mac only forms a proper
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   193
   * WifiMacHeader.
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   194
   * \param peer_element is peer link frame to
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   195
   * be sent
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   196
   * \param peerAddress is the address of
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   197
   * destination of given frame
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   198
   */
4852
123dc54d734e Coding style changes: indentation (some fixes), spaces in operators, function
Andrey Mazo <mazo@iitp.ru>
parents: 4841
diff changeset
   199
  void   SendPeerLinkOpen (
4838
ce31277d72ad Finished restructuring information elements
Kirill Andreev <andreev@iitp.ru>
parents: 4837
diff changeset
   200
    IeDot11sPeerManagement peer_element,
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   201
    Mac48Address peerAddress
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   202
  );
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   203
  /**
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   204
   * \brief Sends PeerLinkConfirm frame to a given
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   205
   * address. Mac only forms a proper
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   206
   * WifiMacHeader.
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   207
   * \param peer_element is peer link frame to
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   208
   * be sent
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   209
   * \param peerAddress is the address of
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   210
   * destination of given frame
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   211
   * \param aid is the assocciation ID stored in
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   212
   * peer manager
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   213
   */
4852
123dc54d734e Coding style changes: indentation (some fixes), spaces in operators, function
Andrey Mazo <mazo@iitp.ru>
parents: 4841
diff changeset
   214
  void   SendPeerLinkConfirm (
4838
ce31277d72ad Finished restructuring information elements
Kirill Andreev <andreev@iitp.ru>
parents: 4837
diff changeset
   215
    IeDot11sPeerManagement peer_element,
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   216
    Mac48Address peerAddress,
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   217
    uint16_t aid
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   218
  );
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   219
  /**
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   220
   * \brief Sends PeerLinkClose frame to a given
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   221
   * address. Mac only forms a proper
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   222
   * WifiMacHeader.
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   223
   * \param peer_element is peer link frame to
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   224
   * be sent
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   225
   * \param peerAddress is the address of
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   226
   * destination of given frame
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   227
   */
4852
123dc54d734e Coding style changes: indentation (some fixes), spaces in operators, function
Andrey Mazo <mazo@iitp.ru>
parents: 4841
diff changeset
   228
  void   SendPeerLinkClose (
4838
ce31277d72ad Finished restructuring information elements
Kirill Andreev <andreev@iitp.ru>
parents: 4837
diff changeset
   229
    IeDot11sPeerManagement peer_element,
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   230
    Mac48Address peerAddress
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   231
  );
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   232
  /**
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   233
   * \brief this method is executed by peer
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   234
   * manager when peer link opened or closed
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   235
   * \param status true when link was opened,
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   236
   * false if link was closed
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   237
   * \param peerAddress is the address of
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   238
   * destination of given frame
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   239
   */
4852
123dc54d734e Coding style changes: indentation (some fixes), spaces in operators, function
Andrey Mazo <mazo@iitp.ru>
parents: 4841
diff changeset
   240
  void  PeerLinkStatus (Mac48Address peerAddress, bool status);
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
   241
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   242
  /**
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   243
   * \brief Peer Manager notifyes MAC about new
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   244
   * peer link or peer link failure.
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   245
   * \details This method should pass this event
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   246
   * to HWMP, and it should generate new routing
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   247
   * information or should generate Path Error
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   248
   * \param peerAddress it the address of
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   249
   * neighbour
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   250
   * \param status If true - new peer link, perr
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   251
   * link failure otherwise
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   252
   */
4852
123dc54d734e Coding style changes: indentation (some fixes), spaces in operators, function
Andrey Mazo <mazo@iitp.ru>
parents: 4841
diff changeset
   253
  void   PeerEvent (
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   254
    Mac48Address peerAddress,
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   255
    bool  status
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   256
  );
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   257
private:
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   258
  void  Receive (Ptr<Packet> packet, WifiMacHeader const *hdr);
4840
093e7d79bc27 Removed unneeded virtual methods in mesh-wifi-mac.h Fixed ticket #40
Kirill Andreev <andreev@iitp.ru>
parents: 4838
diff changeset
   259
  void ForwardUp (Ptr<Packet> packet, Mac48Address src, Mac48Address dst);
4852
123dc54d734e Coding style changes: indentation (some fixes), spaces in operators, function
Andrey Mazo <mazo@iitp.ru>
parents: 4841
diff changeset
   260
  void  ForwardDown (
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   261
    Ptr<const Packet> packet,
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   262
    Mac48Address from,
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   263
    Mac48Address to
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   264
  );
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   265
  void  TxOk (WifiMacHeader const &hdr);
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   266
  void  TxFailed (WifiMacHeader const &hdr);
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   267
  /**
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   268
   * \brief At the software delay before TBTT
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   269
   * SendOneBeacon is ececuted. It forms a
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   270
   * beacon frame body. Then calculates software
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   271
   * delay and schedules QueueOneBeacon
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   272
   */
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   273
  void  SendOneBeacon ();
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   274
  /**
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   275
   * \brief Puts a formed beacon to the output
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   276
   * queue. SendOneBeacon forms a beacon and
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   277
   * after software delay QueueOneBeacon is
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   278
   * executed
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   279
   * \param beacon_hdr is beacon to be queued
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   280
   */
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   281
  void  QueueOneBeacon (MgtMeshBeaconHeader beacon_hdr);
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   282
  /**
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   283
   * \brief Executed after software delay by
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   284
   * SendPeerLinkOpen/Confirm/Close frames and
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   285
   * puts this frame to the output queue.
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   286
   * \param peer_frame peer link management
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   287
   * frame
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   288
   * \param peerAddress the address of
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   289
   * destination.
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   290
   */
4852
123dc54d734e Coding style changes: indentation (some fixes), spaces in operators, function
Andrey Mazo <mazo@iitp.ru>
parents: 4841
diff changeset
   291
  void  QueuePeerLinkFrame (MeshMgtPeerLinkManFrame peer_frame, Mac48Address peerAddress);
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   292
  /**
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   293
   * \brief Executed after software delay by
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   294
   * SendPreq/Prep/Perr frames and
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   295
   * puts this frame to the output queue.
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   296
   * \param packet is packet body,
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   297
   * \param hdr is WifiMacHeader
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   298
   */
4852
123dc54d734e Coding style changes: indentation (some fixes), spaces in operators, function
Andrey Mazo <mazo@iitp.ru>
parents: 4841
diff changeset
   299
  void  QueuePathSelectionFrame (Ptr<Packet> packet, const WifiMacHeader hdr);
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   300
  void  SetBeaconGeneration (bool enable);
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   301
  bool  GetBeaconGeneration () const;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   302
  SupportedRates GetSupportedRates () const;
4840
093e7d79bc27 Removed unneeded virtual methods in mesh-wifi-mac.h Fixed ticket #40
Kirill Andreev <andreev@iitp.ru>
parents: 4838
diff changeset
   303
  void DoDispose ();
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
   304
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   305
  Ptr<DcaTxop>   m_BE;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   306
  Ptr<DcaTxop>   m_BK;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   307
  Ptr<DcaTxop>   m_VI;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   308
  Ptr<DcaTxop>   m_VO;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   309
  Ptr<DcaTxop>   m_beaconDca;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   310
  Ptr<WifiRemoteStationManager> m_stationManager;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   311
  Ptr<WifiPhy>   m_phy;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   312
  Callback<void,Ptr<Packet>, Mac48Address, Mac48Address>  m_upCallback;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   313
  Time    m_beaconInterval;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   314
  Time    m_randomStart;
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
   315
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   316
  DcfManager    *m_dcfManager;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   317
  MacRxMiddle   *m_rxMiddle;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   318
  Ptr<MacLow>    m_low;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   319
  Mac48Address   m_address;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   320
  Ssid       m_MeshId;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   321
  EventId    m_beaconFormEvent;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   322
  EventId    m_beaconSendEvent;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   323
  Time    m_slot;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   324
  Time    m_sifs;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   325
  Time    m_pifs;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   326
  Time    m_ackTimeout;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   327
  Time    m_ctsTimeout;
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
   328
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   329
  Time    m_eifsNoDifs;
4835
eca7ff6b2b47 Class names restructured
Kirill Andreev <andreev@iitp.ru>
parents: 4833
diff changeset
   330
  IeDot11sConfiguration m_meshConfig; //Stores my configuration;
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   331
  //Peer Descriptor pointer:
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   332
  Ptr<WifiPeerManager>   m_peerManager;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   333
  Time    m_softwareDelay;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   334
  /**
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   335
   * \attention Software delay is used for management
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   336
   * frames, so, if this delay is calculated
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   337
   * independenly, the packet order may be
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   338
   * broken, so the last mgt frame sending time
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   339
   * should be keeped within MAC
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   340
   */
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   341
  Time    m_lastMgtFrame;
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   342
  /**
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   343
   * \returns the value of software delay
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   344
   * uniformely distributed between 0 and
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   345
   * m_softwareDealy (initiated by
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   346
   * SetSoftwareDelay method).
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   347
   */
4852
123dc54d734e Coding style changes: indentation (some fixes), spaces in operators, function
Andrey Mazo <mazo@iitp.ru>
parents: 4841
diff changeset
   348
  Time    CalcSwDelay ();
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   349
  /**
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   350
   * \brief keeps delay for sending first
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   351
   * beacon. this delay is uniformely
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   352
   * distributed between 0 and given value
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   353
   */
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   354
  Time    m_beaconFormingRandomDelay;
4853
cb12c7003071 Coding style changes: remove unneeded line breaks.
Andrey Mazo <mazo@iitp.ru>
parents: 4852
diff changeset
   355
  Callback<void, IeDot11sPreq&, const Mac48Address&, const uint32_t&>  m_preqReceived;
cb12c7003071 Coding style changes: remove unneeded line breaks.
Andrey Mazo <mazo@iitp.ru>
parents: 4852
diff changeset
   356
  Callback<void, IeDot11sPrep&, const Mac48Address&, const uint32_t&>  m_prepReceived;
cb12c7003071 Coding style changes: remove unneeded line breaks.
Andrey Mazo <mazo@iitp.ru>
parents: 4852
diff changeset
   357
  Callback<void, IeDot11sPerr&, const Mac48Address&>                   m_perrReceived;
cb12c7003071 Coding style changes: remove unneeded line breaks.
Andrey Mazo <mazo@iitp.ru>
parents: 4852
diff changeset
   358
  Callback<void, Mac48Address, bool, uint32_t>                         m_peerStatusCallback;
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   359
  /**
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   360
   * \brief metric calculation parameters
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   361
   */
4852
123dc54d734e Coding style changes: indentation (some fixes), spaces in operators, function
Andrey Mazo <mazo@iitp.ru>
parents: 4841
diff changeset
   362
  uint32_t   CalculateMetric (Mac48Address peerAddress);
4853
cb12c7003071 Coding style changes: remove unneeded line breaks.
Andrey Mazo <mazo@iitp.ru>
parents: 4852
diff changeset
   363
  std::map<Mac48Address, uint32_t>  m_metricDatabase;
4812
adcb26652e1d Coding style changes: indentation, spaces.
Andrey Mazo <mazo@iitp.ru>
parents: 4811
diff changeset
   364
};
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
   365
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
   366
} // namespace ns3
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
   367
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
   368
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents:
diff changeset
   369
#endif /* MAC_HIGH_MESH_H */