src/devices/wifi/wifi-mac-header.h
author Pavel Boyko <boyko@iitp.ru>
Tue, 16 Jun 2009 17:58:16 +0400
changeset 5074 355de6af8ea9
parent 4987 1bee3ec2793d
child 5133 1e44b8fa74cd
permissions -rw-r--r--
merged with nsnam
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     1
/* -*-  Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     2
/*
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
     3
 * Copyright (c) 2006, 2009 INRIA
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
     4
 * Copyright (c) 2009 MIRKO BANCHI
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     5
 *
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     6
 * This program is free software; you can redistribute it and/or modify
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     7
 * it under the terms of the GNU General Public License version 2 as
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     8
 * published by the Free Software Foundation;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     9
 *
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    10
 * This program is distributed in the hope that it will be useful,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    13
 * GNU General Public License for more details.
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    14
 *
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    16
 * along with this program; if not, write to the Free Software
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    17
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    18
 *
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    19
 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
    20
 * Author: Mirko Banchi <mk.banchi@gmail.com>
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    21
 */
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    22
#ifndef WIFI_MAC_HEADER_H
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    23
#define WIFI_MAC_HEADER_H
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    24
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    25
#include "ns3/header.h"
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    26
#include "ns3/mac48-address.h"
2022
33579d27ce2a try to simplify duration calculations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
    27
