src/devices/wifi/wifi-net-device.cc
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Thu, 11 Oct 2007 13:27:39 +0200
changeset 1956 e51ef0422485
child 1964 041240a915f8
permissions -rw-r--r--
missing file
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1956
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     2
/*
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     3
 * Copyright (c) 2005,2006 INRIA
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     4
 *
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as 
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     8
 *
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    12
 * GNU General Public License for more details.
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    13
 *
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    17
 *
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    18
 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    19
 */
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    20
#include "ns3/packet.h"
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    21
#include "ns3/llc-snap-header.h"
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    22
#include "ns3/node.h"
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    23
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    24
#include "wifi-net-device.h"
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    25
#include "wifi-phy.h"
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    26
#include "wifi-channel.h"
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    27
#include "mac-stations.h"
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    28
#include "mac-low.h"
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    29
#include "mac-parameters.h"
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    30
#include "mac-rx-middle.h"
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    31
#include "mac-tx-middle.h"
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    32
#include "mac-high-adhoc.h"
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    33
#include "mac-high-nqsta.h"
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    34
#include "mac-high-nqap.h"
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    35
#include "dca-txop.h"
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    36
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    37
namespace ns3 {
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    38
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    39
WifiNetDevice::WifiNetDevice (Ptr<Node> node)
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    40
  : NetDevice (node, Mac48Address::Allocate ())
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    41
{
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    42
  SetMtu (2300);
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    43
  EnableBroadcast (Mac48Address ("ff:ff:ff:ff:ff:ff"));
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    44
}
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    45
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    46
WifiNetDevice::~WifiNetDevice ()
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    47
{
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    48
  delete m_phy;
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    49
  delete m_stations;
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    50
  delete m_low;
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    51
  delete m_parameters;
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    52
  delete m_txMiddle;
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    53
  delete m_rxMiddle;
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    54
}
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    55
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    56
void 
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    57
WifiNetDevice::ConnectTo (Ptr<WifiChannel> channel)
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    58
{
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    59
  m_phy->SetChannel (channel);
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    60
  NotifyConnected ();
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    61
}
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    62
bool
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    63
WifiNetDevice::SendTo (const Packet &packet, const Address &to, uint16_t protocolNumber)
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    64
{
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    65
  NS_ASSERT (Mac48Address::IsMatchingType (to));
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    66
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    67
  Mac48Address realTo = Mac48Address::ConvertFrom (to);
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    68
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    69
  Packet p = packet;
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    70
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    71
  LlcSnapHeader llc;
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    72
  llc.SetType (protocolNumber);
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    73
  p.AddHeader (llc);
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    74
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    75
  m_txLogger (p, realTo);
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    76
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    77
  return DoSendTo (p, realTo);
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    78
}
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    79
void 
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    80
WifiNetDevice::DoForwardUp (Packet packet, const Mac48Address &from)
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    81
{
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    82
  m_rxLogger (packet, from);
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    83
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    84
  LlcSnapHeader llc;
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    85
  packet.RemoveHeader (llc);
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    86
  NetDevice::ForwardUp (packet, llc.GetType (), from);
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    87
}
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    88
Mac48Address 
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    89
WifiNetDevice::GetSelfAddress (void) const
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    90
{
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    91
  NS_ASSERT (Mac48Address::IsMatchingType (GetAddress ()));
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    92
  Mac48Address self = Mac48Address::ConvertFrom (GetAddress ());
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    93
  return self;
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    94
}
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    95
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    96
/*****************************************************
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    97
 *            Adhoc code
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    98
 *****************************************************/
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    99
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   100
AdhocWifiNetDevice::AdhocWifiNetDevice (Ptr<Node> node)
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   101
  : WifiNetDevice (node)
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   102
{}
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   103
AdhocWifiNetDevice::~AdhocWifiNetDevice ()
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   104
{
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   105
  delete m_dca;
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   106
  delete m_high;
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   107
}
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   108
Mac48Address 
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   109
AdhocWifiNetDevice::GetBssid (void) const
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   110
{
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   111
  return m_high->GetBssid ();
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   112
}
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   113
Ssid 
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   114
AdhocWifiNetDevice::GetSsid (void) const
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   115
{
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   116
  return m_ssid;
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   117
}
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   118
void 
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   119
AdhocWifiNetDevice::SetSsid (Ssid ssid)
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   120
{
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   121
  // XXX restart adhoc network join.
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   122
  m_ssid = ssid;
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   123
}
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   124
bool
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   125
AdhocWifiNetDevice::DoSendTo (const Packet &packet, Mac48Address const &to)
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   126
{
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   127
  m_high->Enqueue (packet, to);
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   128
  return true;
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   129
}
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   130
void
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   131
AdhocWifiNetDevice::NotifyConnected (void)
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   132
{
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   133
  NotifyLinkUp ();
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   134
}
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   135
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   136
/*****************************************************
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   137
 *            STA code
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   138
 *****************************************************/
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   139
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   140
NqstaWifiNetDevice::NqstaWifiNetDevice (Ptr<Node> node)
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   141
  : WifiNetDevice (node)
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   142
{}
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   143
NqstaWifiNetDevice::~NqstaWifiNetDevice ()
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   144
{
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   145
  delete m_dca;
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   146
  delete m_high;
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   147
}
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   148
Mac48Address 
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   149
NqstaWifiNetDevice::GetBssid (void) const
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   150
{
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   151
  return m_high->GetBssid ();
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   152
}
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   153
Ssid 
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   154
NqstaWifiNetDevice::GetSsid (void) const
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   155
{
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   156
  return m_ssid;
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   157
}
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   158
void 
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   159
NqstaWifiNetDevice::StartActiveAssociation (Ssid ssid)
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   160
{
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   161
  m_ssid = ssid;
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   162
  m_high->StartActiveAssociation ();
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   163
}
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   164
bool
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   165
NqstaWifiNetDevice::DoSendTo (const Packet &packet, Mac48Address const &to)
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   166
{
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   167
  m_high->Queue (packet, to);
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   168
  return true;
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   169
}
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   170
void
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   171
NqstaWifiNetDevice::NotifyConnected (void)
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   172
{
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   173
  // do nothing because link status is kept track of in
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   174
  // ::Associated and ::Disassociated
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   175
}
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   176
void 
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   177
NqstaWifiNetDevice::Associated (void)
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   178
{
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   179
  NetDevice::NotifyLinkUp ();
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   180
}
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   181
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   182
void 
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   183
NqstaWifiNetDevice::DisAssociated (void)
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   184
{
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   185
  NetDevice::NotifyLinkDown ();
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   186
}
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   187
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   188
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   189
/*****************************************************
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   190
 *            AP code
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   191
 *****************************************************/
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   192
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   193
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   194
NqapWifiNetDevice::NqapWifiNetDevice (Ptr<Node> node)
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   195
  : WifiNetDevice (node)
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   196
{}
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   197
NqapWifiNetDevice::~NqapWifiNetDevice ()
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   198
{
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   199
  delete m_dca;
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   200
  delete m_high;
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   201
}
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   202
Mac48Address 
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   203
NqapWifiNetDevice::GetBssid (void) const
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   204
{
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   205
  return GetSelfAddress ();
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   206
}
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   207
Ssid 
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   208
NqapWifiNetDevice::GetSsid (void) const
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   209
{
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   210
  return m_ssid;
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   211
}
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   212
void 
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   213
NqapWifiNetDevice::SetSsid (Ssid ssid)
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   214
{
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   215
  m_ssid = ssid;
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   216
}
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   217
bool
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   218
NqapWifiNetDevice::DoSendTo (const Packet &packet, Mac48Address const & to)
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   219
{
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   220
  m_high->Queue (packet, to);
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   221
  return true;
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   222
}
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   223
void
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   224
NqapWifiNetDevice::NotifyConnected (void)
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   225
{
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   226
  NotifyLinkUp ();
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   227
}
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   228
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   229
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   230
} // namespace ns3
e51ef0422485 missing file
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   231