src/wifi/model/mgt-headers.cc
author Junling Bu <linlinjavaer@gmail.com>
Tue, 03 Dec 2013 11:25:59 -0800
changeset 10459 f2e90c12a44f
parent 10410 4d4eb8097fa3
child 10652 dc18deba4502
permissions -rw-r--r--
base implementation of the IEEE 802.11p standard
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7385
10beb0e53130 standardize emacs c++ mode comments
Vedran Miletić <rivanvx@gmail.com>
parents: 7141
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     2
/*
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     3
 * Copyright (c) 2006 INRIA
5949
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
     4
 * Copyright (c) 2009 MIRKO BANCHI
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     5
 *
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     6
 * This program is free software; you can redistribute it and/or modify
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
     7
 * it under the terms of the GNU General Public License version 2 as
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     8
 * published by the Free Software Foundation;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     9
 *
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    10
 * This program is distributed in the hope that it will be useful,
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    13
 * GNU General Public License for more details.
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    14
 *
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    16
 * along with this program; if not, write to the Free Software
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    17
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    18
 *
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    19
 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
5949
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
    20
 * Author: Mirko Banchi <mk.banchi@gmail.com>
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    21
 */
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    22
#include "mgt-headers.h"
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    23
#include "ns3/simulator.h"
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    24
#include "ns3/assert.h"
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    25
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    26
namespace ns3 {
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    27
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    28
/***********************************************************
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    29
 *          Probe Request
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    30
 ***********************************************************/
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    31
10410
4d4eb8097fa3 doxygen] Suppress "warning: Member NS_OBJECT_ENSURE_REGISTERED is not documented"
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10139
diff changeset
    32
NS_OBJECT_ENSURE_REGISTERED (MgtProbeRequestHeader)
4d4eb8097fa3 doxygen] Suppress "warning: Member NS_OBJECT_ENSURE_REGISTERED is not documented"
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10139
diff changeset
    33
  ;
2643
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
    34
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    35
MgtProbeRequestHeader::~MgtProbeRequestHeader ()
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
    36
{
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
    37
}
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    38
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
    39
