src/devices/wifi/wifi-mac-header.cc
author Pavel Boyko <boyko@iitp.ru>
Fri, 03 Jul 2009 12:02:30 +0400
changeset 5102 0bb1dd1c301d
parent 4987 1bee3ec2793d
child 5120 a6c1a26267cf
permissions -rw-r--r--
Code cleanup for merge into the mainline
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     1
/* -*-  Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     2
/*
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
     3
 * Copyright (c) 2006, 2009 INRIA
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
     4
 * Copyright (c) 2009 MIRKO BANCHI
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     5
 *
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     6
 * This program is free software; you can redistribute it and/or modify
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     7
 * it under the terms of the GNU General Public License version 2 as
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     8
 * published by the Free Software Foundation;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     9
 *
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    10
 * This program is distributed in the hope that it will be useful,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    13
 * GNU General Public License for more details.
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    14
 *
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    16
 * along with this program; if not, write to the Free Software
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    17
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    18
 *
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    19
 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
    20
 * Author: Mirko Banchi <mk.banchi@gmail.com>
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    21
 */
1974
0d6b3bead74a replace cassert by ns3/assert.h
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1896
diff changeset
    22
#include "ns3/assert.h"
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    23
#include "ns3/address-utils.h"
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    24
#include "wifi-mac-header.h"
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    25
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    26
namespace ns3 {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    27
2643
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2188
diff changeset
    28
NS_OBJECT_ENSURE_REGISTERED (WifiMacHeader);
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2188
diff changeset
    29
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    30
enum {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    31
  TYPE_MGT = 0,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    32
  TYPE_CTL  = 1,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    33
  TYPE_DATA = 2
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    34
};
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    35
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    36
enum {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    37
  SUBTYPE_CTL_BACKREQ = 8,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    38
  SUBTYPE_CTL_BACKRESP = 9,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    39
  SUBTYPE_CTL_RTS = 11,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    40
  SUBTYPE_CTL_CTS = 12,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    41
  SUBTYPE_CTL_ACK = 13
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    42
};
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    43
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    44
WifiMacHeader::WifiMacHeader ()
3661
07850bede91a initialize m_ctrlPwrMgt
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3081
diff changeset
    45
  : m_ctrlPwrMgt (0),
07850bede91a initialize m_ctrlPwrMgt
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3081
diff changeset
    46
    m_ctrlMoreData (0),
3081
de6acde26560 avoid un-initialized bits
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2985
diff changeset
    47
    m_ctrlWep (0),
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
    48
    m_ctrlOrder (1),
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
    49
    m_amsduPresent (0)
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    50
{}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    51
WifiMacHeader::~WifiMacHeader ()
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    52
{}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    53
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    54
void 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    55
WifiMacHeader::SetDsFrom (void)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    56
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    57
  m_ctrlFromDs = 1;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    58
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    59
void 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    60
WifiMacHeader::SetDsNotFrom (void)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    61
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    62
  m_ctrlFromDs = 0;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    63
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    64
void 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    65
WifiMacHeader::SetDsTo (void)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    66
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    67
  m_ctrlToDs = 1;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    68
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    69
void 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    70
WifiMacHeader::SetDsNotTo (void)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    71
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    72
  m_ctrlToDs = 0;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    73
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    74
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    75
void 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    76
WifiMacHeader::SetAddr1 (Mac48Address address)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    77
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    78
  m_addr1 = address;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    79
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    80
void 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    81
WifiMacHeader::SetAddr2 (Mac48Address address)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    82
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    83
  m_addr2 = address;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    84
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    85
void 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    86
WifiMacHeader::SetAddr3 (Mac48Address address)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    87
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    88
  m_addr3 = address;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    89
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    90
void 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    91
WifiMacHeader::SetAddr4 (Mac48Address address)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    92
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    93
  m_addr4 = address;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    94
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    95
void 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    96
WifiMacHeader::SetAssocReq (void)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    97
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    98
  m_ctrlType = TYPE_MGT;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    99
  m_ctrlSubtype = 0;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   100
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   101
void 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   102
WifiMacHeader::SetAssocResp (void)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   103
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   104
  m_ctrlType = TYPE_MGT;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   105
  m_ctrlSubtype = 1;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   106
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   107
void 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   108
WifiMacHeader::SetProbeReq (void)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   109
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   110
  m_ctrlType = TYPE_MGT;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   111
  m_ctrlSubtype = 4;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   112
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   113
void 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   114
WifiMacHeader::SetProbeResp (void)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   115
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   116
  m_ctrlType = TYPE_MGT;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   117
  m_ctrlSubtype = 5;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   118
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   119
void 
2085
72ec3b59f333 add WifiMacHeader::SetBeacon
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2022
diff changeset
   120
WifiMacHeader::SetBeacon (void)
72ec3b59f333 add WifiMacHeader::SetBeacon
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2022
diff changeset
   121
{
72ec3b59f333 add WifiMacHeader::SetBeacon
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2022
diff changeset
   122
  m_ctrlType = TYPE_MGT;
72ec3b59f333 add WifiMacHeader::SetBeacon
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2022
diff changeset
   123
  m_ctrlSubtype = 8;
72ec3b59f333 add WifiMacHeader::SetBeacon
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2022
diff changeset
   124
}
72ec3b59f333 add WifiMacHeader::SetBeacon
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2022
diff changeset
   125
void 
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   126
WifiMacHeader::SetTypeData (void)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   127
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   128
  m_ctrlType = TYPE_DATA;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   129
  m_ctrlSubtype = 0;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   130
}
4968
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   131
void
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   132
WifiMacHeader::SetAction (void)
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   133
{
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   134
 m_ctrlType = TYPE_MGT;
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   135
 m_ctrlSubtype = 0x0D;
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   136
}
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3661
diff changeset
   137
void
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3661
diff changeset
   138
