src/devices/wifi/wifi-mac-header.h
author Andrey Mazo <mazo@iitp.ru>
Sun, 01 Mar 2009 02:39:10 +0300
changeset 4794 ddefc6dd6d9b
parent 4793 4f6a6772628e
child 4798 f5f30f79d845
permissions -rw-r--r--
Remove some temporary defines.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     1
/* -*-  Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     2
/*
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     3
 * Copyright (c) 2006 INRIA
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     4
 *
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License version 2 as
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     7
 * published by the Free Software Foundation;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     8
 *
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    12
 * GNU General Public License for more details.
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    13
 *
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    15
 * along with this program; if not, write to the Free Software
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    17
 *
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    18
 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    19
 */
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    20
#ifndef WIFI_MAC_HEADER_H
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    21
#define WIFI_MAC_HEADER_H
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    22
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    23
#include "ns3/header.h"
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    24
#include "ns3/mac48-address.h"
2022
33579d27ce2a try to simplify duration calculations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
    25
#include "ns3/nstime.h"
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    26
#include <stdint.h>
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    27
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    28
namespace ns3 {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    29
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    30
enum WifiMacType_e {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    31
  WIFI_MAC_CTL_RTS = 0,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    32
  WIFI_MAC_CTL_CTS,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    33
  WIFI_MAC_CTL_ACK,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    34
  WIFI_MAC_CTL_BACKREQ,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    35
  WIFI_MAC_CTL_BACKRESP,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    36
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    37
  WIFI_MAC_MGT_BEACON,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    38
  WIFI_MAC_MGT_ASSOCIATION_REQUEST,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    39
  WIFI_MAC_MGT_ASSOCIATION_RESPONSE,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    40
  WIFI_MAC_MGT_DISASSOCIATION,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    41
  WIFI_MAC_MGT_REASSOCIATION_REQUEST,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    42
  WIFI_MAC_MGT_REASSOCIATION_RESPONSE,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    43
  WIFI_MAC_MGT_PROBE_REQUEST,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    44
  WIFI_MAC_MGT_PROBE_RESPONSE,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    45
  WIFI_MAC_MGT_AUTHENTICATION,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    46
  WIFI_MAC_MGT_DEAUTHENTICATION,
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
    47
//Mesh management frames:  
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
    48
  WIFI_MAC_MGT_MULTIHOP_ACTION,
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    49
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    50
  WIFI_MAC_DATA,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    51
  WIFI_MAC_DATA_CFACK,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    52
  WIFI_MAC_DATA_CFPOLL,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    53
  WIFI_MAC_DATA_CFACK_CFPOLL,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    54
  WIFI_MAC_DATA_NULL,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    55
  WIFI_MAC_DATA_NULL_CFACK,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    56
  WIFI_MAC_DATA_NULL_CFPOLL,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    57
  WIFI_MAC_DATA_NULL_CFACK_CFPOLL,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    58
  WIFI_MAC_QOSDATA,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    59
  WIFI_MAC_QOSDATA_CFACK,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    60
  WIFI_MAC_QOSDATA_CFPOLL,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    61
  WIFI_MAC_QOSDATA_CFACK_CFPOLL,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    62
  WIFI_MAC_QOSDATA_NULL,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    63
  WIFI_MAC_QOSDATA_NULL_CFPOLL,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    64
  WIFI_MAC_QOSDATA_NULL_CFACK_CFPOLL,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    65
};
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    66
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    67
class WifiMacHeader : public Header 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    68
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    69
public:
2643
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2085
diff changeset
    70
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    71
  WifiMacHeader ();
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    72
  ~WifiMacHeader ();
2643
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2085
diff changeset
    73
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2085
diff changeset
    74
  static TypeId GetTypeId (void);
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2085
diff changeset
    75
  virtual TypeId GetInstanceTypeId (void) const;
2646
c1fef7686472 remove dead code.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2643
diff changeset
    76
  virtual void Print (std::ostream &os) const;
2643
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2085
diff changeset
    77
  virtual uint32_t GetSerializedSize (void) const;
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2085
diff changeset
    78
  virtual void Serialize (Buffer::Iterator start) const;
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2085
diff changeset
    79
  virtual uint32_t Deserialize (Buffer::Iterator start);
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    80
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    81
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    82
  void SetAssocReq (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    83
  void SetAssocResp (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    84
  void SetProbeReq (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    85
  void SetProbeResp (void);
2085
72ec3b59f333 add WifiMacHeader::SetBeacon
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2022
diff changeset
    86
  void SetBeacon (void);
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    87
  void SetTypeData (void);
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
    88
  void SetMultihopAction();
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    89
  void SetDsFrom (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    90
  void SetDsNotFrom (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    91
  void SetDsTo (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    92
  void SetDsNotTo (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    93
  void SetAddr1 (Mac48Address address);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    94
  void SetAddr2 (Mac48Address address);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    95
  void SetAddr3 (Mac48Address address);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    96
  void SetAddr4 (Mac48Address address);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    97
  void SetType (enum WifiMacType_e type);
2022
33579d27ce2a try to simplify duration calculations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
    98
  void SetRawDuration (uint16_t duration);
33579d27ce2a try to simplify duration calculations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
    99
  void SetDuration (Time duration);
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   100
  void SetId (uint16_t id);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   101
  void SetSequenceNumber (uint16_t seq);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   102
  void SetFragmentNumber (uint8_t frag);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   103
  void SetNoMoreFragments (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   104
  void SetMoreFragments (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   105
  void SetRetry (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   106
  void SetNoRetry (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   107
  void SetQosTid (uint8_t tid);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   108
  void SetQosTxopLimit (uint8_t txop);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   109
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   110
  Mac48Address GetAddr1 (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   111
  Mac48Address GetAddr2 (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   112
  Mac48Address GetAddr3 (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   113
  Mac48Address GetAddr4 (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   114
  enum WifiMacType_e GetType (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   115
  bool IsFromDs (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   116
  bool IsToDs (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   117
  bool IsData (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   118
  bool IsQosData (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   119
  bool IsCtl (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   120
  bool IsMgt (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   121
  bool IsCfpoll (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   122
  bool IsRts (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   123
  bool IsCts (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   124
  bool IsAck (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   125
  bool IsAssocReq (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   126
  bool IsAssocResp (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   127
  bool IsReassocReq (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   128
  bool IsReassocResp (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   129
  bool IsProbeReq (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   130
  bool IsProbeResp (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   131
  bool IsBeacon (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   132
  bool IsDisassociation (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   133
  bool IsAuthentication (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   134
  bool IsDeauthentication (void) const;
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   135
  bool IsMultihopAction(void) const;
2022
33579d27ce2a try to simplify duration calculations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
   136
  uint16_t GetRawDuration (void) const;
33579d27ce2a try to simplify duration calculations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
   137
  Time GetDuration (void) const;
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   138
  uint16_t GetSequenceControl (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   139
  uint16_t GetSequenceNumber (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   140
  uint16_t GetFragmentNumber (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   141
  bool IsRetry (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   142
  bool IsMoreFragments (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   143
  bool IsQosBlockAck (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   144
  bool IsQosNoAck (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   145
  bool IsQosAck (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   146
  uint8_t GetQosTid (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   147
  uint8_t GetQosTxopLimit (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   148
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   149
  uint32_t GetSize (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   150
  char const *GetTypeString (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   151
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   152
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   153
private:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   154
  uint16_t GetFrameControl (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   155
  uint16_t GetQosControl (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   156
  void SetFrameControl (uint16_t control);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   157
  void SetSequenceControl (uint16_t seq);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   158
  void SetQosControl (uint16_t qos);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   159
  void PrintFrameControl (std::ostream &os) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   160
3660
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   161
  uint8_t m_ctrlType;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   162
  uint8_t m_ctrlSubtype;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   163
  uint8_t m_ctrlToDs;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   164
  uint8_t m_ctrlFromDs;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   165
  uint8_t m_ctrlMoreFrag;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   166
  uint8_t m_ctrlRetry;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   167
  uint8_t m_ctrlPwrMgt;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   168
  uint8_t m_ctrlMoreData;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   169
  uint8_t m_ctrlWep;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   170
  uint8_t m_ctrlOrder;
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   171
  uint16_t m_duration;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   172
  Mac48Address m_addr1;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   173
  Mac48Address m_addr2;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   174
  Mac48Address m_addr3;
3660
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   175
  uint8_t m_seqFrag;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   176
  uint16_t m_seqSeq;
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   177
  Mac48Address m_addr4;
3660
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   178
  uint8_t m_qosTid;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   179
  uint8_t m_qosEosp;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   180
  uint8_t m_qosAckPolicy;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   181
  uint16_t m_qosStuff;
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   182
};
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   183
class WifiMeshHeader : public Header //7.1.3.5b
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   184
{
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   185
	public:
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   186
		WifiMeshHeader ();
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   187
		~WifiMeshHeader ();
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   188
		static TypeId GetTypeId (void);
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   189
		virtual TypeId GetInstanceTypeId (void) const;
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   190
		virtual void Print (std::ostream &os) const;
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   191
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   192
		void			SetAddr5 (Mac48Address address);
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   193
		void			SetAddr6 (Mac48Address address);
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   194
		void			SetAddr7 (Mac48Address address);
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   195
		Mac48Address		GetAddr5 ();
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   196
		Mac48Address		GetAddr6 ();
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   197
		Mac48Address		GetAddr7 ();
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   198
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   199
		void			SetMeshSeqno (uint32_t seqno);
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   200
		uint32_t		GetMeshSeqno ();
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   201
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   202
		void			SetMeshTtl (uint8_t TTL);
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   203
		uint8_t		GetMeshTtl ();
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   204
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   205
		void			SetAddressExt (uint8_t num_of_addresses);
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   206
		uint8_t		GetAddressExt ();
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   207
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   208
		virtual uint32_t	GetSerializedSize (void) const;
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   209
		virtual void		Serialize (Buffer::Iterator start) const;
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   210
		virtual uint32_t	Deserialize (Buffer::Iterator start);
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   211
	private:
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   212
		uint8_t	m_meshFlags;
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   213
		uint8_t	m_meshTtl;
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   214
		uint32_t	m_meshSeqno;
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   215
		Mac48Address	m_addr5;
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   216
		Mac48Address	m_addr6;
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   217
		Mac48Address	m_addr7;
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   218
};
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   219
class WifiMeshMultihopActionHeader : public Header //7.2.3.14
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   220
{
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   221
	//Multichop action frame consists of Mesh header, Action, and
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   222
	//the last information. Mesh header is present within all data
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   223
	//frames and multihop action frames, so Mesh header is a
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   224
	//separate structure. Each MultihopAction frames (frames like
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   225
	//PREQ, PREP and other) start form Category field and Action
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   226
	//value field, so the Multihop Action Frame should containt
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   227
	//three fields: Category, Action Value;
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   228
	public:
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   229
		WifiMeshMultihopActionHeader ();
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   230
		~WifiMeshMultihopActionHeader ();
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   231
		enum CategoryValue //table 7-24 staring from 4
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   232
		{
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   233
			MESH_PEER_LINK_MGT =4,
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   234
			MESH_LINK_METRIC,
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   235
			MESH_PATH_SELECTION,
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   236
			MESH_INTERWORK_ACTION,
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   237
			MESH_RESOURCE_COORDINATION,
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   238
		};
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   239
		enum PeerLinkMgtActionValue
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   240
		{
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   241
			PEER_LINK_OPEN = 0,
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   242
			PEER_LINK_CONFIRM,
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   243
			PEER_LINK_CLOSE,
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   244
		};
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   245
		enum LinkMetricActionValue
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   246
		{
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   247
			LINK_METRIC_REQUEST = 0,
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   248
			LINK_METRIC_REPORT,
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   249
		};
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   250
		enum PathSelectionActionValue
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   251
		{
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   252
			PATH_REQUEST = 0,
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   253
			PATH_REPLY,
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   254
			PATH_ERROR,
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   255
			ROOT_ANNOUNCEMENT,
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   256
		};
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   257
		enum InterworkActionValue
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   258
		{
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   259
			PORTAL_ANNOUNCEMENT = 0,
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   260
		};
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   261
		enum ResourceCoordinationActionValue
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   262
		{
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   263
			CONGESTION_CONTROL_NOTIFICATION = 0,
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   264
			MDA_SETUP_REQUEST,
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   265
			MDA_SETUP_REPLY,
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   266
			MDAOP_ADVERTISMENT_REQUEST,
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   267
			MDAOP_ADVERTISMENTS,
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   268
			MDAOP_SET_TEARDOWN,
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   269
			BEACON_TIMING_REQUEST,
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   270
			BEACON_TIMING_RESPONSE,
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   271
			TBTT_ADJASTMENT_REQUEST,
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   272
			MESH_CHANNEL_SWITCH_ANNOUNCEMENT,
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   273
		};
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   274
		typedef union
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   275
		{
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   276
			enum PeerLinkMgtActionValue		peerLink;
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   277
			enum LinkMetricActionValue		linkMetrtic;
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   278
			enum PathSelectionActionValue		pathSelection;
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   279
			enum InterworkActionValue		interwork;
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   280
			enum ResourceCoordinationActionValue	resourceCoordination;
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   281
		} ACTION_VALUE;
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   282
		void			SetAction(enum CategoryValue type,ACTION_VALUE action);
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   283
		enum CategoryValue	GetCategory();
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   284
		ACTION_VALUE		GetAction();
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   285
		static TypeId		GetTypeId (void);
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   286
		virtual	TypeId		GetInstanceTypeId (void) const;
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   287
		virtual void		Print (std::ostream &os) const;
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   288
		virtual uint32_t	GetSerializedSize (void) const;
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   289
		virtual void		Serialize (Buffer::Iterator start) const;
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   290
		virtual uint32_t	Deserialize (Buffer::Iterator start);
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   291
	private:
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   292
		uint8_t	m_category;
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   293
		uint8_t	m_actionValue;
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   294
};
1977
4303409f3d8e remove uneeded trailing ';'
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1896
diff changeset
   295
} // namespace ns3
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   296
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   297
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   298
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   299
#endif /* WIFI_MAC_HEADER_H */