#include "ns3/nstime.h"
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    28
#include <stdint.h>
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
namespace ns3 {
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    31
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
    32
enum WifiMacType {
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    33
  WIFI_MAC_CTL_RTS = 0,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    34
  WIFI_MAC_CTL_CTS,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    35
  WIFI_MAC_CTL_ACK,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    36
  WIFI_MAC_CTL_BACKREQ,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    37
  WIFI_MAC_CTL_BACKRESP,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    38
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    39
  WIFI_MAC_MGT_BEACON,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    40
  WIFI_MAC_MGT_ASSOCIATION_REQUEST,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    41
  WIFI_MAC_MGT_ASSOCIATION_RESPONSE,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    42
  WIFI_MAC_MGT_DISASSOCIATION,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    43
  WIFI_MAC_MGT_REASSOCIATION_REQUEST,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    44
  WIFI_MAC_MGT_REASSOCIATION_RESPONSE,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    45
  WIFI_MAC_MGT_PROBE_REQUEST,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    46
  WIFI_MAC_MGT_PROBE_RESPONSE,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    47
  WIFI_MAC_MGT_AUTHENTICATION,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    48
  WIFI_MAC_MGT_DEAUTHENTICATION,
4968
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4799
diff changeset
    49
  WIFI_MAC_MGT_ACTION,
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4799
diff changeset
    50
  WIFI_MAC_MGT_ACTION_NO_ACK,
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
    51
  WIFI_MAC_MGT_MULTIHOP_ACTION,
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    52
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    53
  WIFI_MAC_DATA,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    54
  WIFI_MAC_DATA_CFACK,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    55
  WIFI_MAC_DATA_CFPOLL,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    56
  WIFI_MAC_DATA_CFACK_CFPOLL,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    57
  WIFI_MAC_DATA_NULL,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    58
  WIFI_MAC_DATA_NULL_CFACK,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    59
  WIFI_MAC_DATA_NULL_CFPOLL,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    60
  WIFI_MAC_DATA_NULL_CFACK_CFPOLL,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    61
  WIFI_MAC_QOSDATA,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    62
  WIFI_MAC_QOSDATA_CFACK,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    63
  WIFI_MAC_QOSDATA_CFPOLL,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    64
  WIFI_MAC_QOSDATA_CFACK_CFPOLL,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    65
  WIFI_MAC_QOSDATA_NULL,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    66
  WIFI_MAC_QOSDATA_NULL_CFPOLL,
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    67
  WIFI_MAC_QOSDATA_NULL_CFACK_CFPOLL,
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
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    70
class WifiMacHeader : public Header 
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    71
{
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    72
public:
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
    73
  enum QosAckPolicy {
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
    74
    NORMAL_ACK = 0,
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
    75
    NO_ACK = 1,
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
    76
    NO_EXPLICIT_ACK = 2,
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
    77
    BLOCK_ACK = 3,
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
    78
  };
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
    79
  
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
    80
  enum AddressType {
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
    81
    ADDR1,	
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
    82
    ADDR2,
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
    83
    ADDR3,
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
    84
    ADDR4
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
    85
  };
2643
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2085
diff changeset
    86
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    87
  WifiMacHeader ();
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    88
  ~WifiMacHeader ();
2643
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2085
diff changeset
    89
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2085
diff changeset
    90
  static TypeId GetTypeId (void);
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2085
diff changeset
    91
  virtual TypeId GetInstanceTypeId (void) const;
2646
c1fef7686472 remove dead code.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2643
diff changeset
    92
  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
    93
  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
    94
  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
    95
  virtual uint32_t Deserialize (Buffer::Iterator start);
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    96
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    97
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    98
  void SetAssocReq (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    99
  void SetAssocResp (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   100
  void SetProbeReq (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   101
  void SetProbeResp (void);
2085
72ec3b59f333 add WifiMacHeader::SetBeacon
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2022
diff changeset
   102
  void SetBeacon (void);
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   103
  void SetTypeData (void);
4968
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4799
diff changeset
   104
  void SetAction ();
4793
4f6a6772628e Merge 802.11s code.
Andrey Mazo <mazo@iitp.ru>
parents: 3660
diff changeset
   105
  void SetMultihopAction();
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   106
  void SetDsFrom (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   107
  void SetDsNotFrom (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   108
  void SetDsTo (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   109
  void SetDsNotTo (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   110
  void SetAddr1 (Mac48Address address);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   111
  void SetAddr2 (Mac48Address address);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   112
  void SetAddr3 (Mac48Address address);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   113
  void SetAddr4 (Mac48Address address);
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
   114
  void SetType (enum WifiMacType type);
2022
33579d27ce2a try to simplify duration calculations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
   115
  void SetRawDuration (uint16_t duration);
33579d27ce2a try to simplify duration calculations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
   116
  void SetDuration (Time duration);
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   117
  void SetId (uint16_t id);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   118
  void SetSequenceNumber (uint16_t seq);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   119
  void SetFragmentNumber (uint8_t frag);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   120
  void SetNoMoreFragments (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   121
  void SetMoreFragments (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   122
  void SetRetry (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   123
  void SetNoRetry (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   124
  void SetQosTid (uint8_t tid);
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
   125
  void SetQosEosp ();
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
   126
  void SetQosNoEosp ();
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
   127
  void SetQosAckPolicy (enum QosAckPolicy);
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
   128
  void SetQosAmsdu (void);
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
   129
  void SetQosNoAmsdu (void);
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   130
  void SetQosTxopLimit (uint8_t txop);
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
   131
 
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   132
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   133
  Mac48Address GetAddr1 (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   134
  Mac48Address GetAddr2 (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   135
  Mac48Address GetAddr3 (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   136
  Mac48Address GetAddr4 (void) const;
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
   137
  enum WifiMacType GetType (void) const;
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   138
  bool IsFromDs (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   139
  bool IsToDs (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   140
  bool IsData (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   141
  bool IsQosData (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   142
  bool IsCtl (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   143
  bool IsMgt (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   144
  bool IsCfpoll (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   145
  bool IsRts (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   146
  bool IsCts (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   147
  bool IsAck (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   148
  bool IsAssocReq (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   149
  bool IsAssocResp (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   150
  bool IsReassocReq (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   151
  bool IsReassocResp (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   152
  bool IsProbeReq (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   153
  bool IsProbeResp (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   154
  bool IsBeacon (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   155
  bool IsDisassociation (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   156
  bool IsAuthentication (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   157
  bool IsDeauthentication (void) const;
4968
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4799
diff changeset
   158
  bool IsAction () const;
ff5a2162d492 MulthopAction -> Action management frames in 802.11s according to std
Pavel Boyko <boyko@iitp.ru>
parents: 4799
diff changeset
   159
  bool IsMultihopAction () const;
2022
33579d27ce2a try to simplify duration calculations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
   160
  uint16_t GetRawDuration (void) const;
33579d27ce2a try to simplify duration calculations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
   161
  Time GetDuration (void) const;
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   162
  uint16_t GetSequenceControl (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   163
  uint16_t GetSequenceNumber (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   164
  uint16_t GetFragmentNumber (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   165
  bool IsRetry (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   166
  bool IsMoreFragments (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   167
  bool IsQosBlockAck (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   168
  bool IsQosNoAck (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   169
  bool IsQosAck (void) const;
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
   170
  bool IsQosEosp (void) const;
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
   171
  bool IsQosAmsdu (void) const;
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   172
  uint8_t GetQosTid (void) const;
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
   173
  enum QosAckPolicy GetQosAckPolicy (void) const;
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   174
  uint8_t GetQosTxopLimit (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   175
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   176
  uint32_t GetSize (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   177
  char const *GetTypeString (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   178
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   179
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   180
private:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   181
  uint16_t GetFrameControl (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   182
  uint16_t GetQosControl (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   183
  void SetFrameControl (uint16_t control);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   184
  void SetSequenceControl (uint16_t seq);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   185
  void SetQosControl (uint16_t qos);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   186
  void PrintFrameControl (std::ostream &os) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   187
3660
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   188
  uint8_t m_ctrlType;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   189
  uint8_t m_ctrlSubtype;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   190
  uint8_t m_ctrlToDs;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   191
  uint8_t m_ctrlFromDs;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   192
  uint8_t m_ctrlMoreFrag;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   193
  uint8_t m_ctrlRetry;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   194
  uint8_t m_ctrlPwrMgt;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   195
  uint8_t m_ctrlMoreData;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   196
  uint8_t m_ctrlWep;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   197
  uint8_t m_ctrlOrder;
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   198
  uint16_t m_duration;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   199
  Mac48Address m_addr1;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   200
  Mac48Address m_addr2;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   201
  Mac48Address m_addr3;
3660
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   202
  uint8_t m_seqFrag;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   203
  uint16_t m_seqSeq;
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   204
  Mac48Address m_addr4;
3660
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   205
  uint8_t m_qosTid;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   206
  uint8_t m_qosEosp;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   207
  uint8_t m_qosAckPolicy;
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
   208
  uint8_t m_amsduPresent;
3660
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   209
  uint16_t m_qosStuff;
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   210
};
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   211
1977
4303409f3d8e remove uneeded trailing ';'
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1896
diff changeset
   212
} // namespace ns3
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   213
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   214
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   215
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   216
#endif /* WIFI_MAC_HEADER_H */