WifiMacHeader::SetMultihopAction (void)
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3661
diff changeset
   139
{
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3661
diff changeset
   140
 m_ctrlType = TYPE_MGT;
4968
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   141
 m_ctrlSubtype = 0x0F;
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3661
diff changeset
   142
}
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   143
void 
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   144
WifiMacHeader::SetType (enum WifiMacType type)
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   145
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   146
  switch (type) {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   147
  case WIFI_MAC_CTL_BACKREQ:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   148
    m_ctrlType = TYPE_CTL;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   149
    m_ctrlSubtype = SUBTYPE_CTL_BACKREQ;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   150
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   151
  case WIFI_MAC_CTL_BACKRESP:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   152
    m_ctrlType = TYPE_CTL;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   153
    m_ctrlSubtype = SUBTYPE_CTL_BACKRESP;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   154
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   155
  case WIFI_MAC_CTL_RTS:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   156
    m_ctrlType = TYPE_CTL;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   157
    m_ctrlSubtype = SUBTYPE_CTL_RTS;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   158
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   159
  case WIFI_MAC_CTL_CTS:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   160
    m_ctrlType = TYPE_CTL;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   161
    m_ctrlSubtype = SUBTYPE_CTL_CTS;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   162
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   163
  case WIFI_MAC_CTL_ACK:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   164
    m_ctrlType = TYPE_CTL;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   165
    m_ctrlSubtype = SUBTYPE_CTL_ACK;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   166
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   167
  case WIFI_MAC_MGT_ASSOCIATION_REQUEST:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   168
    m_ctrlType = TYPE_MGT;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   169
    m_ctrlSubtype = 0;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   170
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   171
  case WIFI_MAC_MGT_ASSOCIATION_RESPONSE:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   172
    m_ctrlType = TYPE_MGT;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   173
    m_ctrlSubtype = 1;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   174
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   175
  case WIFI_MAC_MGT_REASSOCIATION_REQUEST:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   176
    m_ctrlType = TYPE_MGT;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   177
    m_ctrlSubtype = 2;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   178
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   179
  case WIFI_MAC_MGT_REASSOCIATION_RESPONSE:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   180
    m_ctrlType = TYPE_MGT;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   181
    m_ctrlSubtype = 3;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   182
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   183
  case WIFI_MAC_MGT_PROBE_REQUEST:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   184
    m_ctrlType = TYPE_MGT;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   185
    m_ctrlSubtype = 4;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   186
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   187
  case WIFI_MAC_MGT_PROBE_RESPONSE:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   188
    m_ctrlType = TYPE_MGT;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   189
    m_ctrlSubtype = 5;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   190
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   191
  case WIFI_MAC_MGT_BEACON:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   192
    m_ctrlType = TYPE_MGT;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   193
    m_ctrlSubtype = 8;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   194
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   195
  case WIFI_MAC_MGT_DISASSOCIATION:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   196
    m_ctrlType = TYPE_MGT;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   197
    m_ctrlSubtype = 10;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   198
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   199
  case WIFI_MAC_MGT_AUTHENTICATION:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   200
    m_ctrlType = TYPE_MGT;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   201
    m_ctrlSubtype = 11;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   202
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   203
  case WIFI_MAC_MGT_DEAUTHENTICATION:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   204
    m_ctrlType = TYPE_MGT;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   205
    m_ctrlSubtype = 12;
4968
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   206
  case WIFI_MAC_MGT_ACTION:
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   207
    m_ctrlType = TYPE_MGT;
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   208
    m_ctrlSubtype = 13;
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   209
  case WIFI_MAC_MGT_ACTION_NO_ACK:
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   210
    m_ctrlType = TYPE_MGT;
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   211
    m_ctrlSubtype = 14;
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3661
diff changeset
   212
  case WIFI_MAC_MGT_MULTIHOP_ACTION:
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3661
diff changeset
   213
    m_ctrlType = TYPE_MGT;
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3661
diff changeset
   214
    m_ctrlSubtype = 15;
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   215
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   216
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   217
  case WIFI_MAC_DATA:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   218
    m_ctrlType = TYPE_DATA;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   219
    m_ctrlSubtype = 0;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   220
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   221
  case WIFI_MAC_DATA_CFACK:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   222
    m_ctrlType = TYPE_DATA;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   223
    m_ctrlSubtype = 1;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   224
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   225
  case WIFI_MAC_DATA_CFPOLL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   226
    m_ctrlType = TYPE_DATA;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   227
    m_ctrlSubtype = 2;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   228
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   229
  case WIFI_MAC_DATA_CFACK_CFPOLL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   230
    m_ctrlType = TYPE_DATA;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   231
    m_ctrlSubtype = 3;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   232
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   233
  case WIFI_MAC_DATA_NULL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   234
    m_ctrlType = TYPE_DATA;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   235
    m_ctrlSubtype = 4;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   236
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   237
  case WIFI_MAC_DATA_NULL_CFACK:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   238
    m_ctrlType = TYPE_DATA;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   239
    m_ctrlSubtype = 5;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   240
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   241
  case WIFI_MAC_DATA_NULL_CFPOLL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   242
    m_ctrlType = TYPE_DATA;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   243
    m_ctrlSubtype = 6;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   244
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   245
  case WIFI_MAC_DATA_NULL_CFACK_CFPOLL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   246
    m_ctrlType = TYPE_DATA;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   247
    m_ctrlSubtype = 7;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   248
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   249
  case WIFI_MAC_QOSDATA:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   250
    m_ctrlType = TYPE_DATA;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   251
    m_ctrlSubtype = 8;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   252
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   253
  case WIFI_MAC_QOSDATA_CFACK:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   254
    m_ctrlType = TYPE_DATA;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   255
    m_ctrlSubtype = 9;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   256
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   257
  case WIFI_MAC_QOSDATA_CFPOLL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   258
    m_ctrlType = TYPE_DATA;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   259
    m_ctrlSubtype = 10;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   260
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   261
  case WIFI_MAC_QOSDATA_CFACK_CFPOLL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   262
    m_ctrlType = TYPE_DATA;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   263
    m_ctrlSubtype = 11;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   264
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   265
  case WIFI_MAC_QOSDATA_NULL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   266
    m_ctrlType = TYPE_DATA;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   267
    m_ctrlSubtype = 12;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   268
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   269
  case WIFI_MAC_QOSDATA_NULL_CFPOLL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   270
    m_ctrlType = TYPE_DATA;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   271
    m_ctrlSubtype = 14;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   272
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   273
  case WIFI_MAC_QOSDATA_NULL_CFACK_CFPOLL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   274
    m_ctrlType = TYPE_DATA;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   275
    m_ctrlSubtype = 15;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   276
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   277
  }
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   278
  m_ctrlToDs = 0;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   279
  m_ctrlFromDs = 0;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   280
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   281
void 
2022
33579d27ce2a try to simplify duration calculations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
   282
