src/mesh/model/dot11s/peer-link-frame.h
author Tom Henderson <tomh@tomh.org>
Mon, 17 Aug 2015 14:29:51 -0700
changeset 11588 5a52126492c1
parent 11002 80e12ddf6d72
child 11589 d3bfef4544ec
permissions -rw-r--r--
bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4865
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
     1
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5020
diff changeset
     2
/*
4865
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
     3
 * Copyright (c) 2009 IITP RAS
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5020
diff changeset
     4
 *
4865
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
     8
 *
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    12
 * GNU General Public License for more details.
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    13
 *
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5020
diff changeset
    17
 *
4865
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    18
 * Authors: Kirill Andreev <andreev@iitp.ru>
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    19
 */
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    20
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    21
#ifndef PEER_LINK_FRAME_START_H
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    22
#define PEER_LINK_FRAME_START_H
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    23
#include "ns3/header.h"
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    24
#include "ns3/supported-rates.h"
4957
3ce177c38776 Resturctured peer link frame - removed unneeded field "subtype", added unit
Kirill Andreev <andreev@iitp.ru>
parents: 4949
diff changeset
    25
#include "dot11s-mac-header.h"
4973
59b050ada622 Restructured peer link frame
Kirill Andreev <andreev@iitp.ru>
parents: 4957
diff changeset
    26
#include "ie-dot11s-configuration.h"
4974
8009731514d2 Peer link frame - done
Kirill Andreev <andreev@iitp.ru>
parents: 4973
diff changeset
    27
#include "ie-dot11s-peering-protocol.h"
5020
79e8178d69eb Mesh ID is made separately from SSID
Kirill Andreev <andreev@iitp.ru>
parents: 4976
diff changeset
    28
#include "ie-dot11s-id.h"
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5020
diff changeset
    29