void
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    40
MgtProbeRequestHeader::SetSsid (Ssid ssid)
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    41
{
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    42
  m_ssid = ssid;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    43
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
    44
Ssid
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    45
MgtProbeRequestHeader::GetSsid (void) const
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    46
{
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    47
  return m_ssid;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    48
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
    49
void
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    50
MgtProbeRequestHeader::SetSupportedRates (SupportedRates rates)
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    51
{
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    52
  m_rates = rates;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    53
}
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
    54
void 
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
    55
MgtProbeRequestHeader::SetHtCapabilities(HtCapabilities htcapabilities)
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
    56
{
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
    57
  m_htCapability=htcapabilities;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
    58
}
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    59
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
    60
HtCapabilities 
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
    61
MgtProbeRequestHeader::GetHtCapabilities (void) const
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
    62
{
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
    63
   return  m_htCapability;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
    64
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
    65
SupportedRates
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    66
MgtProbeRequestHeader::GetSupportedRates (void) const
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    67
{
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    68
  return m_rates;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    69
}
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    70
uint32_t
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    71
MgtProbeRequestHeader::GetSerializedSize (void) const
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    72
{
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    73
  uint32_t size = 0;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    74
  size += m_ssid.GetSerializedSize ();
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    75
  size += m_rates.GetSerializedSize ();
6596
6c562767d7b5 Bug 852: Implement IEEE 802.11 Extended Supported Rates information element
Dean Armstrong <deanarm@gmail.com>
parents: 6389
diff changeset
    76
  size += m_rates.extended.GetSerializedSize ();
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
    77
  size += m_htCapability.GetSerializedSize();
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    78
  return size;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    79
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
    80
TypeId
2643
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
    81
MgtProbeRequestHeader::GetTypeId (void)
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
    82
{
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
    83
  static TypeId tid = TypeId ("ns3::MgtProbeRequestHeader")
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
    84
    .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
    85
    .AddConstructor<MgtProbeRequestHeader> ()
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
    86
  ;
2643
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
    87
  return tid;
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
    88
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
    89
TypeId
2643
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
    90
MgtProbeRequestHeader::GetInstanceTypeId (void) const
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
    91
{
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
    92
  return GetTypeId ();
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
    93
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
    94
void
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    95
MgtProbeRequestHeader::Print (std::ostream &os) const
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    96
{
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
    97
  os << "ssid=" << m_ssid << ", "
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
    98
     << "rates=" << m_rates << ", "
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
    99
     << "HT Capabilities=" << m_htCapability;
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   100
}
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   101
void
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   102
MgtProbeRequestHeader::Serialize (Buffer::Iterator start) const
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   103
{
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   104
  Buffer::Iterator i = start;
6389
6e83ec53ba0a Bug 881: Add missing rename of SerializeIE to Serialize.
Dean Armstrong <deanarm@gmail.com>
parents: 6382
diff changeset
   105
  i = m_ssid.Serialize (i);
6e83ec53ba0a Bug 881: Add missing rename of SerializeIE to Serialize.
Dean Armstrong <deanarm@gmail.com>
parents: 6382
diff changeset
   106
  i = m_rates.Serialize (i);
6596
6c562767d7b5 Bug 852: Implement IEEE 802.11 Extended Supported Rates information element
Dean Armstrong <deanarm@gmail.com>
parents: 6389
diff changeset
   107
  i = m_rates.extended.Serialize (i);
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   108
   i = m_htCapability.Serialize(i);
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   109
}
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   110
uint32_t
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   111
MgtProbeRequestHeader::Deserialize (Buffer::Iterator start)
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   112
{
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   113
  Buffer::Iterator i = start;
6382
9e5768e48981 Bug 881: WifiInformationElement method renaming
Dean Armstrong <deanarm@gmail.com>
parents: 6381
diff changeset
   114
  i = m_ssid.Deserialize (i);
9e5768e48981 Bug 881: WifiInformationElement method renaming
Dean Armstrong <deanarm@gmail.com>
parents: 6381
diff changeset
   115
  i = m_rates.Deserialize (i);
6596
6c562767d7b5 Bug 852: Implement IEEE 802.11 Extended Supported Rates information element
Dean Armstrong <deanarm@gmail.com>
parents: 6389
diff changeset
   116
  i = m_rates.extended.DeserializeIfPresent (i);
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   117
  i = m_htCapability.DeserializeIfPresent (i);
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   118
  return i.GetDistanceFrom (start);
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   119
}
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   120
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   121
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   122
/***********************************************************
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   123
 *          Probe Response
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   124
 ***********************************************************/
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   125
10410
4d4eb8097fa3 doxygen] Suppress "warning: Member NS_OBJECT_ENSURE_REGISTERED is not documented"
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10139
diff changeset
   126
NS_OBJECT_ENSURE_REGISTERED (MgtProbeResponseHeader)
4d4eb8097fa3 doxygen] Suppress "warning: Member NS_OBJECT_ENSURE_REGISTERED is not documented"
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10139
diff changeset
   127
  ;
2643
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   128
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   129
MgtProbeResponseHeader::MgtProbeResponseHeader ()
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   130
{
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   131
}
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   132
MgtProbeResponseHeader::~MgtProbeResponseHeader ()
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   133
{
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   134
}
4692
f4cd995f1718 Review issue 88093: Minor changes in wifi module needed by 802.11s
Pavel Boyko <boyko@iitp.ru>
parents: 3662
diff changeset
   135
uint64_t
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   136
MgtProbeResponseHeader::GetTimestamp ()
4692
f4cd995f1718 Review issue 88093: Minor changes in wifi module needed by 802.11s
Pavel Boyko <boyko@iitp.ru>
parents: 3662
diff changeset
   137
{
f4cd995f1718 Review issue 88093: Minor changes in wifi module needed by 802.11s
Pavel Boyko <boyko@iitp.ru>
parents: 3662
diff changeset
   138
  return m_timestamp;
f4cd995f1718 Review issue 88093: Minor changes in wifi module needed by 802.11s
Pavel Boyko <boyko@iitp.ru>
parents: 3662
diff changeset
   139
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   140
Ssid
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   141
MgtProbeResponseHeader::GetSsid (void) const
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   142
{
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   143
  return m_ssid;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   144
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   145
uint64_t
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   146
MgtProbeResponseHeader::GetBeaconIntervalUs (void) const
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   147
{
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   148
  return m_beaconInterval;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   149
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   150
SupportedRates
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   151
MgtProbeResponseHeader::GetSupportedRates (void) const
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   152
{
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   153
  return m_rates;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   154
}
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   155
void 
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   156
MgtProbeResponseHeader::SetHtCapabilities(HtCapabilities htcapabilities)
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   157
{
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   158
  m_htCapability=htcapabilities;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   159
}
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   160
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   161
HtCapabilities 
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   162
MgtProbeResponseHeader::GetHtCapabilities (void) const
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   163
{
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   164
   return  m_htCapability;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   165
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   166
void
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   167
MgtProbeResponseHeader::SetSsid (Ssid ssid)
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   168
{
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   169
  m_ssid = ssid;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   170
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   171
void
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   172
MgtProbeResponseHeader::SetBeaconIntervalUs (uint64_t us)
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   173
{
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   174
  m_beaconInterval = us;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   175
}
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   176
void
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   177
MgtProbeResponseHeader::SetSupportedRates (SupportedRates rates)
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   178
{
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   179
  m_rates = rates;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   180
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   181
TypeId
2643
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   182
MgtProbeResponseHeader::GetTypeId (void)
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   183
{
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   184
  static TypeId tid = TypeId ("ns3::MgtProbeResponseHeader")
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   185
    .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
   186
    .AddConstructor<MgtProbeResponseHeader> ()
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   187
  ;
2643
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   188
  return tid;
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   189
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   190
TypeId
2643
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   191
MgtProbeResponseHeader::GetInstanceTypeId (void) const
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   192
{
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   193
  return GetTypeId ();
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   194
}
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   195
uint32_t
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   196
MgtProbeResponseHeader::GetSerializedSize (void) const
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   197
{
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   198
  uint32_t size = 0;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   199
  size += 8; // timestamp
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   200
  size += 2; // beacon interval
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   201
  size += m_capability.GetSerializedSize ();
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   202
  size += m_ssid.GetSerializedSize ();
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   203
  size += m_rates.GetSerializedSize ();
3655
878961da459c do not reserve space for unwritten data to avoid memory initialization problems
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3636
diff changeset
   204
  //size += 3; // ds parameter set
6596
6c562767d7b5 Bug 852: Implement IEEE 802.11 Extended Supported Rates information element
Dean Armstrong <deanarm@gmail.com>
parents: 6389
diff changeset
   205
  size += m_rates.extended.GetSerializedSize ();
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   206
  size += m_htCapability.GetSerializedSize();
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   207
  // xxx
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   208
  return size;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   209
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   210
void
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   211
MgtProbeResponseHeader::Print (std::ostream &os) const
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   212
{
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   213
  os << "ssid=" << m_ssid << ", "
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   214
     << "rates=" << m_rates << ", "
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   215
     << "HT Capabilities=" << m_htCapability;
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   216
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   217
void
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   218
MgtProbeResponseHeader::Serialize (Buffer::Iterator start) const
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   219
{
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   220
  // timestamp
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   221
  // beacon interval
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   222
  // capability information
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   223
  // ssid
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   224
  // supported rates
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   225
  // fh parameter set
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   226
  // ds parameter set
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   227
  // cf parameter set
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   228
  // ibss parameter set
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   229
  //XXX
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   230
  Buffer::Iterator i = start;
6602
0aae670ceff3 Bug 979: Use LSB ordering for multi-octet fields in wifi module
Dean Armstrong <deanarm@gmail.com>
parents: 6596
diff changeset
   231
  i.WriteHtolsbU64 (Simulator::Now ().GetMicroSeconds ());
0aae670ceff3 Bug 979: Use LSB ordering for multi-octet fields in wifi module
Dean Armstrong <deanarm@gmail.com>
parents: 6596
diff changeset
   232
  i.WriteHtolsbU16 (m_beaconInterval / 1024);
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   233
  i = m_capability.Serialize (i);
6389
6e83ec53ba0a Bug 881: Add missing rename of SerializeIE to Serialize.
Dean Armstrong <deanarm@gmail.com>
parents: 6382
diff changeset
   234
  i = m_ssid.Serialize (i);
6e83ec53ba0a Bug 881: Add missing rename of SerializeIE to Serialize.
Dean Armstrong <deanarm@gmail.com>
parents: 6382
diff changeset
   235
  i = m_rates.Serialize (i);
3655
878961da459c do not reserve space for unwritten data to avoid memory initialization problems
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3636
diff changeset
   236
  //i.WriteU8 (0, 3); // ds parameter set.
6596
6c562767d7b5 Bug 852: Implement IEEE 802.11 Extended Supported Rates information element
Dean Armstrong <deanarm@gmail.com>
parents: 6389
diff changeset
   237
  i = m_rates.extended.Serialize (i);
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   238
  i = m_htCapability.Serialize(i);
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   239
}
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   240
uint32_t
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   241
MgtProbeResponseHeader::Deserialize (Buffer::Iterator start)
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   242
{
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   243
  Buffer::Iterator i = start;
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   244
  m_timestamp = i.ReadLsbtohU64 ();
6602
0aae670ceff3 Bug 979: Use LSB ordering for multi-octet fields in wifi module
Dean Armstrong <deanarm@gmail.com>
parents: 6596
diff changeset
   245
  m_beaconInterval = i.ReadLsbtohU16 ();
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   246
  m_beaconInterval *= 1024;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   247
  i = m_capability.Deserialize (i);
6382
9e5768e48981 Bug 881: WifiInformationElement method renaming
Dean Armstrong <deanarm@gmail.com>
parents: 6381
diff changeset
   248
  i = m_ssid.Deserialize (i);
9e5768e48981 Bug 881: WifiInformationElement method renaming
Dean Armstrong <deanarm@gmail.com>
parents: 6381
diff changeset
   249
  i = m_rates.Deserialize (i);
3655
878961da459c do not reserve space for unwritten data to avoid memory initialization problems
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3636
diff changeset
   250
  //i.Next (3); // ds parameter set
6596
6c562767d7b5 Bug 852: Implement IEEE 802.11 Extended Supported Rates information element
Dean Armstrong <deanarm@gmail.com>
parents: 6389
diff changeset
   251
  i = m_rates.extended.DeserializeIfPresent (i);
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   252
  i = m_htCapability.DeserializeIfPresent (i);
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   253
  return i.GetDistanceFrom (start);
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   254
}
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   255
2643
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   256
/***********************************************************
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   257
 *          Assoc Request
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   258
 ***********************************************************/
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   259
10410
4d4eb8097fa3 doxygen] Suppress "warning: Member NS_OBJECT_ENSURE_REGISTERED is not documented"
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10139
diff changeset
   260
NS_OBJECT_ENSURE_REGISTERED (MgtAssocRequestHeader)
4d4eb8097fa3 doxygen] Suppress "warning: Member NS_OBJECT_ENSURE_REGISTERED is not documented"
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10139
diff changeset
   261
  ;
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   262
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   263
MgtAssocRequestHeader::MgtAssocRequestHeader ()
3662
eb4d8f900458 initialize sta listen interval
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 3655
diff changeset
   264
  : m_listenInterval (0)
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   265
{
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   266
}
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   267
MgtAssocRequestHeader::~MgtAssocRequestHeader ()
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   268
{
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   269
}
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   270
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   271
void
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   272
MgtAssocRequestHeader::SetSsid (Ssid ssid)
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   273
{
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   274
  m_ssid = ssid;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   275
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   276
void
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   277
MgtAssocRequestHeader::SetSupportedRates (SupportedRates rates)
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   278
{
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   279
  m_rates = rates;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   280
}
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   281
void 
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   282
MgtAssocRequestHeader::SetHtCapabilities(HtCapabilities htcapabilities)
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   283
{
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   284
  m_htCapability = htcapabilities;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   285
}
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   286
void
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   287
MgtAssocRequestHeader::SetListenInterval (uint16_t interval)
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   288
{
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   289
  m_listenInterval = interval;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   290
}
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   291
HtCapabilities 
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   292
MgtAssocRequestHeader::GetHtCapabilities (void) const
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   293
{
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   294
   return  m_htCapability;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   295
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   296
Ssid
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   297
MgtAssocRequestHeader::GetSsid (void) const
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   298
{
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   299
  return m_ssid;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   300
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   301
SupportedRates
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   302
MgtAssocRequestHeader::GetSupportedRates (void) const
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   303
{
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   304
  return m_rates;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   305
}
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   306
uint16_t
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   307
MgtAssocRequestHeader::GetListenInterval (void) const
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   308
{
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   309
  return m_listenInterval;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   310
}
2643
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   311
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   312
TypeId
2643
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   313
MgtAssocRequestHeader::GetTypeId (void)
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   314
{
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   315
  static TypeId tid = TypeId ("ns3::MgtAssocRequestHeader")
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   316
    .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
   317
    .AddConstructor<MgtAssocRequestHeader> ()
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   318
  ;
2643
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   319
  return tid;
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   320
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   321
TypeId
2643
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   322
MgtAssocRequestHeader::GetInstanceTypeId (void) const
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   323
{
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   324
  return GetTypeId ();
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   325
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   326
uint32_t
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   327
MgtAssocRequestHeader::GetSerializedSize (void) const
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   328
{
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   329
  uint32_t size = 0;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   330
  size += m_capability.GetSerializedSize ();
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   331
  size += 2;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   332
  size += m_ssid.GetSerializedSize ();
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   333
  size += m_rates.GetSerializedSize ();
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   334
  size += m_htCapability.GetSerializedSize();
6596
6c562767d7b5 Bug 852: Implement IEEE 802.11 Extended Supported Rates information element
Dean Armstrong <deanarm@gmail.com>
parents: 6389
diff changeset
   335
  size += m_rates.extended.GetSerializedSize ();
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   336
  return size;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   337
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   338
void
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   339
MgtAssocRequestHeader::Print (std::ostream &os) const
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   340
{
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   341
  os << "ssid=" << m_ssid << ", "
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   342
     << "rates=" << m_rates<< ", "
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   343
     << "HT Capabilities=" << m_htCapability;
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   344
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   345
void
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   346
MgtAssocRequestHeader::Serialize (Buffer::Iterator start) const
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   347
{
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   348
  Buffer::Iterator i = start;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   349
  i = m_capability.Serialize (i);
6602
0aae670ceff3 Bug 979: Use LSB ordering for multi-octet fields in wifi module
Dean Armstrong <deanarm@gmail.com>
parents: 6596
diff changeset
   350
  i.WriteHtolsbU16 (m_listenInterval);
6389
6e83ec53ba0a Bug 881: Add missing rename of SerializeIE to Serialize.
Dean Armstrong <deanarm@gmail.com>
parents: 6382
diff changeset
   351
  i = m_ssid.Serialize (i);
6e83ec53ba0a Bug 881: Add missing rename of SerializeIE to Serialize.
Dean Armstrong <deanarm@gmail.com>
parents: 6382
diff changeset
   352
  i = m_rates.Serialize (i);
6596
6c562767d7b5 Bug 852: Implement IEEE 802.11 Extended Supported Rates information element
Dean Armstrong <deanarm@gmail.com>
parents: 6389
diff changeset
   353
  i = m_rates.extended.Serialize (i);
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   354
  i = m_htCapability.Serialize(i);
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   355
}
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   356
uint32_t
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   357
MgtAssocRequestHeader::Deserialize (Buffer::Iterator start)
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   358
{
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   359
  Buffer::Iterator i = start;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   360
  i = m_capability.Deserialize (i);
6602
0aae670ceff3 Bug 979: Use LSB ordering for multi-octet fields in wifi module
Dean Armstrong <deanarm@gmail.com>
parents: 6596
diff changeset
   361
  m_listenInterval = i.ReadLsbtohU16 ();
6382
9e5768e48981 Bug 881: WifiInformationElement method renaming
Dean Armstrong <deanarm@gmail.com>
parents: 6381
diff changeset
   362
  i = m_ssid.Deserialize (i);
9e5768e48981 Bug 881: WifiInformationElement method renaming
Dean Armstrong <deanarm@gmail.com>
parents: 6381
diff changeset
   363
  i = m_rates.Deserialize (i);
6596
6c562767d7b5 Bug 852: Implement IEEE 802.11 Extended Supported Rates information element
Dean Armstrong <deanarm@gmail.com>
parents: 6389
diff changeset
   364
  i = m_rates.extended.DeserializeIfPresent (i);
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   365
  i = m_htCapability.DeserializeIfPresent (i);
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   366
  return i.GetDistanceFrom (start);
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   367
}
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   368
2643
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   369
/***********************************************************
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   370
 *          Assoc Response
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   371
 ***********************************************************/
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   372
10410
4d4eb8097fa3 doxygen] Suppress "warning: Member NS_OBJECT_ENSURE_REGISTERED is not documented"
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10139
diff changeset
   373
NS_OBJECT_ENSURE_REGISTERED (MgtAssocResponseHeader)
4d4eb8097fa3 doxygen] Suppress "warning: Member NS_OBJECT_ENSURE_REGISTERED is not documented"
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10139
diff changeset
   374
  ;
2643
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   375
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   376
MgtAssocResponseHeader::MgtAssocResponseHeader ()
3636
2aee7df86786 make sure aid is initialized
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2650
diff changeset
   377
  : m_aid (0)
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   378
{
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   379
}
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   380
MgtAssocResponseHeader::~MgtAssocResponseHeader ()
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   381
{
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   382
}
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   383
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   384
StatusCode
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   385
MgtAssocResponseHeader::GetStatusCode (void)
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   386
{
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   387
  return m_code;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   388
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   389
SupportedRates
2007
a5fefe9916a0 add support for set/get supported rates in assoc resp packets
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
   390
MgtAssocResponseHeader::GetSupportedRates (void)
a5fefe9916a0 add support for set/get supported rates in assoc resp packets
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
   391
{
a5fefe9916a0 add support for set/get supported rates in assoc resp packets
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
   392
  return m_rates;
a5fefe9916a0 add support for set/get supported rates in assoc resp packets
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
   393
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   394
void
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   395
MgtAssocResponseHeader::SetStatusCode (StatusCode code)
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   396
{
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   397
  m_code = code;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   398
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   399
void
2007
a5fefe9916a0 add support for set/get supported rates in assoc resp packets
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
   400
MgtAssocResponseHeader::SetSupportedRates (SupportedRates rates)
a5fefe9916a0 add support for set/get supported rates in assoc resp packets
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
   401
{
a5fefe9916a0 add support for set/get supported rates in assoc resp packets
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
   402
  m_rates = rates;
a5fefe9916a0 add support for set/get supported rates in assoc resp packets
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
   403
}
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   404
void 
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   405
MgtAssocResponseHeader::SetHtCapabilities(HtCapabilities htcapabilities)
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   406
{
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   407
  m_htCapability=htcapabilities;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   408
}
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   409
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   410
HtCapabilities 
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   411
MgtAssocResponseHeader::GetHtCapabilities (void) const
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   412
{
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   413
   return  m_htCapability;
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   414
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   415
TypeId
2643
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   416
MgtAssocResponseHeader::GetTypeId (void)
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   417
{
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   418
  static TypeId tid = TypeId ("ns3::MgtAssocResponseHeader")
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   419
    .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
   420
    .AddConstructor<MgtAssocResponseHeader> ()
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   421
  ;
2643
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   422
  return tid;
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   423
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   424
TypeId
2643
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   425
MgtAssocResponseHeader::GetInstanceTypeId (void) const
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   426
{
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   427
  return GetTypeId ();
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2016
diff changeset
   428
}
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   429
uint32_t
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   430
MgtAssocResponseHeader::GetSerializedSize (void) const
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   431
{
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   432
  uint32_t size = 0;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   433
  size += m_capability.GetSerializedSize ();
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   434
  size += m_code.GetSerializedSize ();
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   435
  size += 2; // aid
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   436
  size += m_rates.GetSerializedSize ();
6596
6c562767d7b5 Bug 852: Implement IEEE 802.11 Extended Supported Rates information element
Dean Armstrong <deanarm@gmail.com>
parents: 6389
diff changeset
   437
  size += m_rates.extended.GetSerializedSize ();
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   438
size += m_htCapability.GetSerializedSize();
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   439
  return size;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   440
}
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   441
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   442
void
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   443
MgtAssocResponseHeader::Print (std::ostream &os) const
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   444
{
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   445
  os << "status code=" << m_code << ", "
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   446
     << "rates=" << m_rates << ", "
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   447
  << "HT Capabilities=" << m_htCapability;
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   448
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   449
void
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   450
MgtAssocResponseHeader::Serialize (Buffer::Iterator start) const
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   451
{
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   452
  Buffer::Iterator i = start;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   453
  i = m_capability.Serialize (i);
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   454
  i = m_code.Serialize (i);
6602
0aae670ceff3 Bug 979: Use LSB ordering for multi-octet fields in wifi module
Dean Armstrong <deanarm@gmail.com>
parents: 6596
diff changeset
   455
  i.WriteHtolsbU16 (m_aid);
6389
6e83ec53ba0a Bug 881: Add missing rename of SerializeIE to Serialize.
Dean Armstrong <deanarm@gmail.com>
parents: 6382
diff changeset
   456
  i = m_rates.Serialize (i);
6596
6c562767d7b5 Bug 852: Implement IEEE 802.11 Extended Supported Rates information element
Dean Armstrong <deanarm@gmail.com>
parents: 6389
diff changeset
   457
  i = m_rates.extended.Serialize (i);
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   458
 i = m_htCapability.Serialize(i);
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   459
}
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   460
uint32_t
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   461
MgtAssocResponseHeader::Deserialize (Buffer::Iterator start)
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   462
{
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   463
  Buffer::Iterator i = start;
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   464
  i = m_capability.Deserialize (i);
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   465
  i = m_code.Deserialize (i);
6602
0aae670ceff3 Bug 979: Use LSB ordering for multi-octet fields in wifi module
Dean Armstrong <deanarm@gmail.com>
parents: 6596
diff changeset
   466
  m_aid = i.ReadLsbtohU16 ();
6382
9e5768e48981 Bug 881: WifiInformationElement method renaming
Dean Armstrong <deanarm@gmail.com>
parents: 6381
diff changeset
   467
  i = m_rates.Deserialize (i);
6596
6c562767d7b5 Bug 852: Implement IEEE 802.11 Extended Supported Rates information element
Dean Armstrong <deanarm@gmail.com>
parents: 6389
diff changeset
   468
  i = m_rates.extended.DeserializeIfPresent (i);
10139
17a71cd49da3 partial 802.11n support
Ghada Badawy <gbadawy@gmail.com>
parents: 9783
diff changeset
   469
 i = m_htCapability.DeserializeIfPresent (i);
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   470
  return i.GetDistanceFrom (start);
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   471
}
5824
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   472
/**********************************************************
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   473
 *   ActionFrame
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   474
 **********************************************************/
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   475
WifiActionHeader::WifiActionHeader ()
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   476
{
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   477
}
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   478
WifiActionHeader::~WifiActionHeader ()
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   479
{
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   480
}
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   481
void
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   482
WifiActionHeader::SetAction (WifiActionHeader::CategoryValue type,
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   483
                             WifiActionHeader::ActionValue action)
5824
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   484
{
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   485
  m_category = type;
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   486
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   487
  switch (type)
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   488
    {
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   489
    case BLOCK_ACK:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   490
      {
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   491
        m_actionValue = action.blockAck;
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   492
        break;
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   493
      }
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   494
    case MESH_PEERING_MGT:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   495
      {
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   496
        m_actionValue = action.peerLink;
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   497
        break;
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   498
      }
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   499
    case MESH_PATH_SELECTION:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   500
      {
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   501
        m_actionValue = action.pathSelection;
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   502
        break;
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   503
      }
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   504
    case MESH_LINK_METRIC:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   505
    case MESH_INTERWORKING:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   506
    case MESH_RESOURCE_COORDINATION:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   507
    case MESH_PROXY_FORWARDING:
10459
f2e90c12a44f base implementation of the IEEE 802.11p standard
Junling Bu <linlinjavaer@gmail.com>
parents: 10410
diff changeset
   508
    case VENDOR_SPECIFIC_ACTION:
5824
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   509
      break;
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   510
    }
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   511
}
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   512
WifiActionHeader::CategoryValue
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   513
WifiActionHeader::GetCategory ()
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   514
{
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   515
  switch (m_category)
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   516
    {
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   517
    case BLOCK_ACK:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   518
      return BLOCK_ACK;
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   519
    case MESH_PEERING_MGT:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   520
      return MESH_PEERING_MGT;
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   521
    case MESH_LINK_METRIC:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   522
      return MESH_LINK_METRIC;
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   523
    case MESH_PATH_SELECTION:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   524
      return MESH_PATH_SELECTION;
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   525
    case MESH_INTERWORKING:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   526
      return MESH_INTERWORKING;
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   527
    case MESH_RESOURCE_COORDINATION:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   528
      return MESH_RESOURCE_COORDINATION;
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   529
    case MESH_PROXY_FORWARDING:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   530
      return MESH_PROXY_FORWARDING;
10459
f2e90c12a44f base implementation of the IEEE 802.11p standard
Junling Bu <linlinjavaer@gmail.com>
parents: 10410
diff changeset
   531
    case VENDOR_SPECIFIC_ACTION:
f2e90c12a44f base implementation of the IEEE 802.11p standard
Junling Bu <linlinjavaer@gmail.com>
parents: 10410
diff changeset
   532
      return VENDOR_SPECIFIC_ACTION;
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   533
    default:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   534
      NS_FATAL_ERROR ("Unknown action value");
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   535
      return MESH_PEERING_MGT;
5824
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   536
    }
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   537
}
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   538
WifiActionHeader::ActionValue
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   539
WifiActionHeader::GetAction ()
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   540
{
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   541
  ActionValue retval;
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   542
  retval.peerLink = PEER_LINK_OPEN; // Needs to be initialized to something to quiet valgrind in default cases
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   543
  switch (m_category)
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   544
    {
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   545
    case BLOCK_ACK:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   546
      switch (m_actionValue)
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   547
        {
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   548
        case BLOCK_ACK_ADDBA_REQUEST:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   549
          retval.blockAck = BLOCK_ACK_ADDBA_REQUEST;
9783
828a38d9c799 [Coverity] Missing break in switch (MISSING_BREAK)
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7385
diff changeset
   550
          break ;
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   551
        case BLOCK_ACK_ADDBA_RESPONSE:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   552
          retval.blockAck = BLOCK_ACK_ADDBA_RESPONSE;
9783
828a38d9c799 [Coverity] Missing break in switch (MISSING_BREAK)
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7385
diff changeset
   553
          break ;
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   554
        case BLOCK_ACK_DELBA:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   555
          retval.blockAck = BLOCK_ACK_DELBA;
9783
828a38d9c799 [Coverity] Missing break in switch (MISSING_BREAK)
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7385
diff changeset
   556
          break ;
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   557
        }
9783
828a38d9c799 [Coverity] Missing break in switch (MISSING_BREAK)
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7385
diff changeset
   558
      break ;
828a38d9c799 [Coverity] Missing break in switch (MISSING_BREAK)
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7385
diff changeset
   559
      
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   560
    case MESH_PEERING_MGT:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   561
      switch (m_actionValue)
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   562
        {
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   563
        case PEER_LINK_OPEN:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   564
          retval.peerLink = PEER_LINK_OPEN;
9783
828a38d9c799 [Coverity] Missing break in switch (MISSING_BREAK)
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7385
diff changeset
   565
          break ;
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   566
        case PEER_LINK_CONFIRM:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   567
          retval.peerLink = PEER_LINK_CONFIRM;
9783
828a38d9c799 [Coverity] Missing break in switch (MISSING_BREAK)
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7385
diff changeset
   568
          break ;
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   569
        case PEER_LINK_CLOSE:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   570
          retval.peerLink = PEER_LINK_CLOSE;
9783
828a38d9c799 [Coverity] Missing break in switch (MISSING_BREAK)
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7385
diff changeset
   571
          break ;
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   572
        default:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   573
          NS_FATAL_ERROR ("Unknown mesh peering management action code");
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   574
          retval.peerLink = PEER_LINK_OPEN; /* quiet compiler */
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   575
        }
9783
828a38d9c799 [Coverity] Missing break in switch (MISSING_BREAK)
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7385
diff changeset
   576
      break ;
828a38d9c799 [Coverity] Missing break in switch (MISSING_BREAK)
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7385
diff changeset
   577
      
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   578
    case MESH_PATH_SELECTION:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   579
      switch (m_actionValue)
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   580
        {
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   581
        case PATH_SELECTION:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   582
          retval.pathSelection = PATH_SELECTION;
9783
828a38d9c799 [Coverity] Missing break in switch (MISSING_BREAK)
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7385
diff changeset
   583
          break ;
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   584
        default:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   585
          NS_FATAL_ERROR ("Unknown mesh path selection action code");
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   586
          retval.peerLink = PEER_LINK_OPEN; /* quiet compiler */
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   587
        }
9783
828a38d9c799 [Coverity] Missing break in switch (MISSING_BREAK)
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7385
diff changeset
   588
      break ;
10459
f2e90c12a44f base implementation of the IEEE 802.11p standard
Junling Bu <linlinjavaer@gmail.com>
parents: 10410
diff changeset
   589
    case VENDOR_SPECIFIC_ACTION:
f2e90c12a44f base implementation of the IEEE 802.11p standard
Junling Bu <linlinjavaer@gmail.com>
parents: 10410
diff changeset
   590
      break ;
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   591
    case MESH_LINK_METRIC:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   592
    // not yet supported
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   593
    case MESH_INTERWORKING:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   594
    // not yet supported
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   595
    case MESH_RESOURCE_COORDINATION:
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   596
    // not yet supported
5824
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   597
    default:
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   598
      NS_FATAL_ERROR ("Unsupported mesh action");
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   599
      retval.peerLink = PEER_LINK_OPEN; /* quiet compiler */
5824
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   600
    }
9783
828a38d9c799 [Coverity] Missing break in switch (MISSING_BREAK)
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7385
diff changeset
   601
  return retval;
5824
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   602
}
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   603
TypeId
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   604
WifiActionHeader::GetTypeId ()
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   605
{
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   606
  static TypeId tid = TypeId ("ns3::WifiActionHeader")
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   607
    .SetParent<Header> ()
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   608
    .AddConstructor<WifiActionHeader> ();
5824
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   609
  return tid;
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   610
}
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   611
TypeId
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   612
WifiActionHeader::GetInstanceTypeId () const
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   613
{
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   614
  return GetTypeId ();
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   615
}
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   616
void
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   617
WifiActionHeader::Print (std::ostream &os) const
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   618
{
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   619
}
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   620
uint32_t
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   621
WifiActionHeader::GetSerializedSize () const
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   622
{
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   623
  return 2;
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   624
}
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   625
void
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   626
WifiActionHeader::Serialize (Buffer::Iterator start) const
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   627
{
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   628
  start.WriteU8 (m_category);
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   629
  start.WriteU8 (m_actionValue);
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   630
}
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   631
uint32_t
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   632
WifiActionHeader::Deserialize (Buffer::Iterator start)
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   633
{
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   634
  Buffer::Iterator i = start;
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   635
  m_category = i.ReadU8 ();
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   636
  m_actionValue = i.ReadU8 ();
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   637
  return i.GetDistanceFrom (start);
5abf274b52d4 Mesh: action header moved from dot11s namespace and placed to
Kirill Andreev <andreev@iitp.ru>
parents: 5133
diff changeset
   638
}
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   639
5949
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   640
/***************************************************
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   641
*                 ADDBARequest
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   642
****************************************************/
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   643
10410
4d4eb8097fa3 doxygen] Suppress "warning: Member NS_OBJECT_ENSURE_REGISTERED is not documented"
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10139
diff changeset
   644
NS_OBJECT_ENSURE_REGISTERED (MgtAddBaRequestHeader)
4d4eb8097fa3 doxygen] Suppress "warning: Member NS_OBJECT_ENSURE_REGISTERED is not documented"
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10139
diff changeset
   645
  ;
5949
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   646
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   647
MgtAddBaRequestHeader::MgtAddBaRequestHeader ()
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   648
  : m_dialogToken (1),
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   649
    m_amsduSupport (1),
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   650
    m_bufferSize (0)
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   651
{
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   652
}
5949
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   653
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   654
TypeId
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   655
MgtAddBaRequestHeader::GetTypeId (void)
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   656
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   657
  static TypeId tid = TypeId ("ns3::MgtAddBaRequestHeader")
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   658
    .SetParent<Header> ()
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   659
    .AddConstructor<MgtAddBaRequestHeader> ();
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   660
  return tid;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   661
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   662
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   663
TypeId
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   664
MgtAddBaRequestHeader::GetInstanceTypeId (void) const
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   665
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   666
  return GetTypeId ();
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   667
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   668
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   669
void
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   670
MgtAddBaRequestHeader::Print (std::ostream &os) const
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   671
{
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   672
}
5949
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   673
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   674
uint32_t
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   675
MgtAddBaRequestHeader::GetSerializedSize (void) const
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   676
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   677
  uint32_t size = 0;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   678
  size += 1; //Dialog token
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   679
  size += 2; //Block ack parameter set
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   680
  size += 2; //Block ack timeout value
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   681
  size += 2; //Starting sequence control
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   682
  return size;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   683
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   684
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   685
void
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   686
MgtAddBaRequestHeader::Serialize (Buffer::Iterator start) const
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   687
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   688
  Buffer::Iterator i = start;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   689
  i.WriteU8 (m_dialogToken);
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   690
  i.WriteHtolsbU16 (GetParameterSet ());
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   691
  i.WriteHtolsbU16 (m_timeoutValue);
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   692
  i.WriteHtolsbU16 (GetStartingSequenceControl ());
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   693
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   694
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   695
uint32_t
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   696
MgtAddBaRequestHeader::Deserialize (Buffer::Iterator start)
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   697
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   698
  Buffer::Iterator i = start;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   699
  m_dialogToken = i.ReadU8 ();
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   700
  SetParameterSet (i.ReadLsbtohU16 ());
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   701
  m_timeoutValue = i.ReadLsbtohU16 ();
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   702
  SetStartingSequenceControl (i.ReadLsbtohU16 ());
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   703
  return i.GetDistanceFrom (start);
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   704
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   705
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   706
void
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   707
MgtAddBaRequestHeader::SetDelayedBlockAck ()
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   708
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   709
  m_policy = 0;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   710
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   711
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   712
void
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   713
MgtAddBaRequestHeader::SetImmediateBlockAck ()
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   714
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   715
  m_policy = 1;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   716
}
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   717
5949
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   718
void
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   719
MgtAddBaRequestHeader::SetTid (uint8_t tid)
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   720
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   721
  NS_ASSERT (tid < 16);
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   722
  m_tid = tid;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   723
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   724
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   725
void
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   726
MgtAddBaRequestHeader::SetTimeout (uint16_t timeout)
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   727
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   728
  m_timeoutValue = timeout;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   729
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   730
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   731
void
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   732
MgtAddBaRequestHeader::SetBufferSize (uint16_t size)
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   733
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   734
  m_bufferSize = size;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   735
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   736
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   737
void
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   738
MgtAddBaRequestHeader::SetStartingSequence (uint16_t seq)
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   739
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   740
  m_startingSeq = seq;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   741
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   742
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   743
void
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   744
MgtAddBaRequestHeader::SetAmsduSupport (bool supported)
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   745
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   746
  m_amsduSupport = supported;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   747
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   748
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   749
uint8_t
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   750
MgtAddBaRequestHeader::GetTid (void) const
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   751
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   752
  return m_tid;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   753
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   754
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   755
bool
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   756
MgtAddBaRequestHeader::IsImmediateBlockAck (void) const
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   757
{
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   758
  return (m_policy == 1) ? true : false;
5949
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   759
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   760
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   761
uint16_t
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   762
MgtAddBaRequestHeader::GetTimeout (void) const
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   763
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   764
  return m_timeoutValue;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   765
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   766
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   767
uint16_t
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   768
MgtAddBaRequestHeader::GetBufferSize (void) const
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   769
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   770
  return m_bufferSize;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   771
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   772
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   773
bool
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   774
MgtAddBaRequestHeader::IsAmsduSupported (void) const
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   775
{
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   776
  return (m_amsduSupport == 1) ? true : false;
5949
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   777
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   778
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   779
uint16_t
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   780
MgtAddBaRequestHeader::GetStartingSequence (void) const
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   781
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   782
  return m_startingSeq;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   783
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   784
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   785
uint16_t
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   786
MgtAddBaRequestHeader::GetStartingSequenceControl (void) const
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   787
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   788
  return (m_startingSeq << 4) & 0xfff0;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   789
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   790
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   791
void
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   792
MgtAddBaRequestHeader::SetStartingSequenceControl (uint16_t seqControl)
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   793
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   794
  m_startingSeq = (seqControl >> 4) & 0x0fff;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   795
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   796
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   797
uint16_t
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   798
MgtAddBaRequestHeader::GetParameterSet (void) const
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   799
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   800
  uint16_t res = 0;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   801
  res |= m_amsduSupport;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   802
  res |= m_policy << 1;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   803
  res |= m_tid << 2;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   804
  res |= m_bufferSize << 6;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   805
  return res;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   806
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   807
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   808
void
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   809
MgtAddBaRequestHeader::SetParameterSet (uint16_t params)
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   810
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   811
  m_amsduSupport = (params) & 0x01;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   812
  m_policy = (params >> 1) & 0x01;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   813
  m_tid = (params >> 2) & 0x0f;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   814
  m_bufferSize = (params >> 6) & 0x03ff;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   815
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   816
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   817
/***************************************************
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   818
*                 ADDBAResponse
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   819
****************************************************/
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   820
10410
4d4eb8097fa3 doxygen] Suppress "warning: Member NS_OBJECT_ENSURE_REGISTERED is not documented"
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10139
diff changeset
   821
NS_OBJECT_ENSURE_REGISTERED (MgtAddBaResponseHeader)
4d4eb8097fa3 doxygen] Suppress "warning: Member NS_OBJECT_ENSURE_REGISTERED is not documented"
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10139
diff changeset
   822
  ;
5949
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   823
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   824
MgtAddBaResponseHeader::MgtAddBaResponseHeader ()
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   825
  : m_dialogToken (1),
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   826
    m_amsduSupport (1),
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   827
    m_bufferSize (0)
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   828
{
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   829
}
5949
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   830
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   831
TypeId
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   832
MgtAddBaResponseHeader::GetTypeId ()
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   833
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   834
  static TypeId tid = TypeId ("ns3::MgtAddBaResponseHeader")
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   835
    .SetParent<Header> ()
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   836
    .AddConstructor<MgtAddBaResponseHeader> ()
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   837
  ;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   838
  return tid;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   839
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   840
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   841
TypeId
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   842
MgtAddBaResponseHeader::GetInstanceTypeId (void) const
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   843
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   844
  return GetTypeId ();
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   845
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   846
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   847
void
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   848
MgtAddBaResponseHeader::Print (std::ostream &os) const
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   849
{
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   850
  os << "status code=" << m_code;
5949
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   851
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   852
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   853
uint32_t
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   854
MgtAddBaResponseHeader::GetSerializedSize (void) const
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   855
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   856
  uint32_t size = 0;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   857
  size += 1; //Dialog token
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   858
  size += m_code.GetSerializedSize (); //Status code
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   859
  size += 2; //Block ack parameter set
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   860
  size += 2; //Block ack timeout value
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   861
  return size;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   862
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   863
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   864
void
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   865
MgtAddBaResponseHeader::Serialize (Buffer::Iterator start) const
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   866
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   867
  Buffer::Iterator i = start;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   868
  i.WriteU8 (m_dialogToken);
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   869
  i = m_code.Serialize (i);
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   870
  i.WriteHtolsbU16 (GetParameterSet ());
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   871
  i.WriteHtolsbU16 (m_timeoutValue);
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   872
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   873
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   874
uint32_t
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   875
MgtAddBaResponseHeader::Deserialize (Buffer::Iterator start)
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   876
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   877
  Buffer::Iterator i = start;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   878
  m_dialogToken = i.ReadU8 ();
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   879
  i = m_code.Deserialize (i);
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   880
  SetParameterSet (i.ReadLsbtohU16 ());
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   881
  m_timeoutValue = i.ReadLsbtohU16 ();
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   882
  return i.GetDistanceFrom (start);
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   883
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   884
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   885
void
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   886
MgtAddBaResponseHeader::SetDelayedBlockAck ()
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   887
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   888
  m_policy = 0;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   889
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   890
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   891
void
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   892
MgtAddBaResponseHeader::SetImmediateBlockAck ()
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   893
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   894
  m_policy = 1;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   895
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   896
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   897
void
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   898
MgtAddBaResponseHeader::SetTid (uint8_t tid)
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   899
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   900
  NS_ASSERT (tid < 16);
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   901
  m_tid = tid;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   902
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   903
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   904
void
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   905
MgtAddBaResponseHeader::SetTimeout (uint16_t timeout)
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   906
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   907
  m_timeoutValue = timeout;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   908
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   909
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   910
void
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   911
MgtAddBaResponseHeader::SetBufferSize (uint16_t size)
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   912
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   913
  m_bufferSize = size;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   914
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   915
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   916
void
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   917
MgtAddBaResponseHeader::SetStatusCode (StatusCode code)
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   918
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   919
  m_code = code;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   920
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   921
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   922
void
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   923
MgtAddBaResponseHeader::SetAmsduSupport (bool supported)
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   924
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   925
  m_amsduSupport = supported;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   926
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   927
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   928
StatusCode
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   929
MgtAddBaResponseHeader::GetStatusCode (void) const
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   930
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   931
  return m_code;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   932
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   933
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   934
uint8_t
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   935
MgtAddBaResponseHeader::GetTid (void) const
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   936
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   937
  return m_tid;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   938
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   939
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   940
bool
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   941
MgtAddBaResponseHeader::IsImmediateBlockAck (void) const
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   942
{
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   943
  return (m_policy == 1) ? true : false;
5949
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   944
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   945
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   946
uint16_t
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   947
MgtAddBaResponseHeader::GetTimeout (void) const
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   948
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   949
  return m_timeoutValue;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   950
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   951
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   952
uint16_t
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   953
MgtAddBaResponseHeader::GetBufferSize (void) const
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   954
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   955
  return m_bufferSize;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   956
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   957
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   958
bool
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   959
MgtAddBaResponseHeader::IsAmsduSupported (void) const
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   960
{
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   961
  return (m_amsduSupport == 1) ? true : false;
5949
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   962
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   963
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   964
uint16_t
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   965
MgtAddBaResponseHeader::GetParameterSet (void) const
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   966
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   967
  uint16_t res = 0;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   968
  res |= m_amsduSupport;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   969
  res |= m_policy << 1;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   970
  res |= m_tid << 2;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   971
  res |= m_bufferSize << 6;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   972
  return res;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   973
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   974
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   975
void
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   976
MgtAddBaResponseHeader::SetParameterSet (uint16_t params)
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   977
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   978
  m_amsduSupport = (params) & 0x01;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   979
  m_policy = (params >> 1) & 0x01;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   980
  m_tid = (params >> 2) & 0x0f;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   981
  m_bufferSize = (params >> 6) & 0x03ff;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   982
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   983
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   984
/***************************************************
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   985
*                     DelBa
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   986
****************************************************/
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   987
10410
4d4eb8097fa3 doxygen] Suppress "warning: Member NS_OBJECT_ENSURE_REGISTERED is not documented"
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10139
diff changeset
   988
NS_OBJECT_ENSURE_REGISTERED (MgtDelBaHeader)
4d4eb8097fa3 doxygen] Suppress "warning: Member NS_OBJECT_ENSURE_REGISTERED is not documented"
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 10139
diff changeset
   989
  ;
5949
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   990
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   991
MgtDelBaHeader::MgtDelBaHeader ()
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   992
  : m_reasonCode (1)
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   993
{
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
   994
}
5949
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   995
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   996
TypeId
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   997
MgtDelBaHeader::GetTypeId (void)
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   998
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
   999
  static TypeId tid = TypeId ("ns3::MgtDelBaHeader")
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1000
    .SetParent<Header> ()
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1001
    .AddConstructor<MgtDelBaHeader> ()
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1002
  ;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1003
  return tid;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1004
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1005
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1006
TypeId
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1007
MgtDelBaHeader::GetInstanceTypeId (void) const
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1008
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1009
  return GetTypeId ();
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1010
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1011
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1012
void
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1013
MgtDelBaHeader::Print (std::ostream &os) const
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
  1014
{
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
  1015
}
5949
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1016
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1017
uint32_t
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1018
MgtDelBaHeader::GetSerializedSize (void) const
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1019
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1020
  uint32_t size = 0;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1021
  size += 2; //DelBa parameter set
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1022
  size += 2; //Reason code
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1023
  return size;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1024
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1025
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1026
void
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1027
MgtDelBaHeader::Serialize (Buffer::Iterator start) const
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1028
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1029
  Buffer::Iterator i = start;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1030
  i.WriteHtolsbU16 (GetParameterSet ());
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1031
  i.WriteHtolsbU16 (m_reasonCode);
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1032
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1033
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1034
uint32_t
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1035
MgtDelBaHeader::Deserialize (Buffer::Iterator start)
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1036
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1037
  Buffer::Iterator i = start;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1038
  SetParameterSet (i.ReadLsbtohU16 ());
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1039
  m_reasonCode = i.ReadLsbtohU16 ();
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1040
  return i.GetDistanceFrom (start);
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1041
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1042
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1043
bool
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1044
MgtDelBaHeader::IsByOriginator (void) const
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1045
{
7141
072fb225b714 run check-style.py on src/wifi
Nicola Baldo <nicola@baldo.biz>
parents: 6852
diff changeset
  1046
  return (m_initiator == 1) ? true : false;
5949
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1047
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1048
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1049
uint8_t
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1050
MgtDelBaHeader::GetTid (void) const
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1051
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1052
  NS_ASSERT (m_tid < 16);
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1053
  uint8_t tid = static_cast<uint8_t> (m_tid);
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1054
  return tid;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1055
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1056
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1057
void
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1058
MgtDelBaHeader::SetByOriginator (void)
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1059
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1060
  m_initiator = 1;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1061
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1062
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1063
void
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1064
MgtDelBaHeader::SetByRecipient (void)
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1065
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1066
  m_initiator = 0;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1067
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1068
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1069
void
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1070
MgtDelBaHeader::SetTid (uint8_t tid)
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1071
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1072
  NS_ASSERT (tid < 16);
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1073
  m_tid = static_cast<uint16_t> (tid);
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1074
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1075
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1076
uint16_t
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1077
MgtDelBaHeader::GetParameterSet (void) const
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1078
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1079
  uint16_t res = 0;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1080
  res |= m_initiator << 11;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1081
  res |= m_tid << 12;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1082
  return res;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1083
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1084
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1085
void
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1086
MgtDelBaHeader::SetParameterSet (uint16_t params)
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1087
{
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1088
  m_initiator = (params >> 11) & 0x01;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1089
  m_tid = (params >> 12) & 0x0f;
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1090
}
66f939e7aaec add action frames needed by block ack
Mirko Banchi <mk.banchi@gmail.com>
parents: 5824
diff changeset
  1091
1939
40af0232df83 add management frame implementations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
  1092
} // namespace ns3