WifiMacHeader::SetRawDuration (uint16_t duration)
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   283
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   284
  m_duration = duration;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   285
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   286
void 
2022
33579d27ce2a try to simplify duration calculations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
   287
WifiMacHeader::SetDuration (Time duration)
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   288
{
2022
33579d27ce2a try to simplify duration calculations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
   289
  int64_t duration_us = duration.GetMicroSeconds ();
33579d27ce2a try to simplify duration calculations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
   290
  NS_ASSERT (duration_us >= 0 && duration_us <= 0x7fff);
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   291
  m_duration = static_cast<uint16_t> (duration_us);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   292
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   293
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   294
void WifiMacHeader::SetId (uint16_t id)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   295
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   296
  m_duration = id;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   297
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   298
void WifiMacHeader::SetSequenceNumber (uint16_t seq)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   299
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   300
  m_seqSeq = seq;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   301
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   302
void WifiMacHeader::SetFragmentNumber (uint8_t frag)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   303
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   304
  m_seqFrag = frag;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   305
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   306
void WifiMacHeader::SetNoMoreFragments (void)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   307
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   308
  m_ctrlMoreFrag = 0;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   309
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   310
void WifiMacHeader::SetMoreFragments (void)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   311
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   312
  m_ctrlMoreFrag = 1;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   313
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   314
void WifiMacHeader::SetRetry (void)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   315
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   316
  m_ctrlRetry = 1;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   317
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   318
void WifiMacHeader::SetNoRetry (void)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   319
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   320
  m_ctrlRetry = 0;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   321
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   322
void WifiMacHeader::SetQosTid (uint8_t tid)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   323
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   324
  m_qosTid = tid;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   325
}
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   326
void WifiMacHeader::SetQosEosp ()
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   327
{
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   328
  m_qosEosp = 1;
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   329
}
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   330
void WifiMacHeader::SetQosNoEosp ()
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   331
{
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   332
  m_qosEosp = 0;
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   333
}
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   334
void WifiMacHeader::SetQosAckPolicy (enum QosAckPolicy policy)
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   335
{
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   336
  switch (policy) {
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   337
  case NORMAL_ACK :
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   338
    m_qosAckPolicy = 0;
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   339
    break;
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   340
  case NO_ACK :
4414
44706d4a3c5e Swap values of QosAckPolicy
Mirko Banchi <mk.banchi@gmail.com>
parents: 4401
diff changeset
   341
    m_qosAckPolicy = 1;
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   342
    break;
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   343
  case NO_EXPLICIT_ACK :
4414
44706d4a3c5e Swap values of QosAckPolicy
Mirko Banchi <mk.banchi@gmail.com>
parents: 4401
diff changeset
   344
    m_qosAckPolicy = 2;
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   345
    break;
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   346
  case BLOCK_ACK :
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   347
    m_qosAckPolicy = 3;
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   348
    break;
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   349
  }
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   350
}
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   351
void WifiMacHeader::SetQosAmsdu (void)
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   352
{
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   353
  m_amsduPresent = 1;
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   354
}
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   355
void WifiMacHeader::SetQosNoAmsdu (void)
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   356
{
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   357
  m_amsduPresent = 0;
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   358
}
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   359
void WifiMacHeader::SetQosTxopLimit (uint8_t txop)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   360
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   361
  m_qosStuff = txop;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   362
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   363
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   364
Mac48Address 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   365
WifiMacHeader::GetAddr1 (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   366
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   367
  return m_addr1;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   368
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   369
Mac48Address 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   370
WifiMacHeader::GetAddr2 (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   371
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   372
  return m_addr2;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   373
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   374
Mac48Address 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   375
WifiMacHeader::GetAddr3 (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   376
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   377
  return m_addr3;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   378
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   379
Mac48Address 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   380
WifiMacHeader::GetAddr4 (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   381
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   382
  return m_addr4;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   383
}
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   384
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   385
enum WifiMacType 
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   386
WifiMacHeader::GetType (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   387
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   388
  switch (m_ctrlType) {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   389
  case TYPE_MGT:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   390
    switch (m_ctrlSubtype) {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   391
    case 0:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   392
      return WIFI_MAC_MGT_ASSOCIATION_REQUEST;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   393
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   394
    case 1:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   395
      return WIFI_MAC_MGT_ASSOCIATION_RESPONSE;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   396
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   397
    case 2:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   398
      return WIFI_MAC_MGT_REASSOCIATION_REQUEST;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   399
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   400
    case 3:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   401
      return WIFI_MAC_MGT_REASSOCIATION_RESPONSE;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   402
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   403
    case 4:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   404
      return WIFI_MAC_MGT_PROBE_REQUEST;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   405
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   406
    case 5:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   407
      return WIFI_MAC_MGT_PROBE_RESPONSE;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   408
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   409
    case 8:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   410
      return WIFI_MAC_MGT_BEACON;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   411
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   412
    case 10:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   413
      return WIFI_MAC_MGT_DISASSOCIATION;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   414
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   415
    case 11:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   416
      return WIFI_MAC_MGT_AUTHENTICATION;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   417
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   418
    case 12:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   419
      return WIFI_MAC_MGT_DEAUTHENTICATION;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   420
      break;
4968
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   421
    case 13:
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   422
      return WIFI_MAC_MGT_ACTION;
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   423
      break;
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   424
    case 14:
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   425
      return WIFI_MAC_MGT_ACTION_NO_ACK;
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   426
      break;
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   427
    case 15:
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3661
diff changeset
   428
      return WIFI_MAC_MGT_MULTIHOP_ACTION;
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3661
diff changeset
   429
      break;
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   430
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   431
    }
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   432
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   433
  case TYPE_CTL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   434
    switch (m_ctrlSubtype) {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   435
    case SUBTYPE_CTL_BACKREQ:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   436
      return WIFI_MAC_CTL_BACKREQ;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   437
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   438
    case SUBTYPE_CTL_BACKRESP:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   439
      return WIFI_MAC_CTL_BACKRESP;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   440
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   441
    case SUBTYPE_CTL_RTS:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   442
      return WIFI_MAC_CTL_RTS;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   443
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   444
    case SUBTYPE_CTL_CTS:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   445
      return WIFI_MAC_CTL_CTS;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   446
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   447
    case SUBTYPE_CTL_ACK:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   448
      return WIFI_MAC_CTL_ACK;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   449
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   450
    }
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   451
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   452
  case TYPE_DATA:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   453
    switch (m_ctrlSubtype) {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   454
    case 0:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   455
      return WIFI_MAC_DATA;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   456
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   457
    case 1:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   458
      return WIFI_MAC_DATA_CFACK;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   459
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   460
    case 2:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   461
      return WIFI_MAC_DATA_CFPOLL;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   462
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   463
    case 3:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   464
      return WIFI_MAC_DATA_CFACK_CFPOLL;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   465
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   466
    case 4:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   467
      return WIFI_MAC_DATA_NULL;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   468
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   469
    case 5:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   470
      return WIFI_MAC_DATA_NULL_CFACK;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   471
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   472
    case 6:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   473
      return WIFI_MAC_DATA_NULL_CFPOLL;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   474
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   475
    case 7:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   476
      return WIFI_MAC_DATA_NULL_CFACK_CFPOLL;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   477
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   478
    case 8:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   479
      return WIFI_MAC_QOSDATA;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   480
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   481
    case 9:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   482
      return WIFI_MAC_QOSDATA_CFACK;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   483
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   484
    case 10:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   485
      return WIFI_MAC_QOSDATA_CFPOLL;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   486
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   487
    case 11:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   488
      return WIFI_MAC_QOSDATA_CFACK_CFPOLL;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   489
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   490
    case 12:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   491
      return WIFI_MAC_QOSDATA_NULL;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   492
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   493
    case 14:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   494
      return WIFI_MAC_QOSDATA_NULL_CFPOLL;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   495
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   496
    case 15:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   497
      return WIFI_MAC_QOSDATA_NULL_CFACK_CFPOLL;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   498
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   499
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   500
    }
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   501
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   502
  }
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   503
  // NOTREACHED
1974
0d6b3bead74a replace cassert by ns3/assert.h
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1896
diff changeset
   504
  NS_ASSERT (false);
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   505
  return (enum WifiMacType)-1;
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   506
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   507
bool 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   508
WifiMacHeader::IsFromDs (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   509
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   510
  return m_ctrlFromDs == 1;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   511
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   512
bool 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   513
WifiMacHeader::IsToDs (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   514
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   515
  return m_ctrlToDs == 1;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   516
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   517
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   518
bool 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   519
WifiMacHeader::IsData (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   520
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   521
  return (m_ctrlType == TYPE_DATA)?true:false;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   522
    
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   523
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   524
bool 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   525
WifiMacHeader::IsQosData (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   526
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   527
  return (m_ctrlType == TYPE_DATA && (m_ctrlSubtype & 0x08))?true:false;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   528
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   529
bool 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   530
WifiMacHeader::IsCtl (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   531
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   532
  return (m_ctrlType == TYPE_CTL)?true:false;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   533
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   534
bool 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   535
WifiMacHeader::IsMgt (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   536
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   537
  return (m_ctrlType == TYPE_MGT)?true:false;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   538
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   539
bool 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   540
WifiMacHeader::IsCfpoll (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   541
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   542
  switch (GetType ()) {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   543
  case WIFI_MAC_DATA_CFPOLL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   544
  case WIFI_MAC_DATA_CFACK_CFPOLL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   545
  case WIFI_MAC_DATA_NULL_CFPOLL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   546
  case WIFI_MAC_DATA_NULL_CFACK_CFPOLL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   547
  case WIFI_MAC_QOSDATA_CFPOLL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   548
  case WIFI_MAC_QOSDATA_CFACK_CFPOLL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   549
  case WIFI_MAC_QOSDATA_NULL_CFPOLL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   550
  case WIFI_MAC_QOSDATA_NULL_CFACK_CFPOLL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   551
    return true;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   552
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   553
  default:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   554
    return false;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   555
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   556
  }
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   557
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   558
bool 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   559
WifiMacHeader::IsRts (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   560
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   561
  return (GetType () == WIFI_MAC_CTL_RTS)?true:false;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   562
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   563
bool 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   564
WifiMacHeader::IsCts (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   565
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   566
  return (GetType () == WIFI_MAC_CTL_CTS)?true:false;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   567
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   568
bool 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   569
WifiMacHeader::IsAck (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   570
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   571
  return (GetType () == WIFI_MAC_CTL_ACK)?true:false;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   572
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   573
bool 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   574
WifiMacHeader::IsAssocReq (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   575
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   576
  return (GetType () == WIFI_MAC_MGT_ASSOCIATION_REQUEST)?true:false;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   577
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   578
bool 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   579
WifiMacHeader::IsAssocResp (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   580
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   581
  return (GetType () == WIFI_MAC_MGT_ASSOCIATION_RESPONSE)?true:false;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   582
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   583
bool 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   584
WifiMacHeader::IsReassocReq (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   585
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   586
  return (GetType () == WIFI_MAC_MGT_REASSOCIATION_REQUEST)?true:false;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   587
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   588
bool 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   589
WifiMacHeader::IsReassocResp (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   590
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   591
  return (GetType () == WIFI_MAC_MGT_REASSOCIATION_RESPONSE)?true:false;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   592
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   593
bool 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   594
WifiMacHeader::IsProbeReq (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   595
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   596
  return (GetType () == WIFI_MAC_MGT_PROBE_REQUEST)?true:false;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   597
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   598
bool 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   599
WifiMacHeader::IsProbeResp (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   600
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   601
  return (GetType () == WIFI_MAC_MGT_PROBE_RESPONSE)?true:false;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   602
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   603
bool 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   604
WifiMacHeader::IsBeacon (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   605
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   606
  return (GetType () == WIFI_MAC_MGT_BEACON)?true:false;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   607
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   608
bool 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   609
WifiMacHeader::IsDisassociation (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   610
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   611
  return (GetType () == WIFI_MAC_MGT_DISASSOCIATION)?true:false;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   612
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   613
bool 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   614
WifiMacHeader::IsAuthentication (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   615
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   616
  return (GetType () == WIFI_MAC_MGT_AUTHENTICATION)?true:false;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   617
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   618
bool 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   619
WifiMacHeader::IsDeauthentication (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   620
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   621
  return (GetType () == WIFI_MAC_MGT_DEAUTHENTICATION)?true:false;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   622
}
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3661
diff changeset
   623
bool
4968
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   624
WifiMacHeader::IsAction (void) const
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   625
{
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   626
  return (GetType () == WIFI_MAC_MGT_ACTION)?true:false;
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   627
}
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   628
bool
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3661
diff changeset
   629
WifiMacHeader::IsMultihopAction (void) const
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3661
diff changeset
   630
{
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3661
diff changeset
   631
  return (GetType () == WIFI_MAC_MGT_MULTIHOP_ACTION)?true:false;
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3661
diff changeset
   632
}
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   633
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   634
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   635
uint16_t 
2022
33579d27ce2a try to simplify duration calculations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
   636
WifiMacHeader::GetRawDuration (void) const
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   637
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   638
  return m_duration;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   639
}
2022
33579d27ce2a try to simplify duration calculations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
   640
Time
33579d27ce2a try to simplify duration calculations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
   641
WifiMacHeader::GetDuration (void) const
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   642
{
2022
33579d27ce2a try to simplify duration calculations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
   643
  return MicroSeconds (m_duration);
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   644
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   645
uint16_t 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   646
WifiMacHeader::GetSequenceControl (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   647
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   648
  return (m_seqSeq << 4) | m_seqFrag;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   649
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   650
uint16_t
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   651
WifiMacHeader::GetSequenceNumber (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   652
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   653
  return m_seqSeq;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   654
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   655
uint16_t
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   656
WifiMacHeader::GetFragmentNumber (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   657
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   658
  return m_seqFrag;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   659
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   660
bool 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   661
WifiMacHeader::IsRetry (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   662
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   663
  return (m_ctrlRetry == 1)?true:false;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   664
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   665
bool 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   666
WifiMacHeader::IsMoreFragments (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   667
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   668
  return (m_ctrlMoreFrag == 1)?true:false;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   669
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   670
bool 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   671
WifiMacHeader::IsQosBlockAck (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   672
{
1974
0d6b3bead74a replace cassert by ns3/assert.h
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1896
diff changeset
   673
  NS_ASSERT (IsQosData ());
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   674
  return (m_qosAckPolicy == 3)?true:false;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   675
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   676
bool 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   677
WifiMacHeader::IsQosNoAck (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   678
{
1974
0d6b3bead74a replace cassert by ns3/assert.h
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1896
diff changeset
   679
  NS_ASSERT (IsQosData ());
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   680
  return (m_qosAckPolicy == 1)?true:false;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   681
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   682
bool 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   683
WifiMacHeader::IsQosAck (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   684
{
1974
0d6b3bead74a replace cassert by ns3/assert.h
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1896
diff changeset
   685
  NS_ASSERT (IsQosData ());
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   686
  return (m_qosAckPolicy == 0)?true:false;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   687
}
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   688
bool
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   689
WifiMacHeader::IsQosEosp (void) const
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   690
{
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   691
  NS_ASSERT (IsQosData ());
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   692
  return (m_qosEosp == 1)?true:false;
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   693
}
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   694
bool
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   695
WifiMacHeader::IsQosAmsdu (void) const
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   696
{
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   697
  NS_ASSERT (IsQosData ());
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   698
  return (m_amsduPresent == 1)?true:false;
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   699
}
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   700
uint8_t
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   701
WifiMacHeader::GetQosTid (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   702
{
1974
0d6b3bead74a replace cassert by ns3/assert.h
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1896
diff changeset
   703
  NS_ASSERT (IsQosData ());
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   704
  return m_qosTid;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   705
}
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   706
enum WifiMacHeader::QosAckPolicy
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   707
WifiMacHeader::GetQosAckPolicy (void) const
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   708
{
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   709
  switch (m_qosAckPolicy) {
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   710
  case 0 :
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   711
    return NORMAL_ACK;
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   712
    break;
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   713
  case 1 :
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   714
    return NO_ACK;
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   715
    break;
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   716
  case 2 :
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   717
    return NO_EXPLICIT_ACK;
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   718
    break;
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   719
  case 3 :
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   720
    return BLOCK_ACK;
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   721
    break;
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   722
  }
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   723
  // NOTREACHED
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   724
  NS_ASSERT (false);
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   725
  return (enum QosAckPolicy)-1;
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   726
}
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   727
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   728
uint8_t 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   729
WifiMacHeader::GetQosTxopLimit (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   730
{
1974
0d6b3bead74a replace cassert by ns3/assert.h
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1896
diff changeset
   731
  NS_ASSERT (IsQosData ());
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   732
  return m_qosStuff;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   733
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   734
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   735
uint16_t
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   736
WifiMacHeader::GetFrameControl (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   737
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   738
  uint16_t val = 0;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   739
  val |= (m_ctrlType << 2) & (0x3<<2);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   740
  val |= (m_ctrlSubtype << 4) & (0xf<<4);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   741
  val |= (m_ctrlToDs << 8) & (0x1<<8);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   742
  val |= (m_ctrlFromDs << 9) & (0x1<<9);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   743
  val |= (m_ctrlMoreFrag << 10) & (0x1<<10);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   744
  val |= (m_ctrlRetry << 11) & (0x1<<11);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   745
  val |= (m_ctrlMoreData << 13) & (0x1<<13);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   746
  val |= (m_ctrlWep << 14) & (0x1<<14);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   747
  val |= (m_ctrlOrder << 15) & (0x1<<15);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   748
  return val;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   749
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   750
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   751
uint16_t
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   752
WifiMacHeader::GetQosControl (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   753
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   754
  uint16_t val = 0;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   755
  val |= m_qosTid;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   756
  val |= m_qosEosp << 4;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   757
  val |= m_qosAckPolicy << 5;
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   758
  val |= m_amsduPresent << 7;
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   759
  val |= m_qosStuff << 8;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   760
  return val;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   761
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   762
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   763
void
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   764
WifiMacHeader::SetFrameControl (uint16_t ctrl)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   765
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   766
  m_ctrlType = (ctrl >> 2) & 0x03;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   767
  m_ctrlSubtype = (ctrl >> 4) & 0x0f;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   768
  m_ctrlToDs = (ctrl >> 8) & 0x01;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   769
  m_ctrlFromDs = (ctrl >> 9) & 0x01;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   770
  m_ctrlMoreFrag = (ctrl >> 10) & 0x01;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   771
  m_ctrlRetry = (ctrl >> 11) & 0x01;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   772
  m_ctrlMoreData = (ctrl >> 13) & 0x01;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   773
  m_ctrlWep = (ctrl >> 14) & 0x01;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   774
  m_ctrlOrder = (ctrl >> 15) & 0x01;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   775
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   776
void 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   777
WifiMacHeader::SetSequenceControl (uint16_t seq)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   778
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   779
  m_seqFrag = seq & 0x0f;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   780
  m_seqSeq = (seq >> 4) & 0x0fff;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   781
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   782
void
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   783
WifiMacHeader::SetQosControl (uint16_t qos)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   784
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   785
  m_qosTid = qos & 0x000f;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   786
  m_qosEosp = (qos >> 4) & 0x0001;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   787
  m_qosAckPolicy = (qos >> 5) & 0x0003;
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   788
  m_amsduPresent = (qos >> 7) & 0x0001;
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   789
  m_qosStuff = (qos >> 8) & 0x00ff;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   790
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   791
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   792
uint32_t 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   793
WifiMacHeader::GetSize (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   794
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   795
  uint32_t size = 0;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   796
  switch (m_ctrlType) {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   797
  case TYPE_MGT:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   798
    size = 2+2+6+6+6+2;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   799
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   800
  case TYPE_CTL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   801
    switch (m_ctrlSubtype) {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   802
    case SUBTYPE_CTL_RTS:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   803
      size = 2+2+6+6;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   804
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   805
    case SUBTYPE_CTL_CTS:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   806
    case SUBTYPE_CTL_ACK:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   807
      size = 2+2+6;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   808
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   809
    case SUBTYPE_CTL_BACKREQ:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   810
    case SUBTYPE_CTL_BACKRESP:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   811
      // NOT IMPLEMENTED
1974
0d6b3bead74a replace cassert by ns3/assert.h
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1896
diff changeset
   812
      NS_ASSERT (false);
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   813
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   814
    }
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   815
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   816
  case TYPE_DATA:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   817
    size = 2+2+6+6+6+2;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   818
    if (m_ctrlToDs && m_ctrlFromDs) {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   819
      size += 6;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   820
    }
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   821
    if (m_ctrlSubtype & 0x08) {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   822
      size += 2;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   823
    }
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   824
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   825
  }
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   826
  return size;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   827
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   828
char const *
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   829
WifiMacHeader::GetTypeString (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   830
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   831
#define FOO(x) \
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   832
case WIFI_MAC_ ## x: \
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   833
  return #x; \
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   834
  break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   835
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   836
  switch (GetType ()) {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   837
    FOO (CTL_RTS);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   838
    FOO (CTL_CTS);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   839
    FOO (CTL_ACK);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   840
    FOO (CTL_BACKREQ);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   841
    FOO (CTL_BACKRESP);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   842
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   843
    FOO (MGT_BEACON);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   844
    FOO (MGT_ASSOCIATION_REQUEST);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   845
    FOO (MGT_ASSOCIATION_RESPONSE);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   846
    FOO (MGT_DISASSOCIATION);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   847
    FOO (MGT_REASSOCIATION_REQUEST);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   848
    FOO (MGT_REASSOCIATION_RESPONSE);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   849
    FOO (MGT_PROBE_REQUEST);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   850
    FOO (MGT_PROBE_RESPONSE);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   851
    FOO (MGT_AUTHENTICATION);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   852
    FOO (MGT_DEAUTHENTICATION);
4968
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   853
    FOO (MGT_ACTION);
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   854
    FOO (MGT_ACTION_NO_ACK);
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   855
    FOO (MGT_MULTIHOP_ACTION);
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   856
    
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   857
    FOO (DATA);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   858
    FOO (DATA_CFACK);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   859
    FOO (DATA_CFPOLL);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   860
    FOO (DATA_CFACK_CFPOLL);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   861
    FOO (DATA_NULL);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   862
    FOO (DATA_NULL_CFACK);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   863
    FOO (DATA_NULL_CFPOLL);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   864
    FOO (DATA_NULL_CFACK_CFPOLL);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   865
    FOO (QOSDATA);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   866
    FOO (QOSDATA_CFACK);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   867
    FOO (QOSDATA_CFPOLL);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   868
    FOO (QOSDATA_CFACK_CFPOLL);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   869
    FOO (QOSDATA_NULL);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   870
    FOO (QOSDATA_NULL_CFPOLL);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   871
    FOO (QOSDATA_NULL_CFACK_CFPOLL);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   872
  default:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   873
    return "ERROR";
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   874
  }
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   875
#undef FOO
2188
36d410f015bf fix optimized build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2085
diff changeset
   876
  // needed to make gcc 4.0.1 ppc darwin happy.
36d410f015bf fix optimized build
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2085
diff changeset
   877
  return "BIG_ERROR";
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   878
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   879
2643
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2188
diff changeset
   880
TypeId 
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2188
diff changeset
   881
WifiMacHeader::GetTypeId (void)
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2188
diff changeset
   882
{
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2188
diff changeset
   883
  static TypeId tid = TypeId ("ns3::WifiMacHeader")
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2188
diff changeset
   884
    .SetParent<Header> ()
2650
3de4cacb8981 make sure all headers and trailers gets a constructor registered in their TypeId.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   885
    .AddConstructor<WifiMacHeader> ()
2643
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2188
diff changeset
   886
    ;
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2188
diff changeset
   887
  return tid;
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2188
diff changeset
   888
}
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3661
diff changeset
   889
2643
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2188
diff changeset
   890
TypeId 
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2188
diff changeset
   891
WifiMacHeader::GetInstanceTypeId (void) const
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2188
diff changeset
   892
{
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2188
diff changeset
   893
  return GetTypeId ();
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2188
diff changeset
   894
}
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   895
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   896
void 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   897
WifiMacHeader::PrintFrameControl (std::ostream &os) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   898
{
2653
b8eff7186c5c improve pretty-printing output.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2650
diff changeset
   899
  os << "ToDS=" << m_ctrlToDs << ", FromDS=" << m_ctrlFromDs 
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   900
     << ", MoreFrag=" << m_ctrlMoreFrag << ", Retry=" << m_ctrlRetry 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   901
     << ", MoreData=" << m_ctrlMoreData 
2653
b8eff7186c5c improve pretty-printing output.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2650
diff changeset
   902
    ;
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   903
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   904
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   905
void 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   906
WifiMacHeader::Print (std::ostream &os) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   907
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   908
  os << GetTypeString () << " ";
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   909
  switch (GetType ())
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   910
    {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   911
    case WIFI_MAC_CTL_RTS:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   912
      os << "Duration/ID=" << m_duration << "us"
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   913
         << ", RA=" << m_addr1 << ", TA=" << m_addr2;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   914
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   915
    case WIFI_MAC_CTL_CTS:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   916
    case WIFI_MAC_CTL_ACK:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   917
      os << "Duration/ID=" << m_duration << "us"
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   918
         << ", RA=" << m_addr1;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   919
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   920
    case WIFI_MAC_CTL_BACKREQ:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   921
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   922
    case WIFI_MAC_CTL_BACKRESP:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   923
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   924
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   925
    case WIFI_MAC_MGT_BEACON:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   926
    case WIFI_MAC_MGT_ASSOCIATION_REQUEST:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   927
    case WIFI_MAC_MGT_ASSOCIATION_RESPONSE:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   928
    case WIFI_MAC_MGT_DISASSOCIATION:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   929
    case WIFI_MAC_MGT_REASSOCIATION_REQUEST:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   930
    case WIFI_MAC_MGT_REASSOCIATION_RESPONSE:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   931
    case WIFI_MAC_MGT_PROBE_REQUEST:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   932
    case WIFI_MAC_MGT_PROBE_RESPONSE:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   933
    case WIFI_MAC_MGT_AUTHENTICATION:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   934
    case WIFI_MAC_MGT_DEAUTHENTICATION:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   935
      PrintFrameControl (os);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   936
      os << " Duration/ID=" << m_duration << "us"
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   937
         << ", DA=" << m_addr1 << ", SA=" << m_addr2
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   938
         << ", BSSID=" << m_addr3 << ", FragNumber=" << m_seqFrag
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   939
         << ", SeqNumber=" << m_seqSeq;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   940
      break;
4968
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   941
    case WIFI_MAC_MGT_ACTION:
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   942
      // TODO
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   943
    case WIFI_MAC_MGT_ACTION_NO_ACK:
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   944
      // TODO
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   945
    case WIFI_MAC_MGT_MULTIHOP_ACTION:
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4798
diff changeset
   946
      // TODO
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   947
    case WIFI_MAC_DATA:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   948
      PrintFrameControl (os);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   949
      os << " Duration/ID=" << m_duration << "us";
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   950
      if (!m_ctrlToDs && !m_ctrlFromDs)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   951
        {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   952
          os << "DA=" << m_addr1 << ", SA=" << m_addr2 << ", BSSID=" << m_addr3;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   953
        }
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   954
      else if (!m_ctrlToDs && m_ctrlFromDs)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   955
        {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   956
          os << "DA=" << m_addr1 << ", SA=" << m_addr3 << ", BSSID=" << m_addr2;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   957
        }
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   958
      else if (m_ctrlToDs && !m_ctrlFromDs)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   959
        {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   960
          os << "DA=" << m_addr3 << ", SA=" << m_addr2 << ", BSSID=" << m_addr1;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   961
        }
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   962
      else if (m_ctrlToDs && m_ctrlFromDs)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   963
        {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   964
          os << "DA=" << m_addr3 << ", SA=" << m_addr4 << ", RA=" << m_addr1 << ", TA=" << m_addr2;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   965
        }
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   966
      else
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   967
        {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   968
          NS_ASSERT (false);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   969
        }
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   970
      os << ", FragNumber=" << m_seqFrag
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   971
         << ", SeqNumber=" << m_seqSeq;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   972
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   973
    case WIFI_MAC_DATA_CFACK:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   974
    case WIFI_MAC_DATA_CFPOLL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   975
    case WIFI_MAC_DATA_CFACK_CFPOLL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   976
    case WIFI_MAC_DATA_NULL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   977
    case WIFI_MAC_DATA_NULL_CFACK:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   978
    case WIFI_MAC_DATA_NULL_CFPOLL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   979
    case WIFI_MAC_DATA_NULL_CFACK_CFPOLL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   980
    case WIFI_MAC_QOSDATA:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   981
    case WIFI_MAC_QOSDATA_CFACK:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   982
    case WIFI_MAC_QOSDATA_CFPOLL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   983
    case WIFI_MAC_QOSDATA_CFACK_CFPOLL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   984
    case WIFI_MAC_QOSDATA_NULL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   985
    case WIFI_MAC_QOSDATA_NULL_CFPOLL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   986
    case WIFI_MAC_QOSDATA_NULL_CFACK_CFPOLL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   987
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   988
    }
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   989
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   990
uint32_t 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   991
WifiMacHeader::GetSerializedSize (void) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   992
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   993
  return GetSize ();
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   994
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   995
void 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   996
WifiMacHeader::Serialize (Buffer::Iterator i) const
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   997
{
2794
9460d089da83 use lsb order rather than network order
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2653
diff changeset
   998
  i.WriteHtolsbU16 (GetFrameControl ());
9460d089da83 use lsb order rather than network order
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2653
diff changeset
   999
  i.WriteHtolsbU16 (m_duration);
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1000
  WriteTo (i, m_addr1);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1001
  switch (m_ctrlType) {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1002
  case TYPE_MGT:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1003
    WriteTo (i, m_addr2);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1004
    WriteTo (i, m_addr3);
2794
9460d089da83 use lsb order rather than network order
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2653
diff changeset
  1005
    i.WriteHtolsbU16 (GetSequenceControl ());
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1006
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1007
  case TYPE_CTL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1008
    switch (m_ctrlSubtype) {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1009
    case SUBTYPE_CTL_RTS:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1010
      WriteTo (i, m_addr2);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1011
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1012
    case SUBTYPE_CTL_CTS:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1013
    case SUBTYPE_CTL_ACK:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1014
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1015
    case SUBTYPE_CTL_BACKREQ:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1016
    case SUBTYPE_CTL_BACKRESP:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1017
      // NOT IMPLEMENTED
1974
0d6b3bead74a replace cassert by ns3/assert.h
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1896
diff changeset
  1018
      NS_ASSERT (false);
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1019
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1020
    default:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1021
      //NOTREACHED
1974
0d6b3bead74a replace cassert by ns3/assert.h
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1896
diff changeset
  1022
      NS_ASSERT (false);
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1023
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1024
    }
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1025
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1026
  case TYPE_DATA: {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1027
    WriteTo (i, m_addr2);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1028
    WriteTo (i, m_addr3);
2794
9460d089da83 use lsb order rather than network order
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2653
diff changeset
  1029
    i.WriteHtolsbU16 (GetSequenceControl ());
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1030
    if (m_ctrlToDs && m_ctrlFromDs) {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1031
      WriteTo (i, m_addr4);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1032
    }
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1033
    if (m_ctrlSubtype & 0x08) {
2794
9460d089da83 use lsb order rather than network order
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2653
diff changeset
  1034
      i.WriteHtolsbU16 (GetQosControl ());
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1035
    }
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1036
    } break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1037
  default:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1038
    //NOTREACHED
1974
0d6b3bead74a replace cassert by ns3/assert.h
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1896
diff changeset
  1039
    NS_ASSERT (false);
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1040
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1041
  }
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1042
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1043
uint32_t
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1044
WifiMacHeader::Deserialize (Buffer::Iterator start)
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1045
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1046
  Buffer::Iterator i = start;
2794
9460d089da83 use lsb order rather than network order
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2653
diff changeset
  1047
  uint16_t frame_control = i.ReadLsbtohU16 ();
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1048
  SetFrameControl (frame_control);
2794
9460d089da83 use lsb order rather than network order
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2653
diff changeset
  1049
  m_duration = i.ReadLsbtohU16 ();
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1050
  ReadFrom (i, m_addr1);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1051
  switch (m_ctrlType) {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1052
  case TYPE_MGT:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1053
    ReadFrom (i, m_addr2);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1054
    ReadFrom (i, m_addr3);
2794
9460d089da83 use lsb order rather than network order
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2653
diff changeset
  1055
    SetSequenceControl (i.ReadLsbtohU16 ());
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1056
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1057
  case TYPE_CTL:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1058
    switch (m_ctrlSubtype) {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1059
    case SUBTYPE_CTL_RTS:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1060
      ReadFrom (i, m_addr2);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1061
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1062
    case SUBTYPE_CTL_CTS:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1063
    case SUBTYPE_CTL_ACK:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1064
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1065
    case SUBTYPE_CTL_BACKREQ:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1066
    case SUBTYPE_CTL_BACKRESP:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1067
      // NOT IMPLEMENTED
1974
0d6b3bead74a replace cassert by ns3/assert.h
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1896
diff changeset
  1068
      NS_ASSERT (false);
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1069
      break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1070
    }
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1071
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1072
  case TYPE_DATA:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1073
    ReadFrom (i, m_addr2);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1074
    ReadFrom (i, m_addr3);
2794
9460d089da83 use lsb order rather than network order
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2653
diff changeset
  1075
    SetSequenceControl (i.ReadLsbtohU16 ());
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1076
    if (m_ctrlToDs && m_ctrlFromDs) {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1077
      ReadFrom (i, m_addr4);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1078
    }
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1079
    if (m_ctrlSubtype & 0x08) {
2794
9460d089da83 use lsb order rather than network order
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2653
diff changeset
  1080
      SetQosControl (i.ReadLsbtohU16 ());
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1081
    }
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1082
    break;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1083
  }
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1084
  return i.GetDistanceFrom (start);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1085
}
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1086
1977
4303409f3d8e remove uneeded trailing ';'
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1974
diff changeset
  1087
} // namespace ns3