namespace ns3
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5020
diff changeset
    30
{
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5020
diff changeset
    31
namespace dot11s
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5020
diff changeset
    32
{
4949
c376fb558264 Added docs to peer link frame cleass, mesh-wifi-mac-header has been moved to
Kirill Andreev <andreev@iitp.ru>
parents: 4882
diff changeset
    33
/**
c376fb558264 Added docs to peer link frame cleass, mesh-wifi-mac-header has been moved to
Kirill Andreev <andreev@iitp.ru>
parents: 4882
diff changeset
    34
 * \ingroup dot11s
5129
5688b8da4526 Fixed coding style
Kirill Andreev <andreev@iitp.ru>
parents: 5020
diff changeset
    35
 *
11588
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
    36
 * \brief 802.11s Peer link open management frame
7600
57ba46094a0d fix various doxygen errors
Vedran Miletić <rivanvx@gmail.com>
parents: 7386
diff changeset
    37
 * 
57ba46094a0d fix various doxygen errors
Vedran Miletić <rivanvx@gmail.com>
parents: 7386
diff changeset
    38
 * Peer link management frame included the following (see chapters 7.4.12.1-7.4.12.3 of 802.11s):
4949
c376fb558264 Added docs to peer link frame cleass, mesh-wifi-mac-header has been moved to
Kirill Andreev <andreev@iitp.ru>
parents: 4882
diff changeset
    39
 * - Subtype field
c376fb558264 Added docs to peer link frame cleass, mesh-wifi-mac-header has been moved to
Kirill Andreev <andreev@iitp.ru>
parents: 4882
diff changeset
    40
 * - Association ID field
c376fb558264 Added docs to peer link frame cleass, mesh-wifi-mac-header has been moved to
Kirill Andreev <andreev@iitp.ru>
parents: 4882
diff changeset
    41
 * - Supported rates
5020
79e8178d69eb Mesh ID is made separately from SSID
Kirill Andreev <andreev@iitp.ru>
parents: 4976
diff changeset
    42
 * - Mesh ID of mesh
4949
c376fb558264 Added docs to peer link frame cleass, mesh-wifi-mac-header has been moved to
Kirill Andreev <andreev@iitp.ru>
parents: 4882
diff changeset
    43
 */
11588
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
    44
class PeerLinkOpenStart : public Header
4865
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    45
{
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    46
public:
11588
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
    47
  PeerLinkOpenStart ();
4949
c376fb558264 Added docs to peer link frame cleass, mesh-wifi-mac-header has been moved to
Kirill Andreev <andreev@iitp.ru>
parents: 4882
diff changeset
    48
  ///\brief fields:
11588
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
    49
  struct PlinkOpenStartFields
4865
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    50
  {
4866
564372fc5491 First management frame goes through new archotecture
Kirill Andreev <andreev@iitp.ru>
parents: 4865
diff changeset
    51
    uint8_t subtype;
4974
8009731514d2 Peer link frame - done
Kirill Andreev <andreev@iitp.ru>
parents: 4973
diff changeset
    52
    IePeeringProtocol protocol; //Peering protocol version - in all subtypes - 3 octets
8009731514d2 Peer link frame - done
Kirill Andreev <andreev@iitp.ru>
parents: 4973
diff changeset
    53
    uint16_t capability;        //open and confirm
8009731514d2 Peer link frame - done
Kirill Andreev <andreev@iitp.ru>
parents: 4973
diff changeset
    54
    uint16_t aid;               //confirm only
8009731514d2 Peer link frame - done
Kirill Andreev <andreev@iitp.ru>
parents: 4973
diff changeset
    55
    SupportedRates rates;       //open and confirm
5020
79e8178d69eb Mesh ID is made separately from SSID
Kirill Andreev <andreev@iitp.ru>
parents: 4976
diff changeset
    56
    IeMeshId meshId;            //open and close
4974
8009731514d2 Peer link frame - done
Kirill Andreev <andreev@iitp.ru>
parents: 4973
diff changeset
    57
    IeConfiguration config;     //open and confirm
8009731514d2 Peer link frame - done
Kirill Andreev <andreev@iitp.ru>
parents: 4973
diff changeset
    58
    uint16_t reasonCode;        //close only
4865
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    59
  };
11588
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
    60
  void SetPlinkOpenStart (PlinkOpenStartFields);
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
    61
  PlinkOpenStartFields GetFields () const;
11002
80e12ddf6d72 [Doxygen] Remove trivial and/or misused groupings
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    62
80e12ddf6d72 [Doxygen] Remove trivial and/or misused groupings
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    63
  // Inherited from header:
4865
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    64
  static  TypeId   GetTypeId ();
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    65
  virtual TypeId   GetInstanceTypeId () const;
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    66
  virtual void     Print (std::ostream &os) const;
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    67
  virtual uint32_t GetSerializedSize () const;
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    68
  virtual void     Serialize (Buffer::Iterator start) const;
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    69
  virtual uint32_t Deserialize (Buffer::Iterator start);
11002
80e12ddf6d72 [Doxygen] Remove trivial and/or misused groupings
Peter D. Barnes, Jr. <barnes26@llnl.gov>
parents: 7600
diff changeset
    70
4865
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    71
private:
4957
3ce177c38776 Resturctured peer link frame - removed unneeded field "subtype", added unit
Kirill Andreev <andreev@iitp.ru>
parents: 4949
diff changeset
    72
  uint8_t m_subtype;
4974
8009731514d2 Peer link frame - done
Kirill Andreev <andreev@iitp.ru>
parents: 4973
diff changeset
    73
  IePeeringProtocol m_protocol;
4973
59b050ada622 Restructured peer link frame
Kirill Andreev <andreev@iitp.ru>
parents: 4957
diff changeset
    74
  uint16_t m_capability;
4957
3ce177c38776 Resturctured peer link frame - removed unneeded field "subtype", added unit
Kirill Andreev <andreev@iitp.ru>
parents: 4949
diff changeset
    75
  uint16_t m_aid;
3ce177c38776 Resturctured peer link frame - removed unneeded field "subtype", added unit
Kirill Andreev <andreev@iitp.ru>
parents: 4949
diff changeset
    76
  SupportedRates m_rates;
5020
79e8178d69eb Mesh ID is made separately from SSID
Kirill Andreev <andreev@iitp.ru>
parents: 4976
diff changeset
    77
  IeMeshId m_meshId;
4973
59b050ada622 Restructured peer link frame
Kirill Andreev <andreev@iitp.ru>
parents: 4957
diff changeset
    78
  IeConfiguration m_config;
59b050ada622 Restructured peer link frame
Kirill Andreev <andreev@iitp.ru>
parents: 4957
diff changeset
    79
  uint16_t m_reasonCode;
4957
3ce177c38776 Resturctured peer link frame - removed unneeded field "subtype", added unit
Kirill Andreev <andreev@iitp.ru>
parents: 4949
diff changeset
    80
11588
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
    81
  friend bool operator== (const PeerLinkOpenStart & a, const PeerLinkOpenStart & b);
5200
3e8818c7a50e Export header ie-dot11s-id.h, disable a few copy contructors, to make Python bindings compile.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 5130
diff changeset
    82
11588
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
    83
  PeerLinkOpenStart& operator= (const PeerLinkOpenStart &);
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
    84
  PeerLinkOpenStart (const PeerLinkOpenStart &);
5200
3e8818c7a50e Export header ie-dot11s-id.h, disable a few copy contructors, to make Python bindings compile.
Gustavo J. A. M. Carneiro <gjc@inescporto.pt>
parents: 5130
diff changeset
    85
4865
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
    86
};
11588
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
    87
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
    88
bool operator== (const PeerLinkOpenStart & a, const PeerLinkOpenStart & b);
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
    89
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
    90
/**
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
    91
 * \ingroup dot11s
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
    92
 *
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
    93
 * \brief 802.11s Peer link close management frame
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
    94
 * 
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
    95
 * Peer link management frame included the following (see chapters 7.4.12.1-7.4.12.3 of 802.11s):
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
    96
 * - Subtype field
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
    97
 * - Association ID field
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
    98
 * - Supported rates
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
    99
 * - Mesh ID of mesh
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   100
 */
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   101
class PeerLinkCloseStart : public Header
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   102
{
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   103
public:
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   104
  PeerLinkCloseStart ();
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   105
  ///\brief fields:
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   106
  struct PlinkCloseStartFields
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   107
  {
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   108
    uint8_t subtype;
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   109
    IePeeringProtocol protocol; //Peering protocol version - in all subtypes - 3 octets
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   110
    uint16_t capability;        //open and confirm
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   111
    uint16_t aid;               //confirm only
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   112
    SupportedRates rates;       //open and confirm
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   113
    IeMeshId meshId;            //open and close
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   114
    IeConfiguration config;     //open and confirm
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   115
    uint16_t reasonCode;        //close only
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   116
  };
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   117
  void SetPlinkCloseStart (PlinkCloseStartFields);
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   118
  PlinkCloseStartFields GetFields () const;
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   119
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   120
  // Inherited from header:
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   121
  static  TypeId   GetTypeId ();
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   122
  virtual TypeId   GetInstanceTypeId () const;
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   123
  virtual void     Print (std::ostream &os) const;
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   124
  virtual uint32_t GetSerializedSize () const;
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   125
  virtual void     Serialize (Buffer::Iterator start) const;
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   126
  virtual uint32_t Deserialize (Buffer::Iterator start);
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   127
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   128
private:
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   129
  uint8_t m_subtype;
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   130
  IePeeringProtocol m_protocol;
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   131
  uint16_t m_capability;
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   132
  uint16_t m_aid;
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   133
  SupportedRates m_rates;
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   134
  IeMeshId m_meshId;
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   135
  IeConfiguration m_config;
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   136
  uint16_t m_reasonCode;
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   137
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   138
  friend bool operator== (const PeerLinkCloseStart & a, const PeerLinkCloseStart & b);
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   139
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   140
  PeerLinkCloseStart& operator= (const PeerLinkCloseStart &);
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   141
  PeerLinkCloseStart (const PeerLinkCloseStart &);
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   142
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   143
};
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   144
bool operator== (const PeerLinkCloseStart & a, const PeerLinkCloseStart & b);
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   145
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   146
/**
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   147
 * \ingroup dot11s
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   148
 *
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   149
 * \brief 802.11s Peer link confirm management frame
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   150
 * 
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   151
 * Peer link management frame included the following (see chapters 7.4.12.1-7.4.12.3 of 802.11s):
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   152
 * - Subtype field
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   153
 * - Association ID field
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   154
 * - Supported rates
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   155
 * - Mesh ID of mesh
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   156
 */
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   157
class PeerLinkConfirmStart : public Header
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   158
{
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   159
public:
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   160
  PeerLinkConfirmStart ();
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   161
  ///\brief fields:
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   162
  struct PlinkConfirmStartFields
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   163
  {
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   164
    uint8_t subtype;
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   165
    IePeeringProtocol protocol; //Peering protocol version - in all subtypes - 3 octets
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   166
    uint16_t capability;        //open and confirm
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   167
    uint16_t aid;               //confirm only
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   168
    SupportedRates rates;       //open and confirm
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   169
    IeMeshId meshId;            //open and close
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   170
    IeConfiguration config;     //open and confirm
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   171
    uint16_t reasonCode;        //close only
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   172
  };
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   173
  void SetPlinkConfirmStart (PlinkConfirmStartFields);
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   174
  PlinkConfirmStartFields GetFields () const;
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   175
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   176
  // Inherited from header:
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   177
  static  TypeId   GetTypeId ();
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   178
  virtual TypeId   GetInstanceTypeId () const;
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   179
  virtual void     Print (std::ostream &os) const;
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   180
  virtual uint32_t GetSerializedSize () const;
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   181
  virtual void     Serialize (Buffer::Iterator start) const;
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   182
  virtual uint32_t Deserialize (Buffer::Iterator start);
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   183
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   184
private:
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   185
  uint8_t m_subtype;
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   186
  IePeeringProtocol m_protocol;
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   187
  uint16_t m_capability;
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   188
  uint16_t m_aid;
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   189
  SupportedRates m_rates;
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   190
  IeMeshId m_meshId;
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   191
  IeConfiguration m_config;
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   192
  uint16_t m_reasonCode;
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   193
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   194
  friend bool operator== (const PeerLinkConfirmStart & a, const PeerLinkConfirmStart & b);
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   195
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   196
  PeerLinkConfirmStart& operator= (const PeerLinkConfirmStart &);
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   197
  PeerLinkConfirmStart (const PeerLinkConfirmStart &);
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   198
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   199
};
5a52126492c1 bug 1482: split PeerLinkFrameStart header into different header types, avoiding the need to set the header type before deserializing
Tom Henderson <tomh@tomh.org>
parents: 11002
diff changeset
   200
bool operator== (const PeerLinkConfirmStart & a, const PeerLinkConfirmStart & b);
7386
2310ed220a61 standardize ns-3 namespace declaration format
Vedran Miletić <rivanvx@gmail.com>
parents: 6882
diff changeset
   201
} // namespace dot11s
2310ed220a61 standardize ns-3 namespace declaration format
Vedran Miletić <rivanvx@gmail.com>
parents: 6882
diff changeset
   202
} // namespace ns3
4865
e331ed5d3662 Added header for peer link frame (first fields without information element)
Kirill Andreev <andreev@iitp.ru>
parents:
diff changeset
   203
#endif