src/devices/wifi/wifi-net-device.h
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Fri, 26 Oct 2007 13:14:14 +0200
changeset 2029 234f9a8c49af
parent 2002 32903f9a7315
child 2053 012487e16e31
permissions -rw-r--r--
basic doxygen documentation for users
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1899
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     2
/*
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     3
 * Copyright (c) 2005,2006 INRIA
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     4
 *
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as 
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     8
 *
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    12
 * GNU General Public License for more details.
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    13
 *
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    17
 *
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    18
 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    19
 */
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    20
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    21
#ifndef WIFI_NET_DEVICE_H
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    22
#define WIFI_NET_DEVICE_H
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    23
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    24
#include "ns3/net-device.h"
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    25
#include "ns3/packet.h"
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    26
#include "ns3/callback-trace-source.h"
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    27
#include "ns3/mac48-address.h"
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    28
#include "ssid.h"
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    29
#include <string>
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    30
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    31
namespace ns3 {
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    32
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    33
class WifiChannel;
1954
d1fde26bcb1c add WifiNetDevice to build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1922
diff changeset
    34
class WifiPhy;
1899
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    35
class MacStations;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    36
class MacLow;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    37
class MacRxMiddle;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    38
class MacTxMiddle;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    39
class MacParameters;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    40
class DcaTxop;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    41
class MacHighAdhoc;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    42
class MacHighNqsta;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    43
class MacHighNqap;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    44
2029
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
    45
/**
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
    46
 * \brief the base class for 802.11 network interfaces
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
    47
 *
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
    48
 */
1899
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    49
class WifiNetDevice : public NetDevice {
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    50
public:
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    51
  virtual ~WifiNetDevice ();
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    52
2029
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
    53
  /**
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
    54
   * \param channel the channel to connect this 802.11 
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
    55
   *        interface to.
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
    56
   */
1899
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    57
  void ConnectTo (Ptr<WifiChannel> channel);
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    58
2029
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
    59
  /**
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
    60
   * \returns the Mac48Address of this 802.11 interface.
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
    61
   *
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
    62
   * This method is equivalent to NetDevice::GetAddress. The only
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
    63
   * difference is its return type.
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
    64
   */
1922
dd18bc29fc3c add MacLow to build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1899
diff changeset
    65
  Mac48Address GetSelfAddress (void) const;
2029
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
    66
  /**
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
    67
   * \returns the bssid of this 802.11 interface.
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
    68
   */
1899
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    69
  virtual Mac48Address GetBssid (void) const = 0;
2029
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
    70
  /**
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
    71
   * \returns the ssid of this 802.11 interface.
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
    72
   */
1899
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    73
  virtual Ssid GetSsid (void) const = 0;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    74
1964
041240a915f8 build and link
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1954
diff changeset
    75
private:
041240a915f8 build and link
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1954
diff changeset
    76
  // inherited from parent.
041240a915f8 build and link
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1954
diff changeset
    77
  virtual bool DoNeedsArp (void) const;
041240a915f8 build and link
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1954
diff changeset
    78
  virtual Ptr<Channel> DoGetChannel (void) const;
041240a915f8 build and link
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1954
diff changeset
    79
  virtual bool SendTo (const Packet &packet, const Address &to, uint16_t protocolNumber);
041240a915f8 build and link
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1954
diff changeset
    80
  // defined for children
041240a915f8 build and link
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1954
diff changeset
    81
  virtual void NotifyConnected (void) = 0;
041240a915f8 build and link
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1954
diff changeset
    82
  virtual bool DoSendTo (const Packet &packet, const Mac48Address &to) = 0;
041240a915f8 build and link
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1954
diff changeset
    83
  // private helper
041240a915f8 build and link
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1954
diff changeset
    84
  void Construct (void);
1899
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    85
1964
041240a915f8 build and link
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1954
diff changeset
    86
  friend class WifiNetDeviceFactory;
041240a915f8 build and link
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1954
diff changeset
    87
041240a915f8 build and link
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1954
diff changeset
    88
  CallbackTraceSource<Packet, Mac48Address> m_rxLogger;
041240a915f8 build and link
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1954
diff changeset
    89
  CallbackTraceSource<Packet, Mac48Address> m_txLogger;
1899
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    90
protected:
1954
d1fde26bcb1c add WifiNetDevice to build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1922
diff changeset
    91
  WifiNetDevice (Ptr<Node> node);
d1fde26bcb1c add WifiNetDevice to build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1922
diff changeset
    92
  void DoForwardUp (Packet packet, const Mac48Address &from);
1998
41cd4e5694c2 dispose the channel from WifiNetDevice
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
    93
  virtual void DoDispose (void);
1969
a3803bfd94f9 fix valgrind warning
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1964
diff changeset
    94
  DcaTxop *CreateDca (uint32_t minCw, uint32_t maxCw) const;
1899
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    95
1964
041240a915f8 build and link
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1954
diff changeset
    96
  Ptr<WifiChannel> m_channel;
1954
d1fde26bcb1c add WifiNetDevice to build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1922
diff changeset
    97
  WifiPhy *m_phy;
1899
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    98
  MacStations *m_stations;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    99
  MacLow *m_low;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   100
  MacRxMiddle *m_rxMiddle;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   101
  MacTxMiddle *m_txMiddle;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   102
  MacParameters *m_parameters;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   103
};
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   104
2029
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   105
/**
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   106
 * \brief a 802.11 adhoc network interface
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   107
 *
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   108
 * This network interface is a very simple pass-through 
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   109
 * from the higher layers down to the MAC DCF layer.
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   110
 */
1954
d1fde26bcb1c add WifiNetDevice to build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1922
diff changeset
   111
class AdhocWifiNetDevice : public WifiNetDevice {
1899
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   112
public:
1954
d1fde26bcb1c add WifiNetDevice to build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1922
diff changeset
   113
  AdhocWifiNetDevice (Ptr<Node> node);
d1fde26bcb1c add WifiNetDevice to build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1922
diff changeset
   114
  virtual ~AdhocWifiNetDevice ();
1899
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   115
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   116
  virtual Mac48Address GetBssid (void) const;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   117
  virtual Ssid GetSsid (void) const;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   118
  void SetSsid (Ssid ssid);
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   119
2002
32903f9a7315 add dispose methods in subclasses of WifiNetDevice
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1998
diff changeset
   120
protected:
32903f9a7315 add dispose methods in subclasses of WifiNetDevice
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1998
diff changeset
   121
  virtual void DoDispose (void);
1899
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   122
private:
1964
041240a915f8 build and link
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1954
diff changeset
   123
  void ForwardUp (void);
1899
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   124
  virtual bool DoSendTo (const Packet &packet, Mac48Address const & to);
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   125
  virtual void NotifyConnected (void);
1964
041240a915f8 build and link
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1954
diff changeset
   126
1899
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   127
  Ssid m_ssid;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   128
  DcaTxop *m_dca;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   129
  MacHighAdhoc *m_high;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   130
};
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   131
2029
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   132
/**
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   133
 * \brief a 802.11 STA network interface 
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   134
 *
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   135
 * This network interface implements the MAC-level STA 
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   136
 * active probing, association, and disassociation prototols.
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   137
 *
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   138
 * By default, it starts a new probing phase whenever a new 
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   139
 * data packet must be sent and the STA is not yet associated
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   140
 * to the AP.
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   141
 */
1954
d1fde26bcb1c add WifiNetDevice to build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1922
diff changeset
   142
class NqstaWifiNetDevice : public WifiNetDevice 
d1fde26bcb1c add WifiNetDevice to build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1922
diff changeset
   143
{
1899
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   144
public:
1954
d1fde26bcb1c add WifiNetDevice to build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1922
diff changeset
   145
  NqstaWifiNetDevice (Ptr<Node> node);
d1fde26bcb1c add WifiNetDevice to build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1922
diff changeset
   146
  virtual ~NqstaWifiNetDevice ();
1899
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   147
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   148
  virtual Mac48Address GetBssid (void) const;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   149
  virtual Ssid GetSsid (void) const;
2029
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   150
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   151
  /**
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   152
   * \param ssid the ssid we want to associate with
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   153
   *
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   154
   * Start a new active probing phase with the specified
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   155
   * ssid.
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   156
   */
1899
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   157
  void StartActiveAssociation (Ssid ssid);
2002
32903f9a7315 add dispose methods in subclasses of WifiNetDevice
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1998
diff changeset
   158
protected:
32903f9a7315 add dispose methods in subclasses of WifiNetDevice
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1998
diff changeset
   159
  virtual void DoDispose (void);
1899
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   160
private:
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   161
  void Associated (void);
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   162
  void DisAssociated (void);
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   163
  virtual bool DoSendTo (const Packet &packet, Mac48Address const & to);
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   164
  virtual void NotifyConnected (void);
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   165
  friend class WifiNetDeviceFactory;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   166
  Ssid m_ssid;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   167
  DcaTxop *m_dca;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   168
  MacHighNqsta *m_high;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   169
};
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   170
2029
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   171
/**
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   172
 * \brief a 802.11 AP network interface
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   173
 *
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   174
 * This network interface implements the MAC-level
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   175
 * AP-side of the beacon, probing, and, association
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   176
 * protocols. By default, every STA which tries
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   177
 * to associate is accepted.
234f9a8c49af basic doxygen documentation for users
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2002
diff changeset
   178
 */
1954
d1fde26bcb1c add WifiNetDevice to build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1922
diff changeset
   179
class NqapWifiNetDevice : public WifiNetDevice 
d1fde26bcb1c add WifiNetDevice to build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1922
diff changeset
   180
{
1899
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   181
public:
1954
d1fde26bcb1c add WifiNetDevice to build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1922
diff changeset
   182
  NqapWifiNetDevice (Ptr<Node> node);
d1fde26bcb1c add WifiNetDevice to build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1922
diff changeset
   183
  virtual ~NqapWifiNetDevice ();
1899
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   184
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   185
  virtual Mac48Address GetBssid (void) const;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   186
  virtual Ssid GetSsid (void) const;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   187
  void SetSsid (Ssid ssid);
2002
32903f9a7315 add dispose methods in subclasses of WifiNetDevice
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1998
diff changeset
   188
protected:
32903f9a7315 add dispose methods in subclasses of WifiNetDevice
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1998
diff changeset
   189
  virtual void DoDispose (void);
1899
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   190
private:
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   191
  virtual bool DoSendTo (const Packet &packet, Mac48Address const & to);
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   192
  virtual void NotifyConnected (void);
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   193
  friend class WifiNetDeviceFactory;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   194
  Ssid m_ssid;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   195
  DcaTxop *m_dca;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   196
  MacHighNqap *m_high;
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   197
};
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   198
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   199
} // namespace ns3
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   200
f601585e8e89 add missing header
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   201
#endif /* WIFI_NET_DEVICE_H */