src/devices/wifi/wifi-mac-header.h
author Mirko Banchi <mk.banchi@gmail.com>
Fri, 24 Apr 2009 09:07:00 +0200
changeset 4401 427cec7079f3
parent 3660 0ae474317c28
permissions -rw-r--r--
add amsdu field
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,
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:
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
    70
  enum QosAckPolicy {
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
    71
    NORMAL_ACK = 0,
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
    72
    NO_ACK = 1,
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
    73
    NO_EXPLICIT_ACK = 2,
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
    74
    BLOCK_ACK = 3,
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
    75
  };
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
    76
  
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
    77
  enum AddressType {
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
    78
    ADDR1,	
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
    79
    ADDR2,
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
    80
    ADDR3,
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
    81
    ADDR4
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
    82
  };
2643
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2085
diff changeset
    83
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    84
  WifiMacHeader ();
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    85
  ~WifiMacHeader ();
2643
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2085
diff changeset
    86
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2085
diff changeset
    87
  static TypeId GetTypeId (void);
2a3324f4dabe define a TypeId for each Header/Trailer.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2085
diff changeset
    88
  virtual TypeId GetInstanceTypeId (void) const;
2646
c1fef7686472 remove dead code.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2643
diff changeset
    89
  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
    90
  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
    91
  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
    92
  virtual uint32_t Deserialize (Buffer::Iterator start);
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    93
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    94
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    95
  void SetAssocReq (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    96
  void SetAssocResp (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    97
  void SetProbeReq (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    98
  void SetProbeResp (void);
2085
72ec3b59f333 add WifiMacHeader::SetBeacon
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2022
diff changeset
    99
  void SetBeacon (void);
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   100
  void SetTypeData (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   101
  void SetDsFrom (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   102
  void SetDsNotFrom (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   103
  void SetDsTo (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   104
  void SetDsNotTo (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   105
  void SetAddr1 (Mac48Address address);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   106
  void SetAddr2 (Mac48Address address);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   107
  void SetAddr3 (Mac48Address address);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   108
  void SetAddr4 (Mac48Address address);
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
   109
  void SetType (enum WifiMacType type);
2022
33579d27ce2a try to simplify duration calculations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
   110
  void SetRawDuration (uint16_t duration);
33579d27ce2a try to simplify duration calculations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
   111
  void SetDuration (Time duration);
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   112
  void SetId (uint16_t id);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   113
  void SetSequenceNumber (uint16_t seq);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   114
  void SetFragmentNumber (uint8_t frag);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   115
  void SetNoMoreFragments (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   116
  void SetMoreFragments (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   117
  void SetRetry (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   118
  void SetNoRetry (void);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   119
  void SetQosTid (uint8_t tid);
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
   120
  void SetQosEosp ();
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
   121
  void SetQosNoEosp ();
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
   122
  void SetQosAckPolicy (enum QosAckPolicy);
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
   123
  void SetQosAmsdu (void);
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
   124
  void SetQosNoAmsdu (void);
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   125
  void SetQosTxopLimit (uint8_t txop);
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
   126
 
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   127
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   128
  Mac48Address GetAddr1 (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   129
  Mac48Address GetAddr2 (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   130
  Mac48Address GetAddr3 (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   131
  Mac48Address GetAddr4 (void) const;
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
   132
  enum WifiMacType GetType (void) const;
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   133
  bool IsFromDs (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   134
  bool IsToDs (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   135
  bool IsData (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   136
  bool IsQosData (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   137
  bool IsCtl (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   138
  bool IsMgt (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   139
  bool IsCfpoll (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   140
  bool IsRts (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   141
  bool IsCts (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   142
  bool IsAck (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   143
  bool IsAssocReq (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   144
  bool IsAssocResp (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   145
  bool IsReassocReq (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   146
  bool IsReassocResp (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   147
  bool IsProbeReq (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   148
  bool IsProbeResp (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   149
  bool IsBeacon (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   150
  bool IsDisassociation (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   151
  bool IsAuthentication (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   152
  bool IsDeauthentication (void) const;
2022
33579d27ce2a try to simplify duration calculations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
   153
  uint16_t GetRawDuration (void) const;
33579d27ce2a try to simplify duration calculations
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
   154
  Time GetDuration (void) const;
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   155
  uint16_t GetSequenceControl (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   156
  uint16_t GetSequenceNumber (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   157
  uint16_t GetFragmentNumber (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   158
  bool IsRetry (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   159
  bool IsMoreFragments (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   160
  bool IsQosBlockAck (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   161
  bool IsQosNoAck (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   162
  bool IsQosAck (void) const;
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
   163
  bool IsQosEosp (void) const;
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
   164
  bool IsQosAmsdu (void) const;
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   165
  uint8_t GetQosTid (void) const;
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
   166
  enum QosAckPolicy GetQosAckPolicy (void) const;
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   167
  uint8_t GetQosTxopLimit (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   168
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   169
  uint32_t GetSize (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   170
  char const *GetTypeString (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   171
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   172
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   173
private:
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   174
  uint16_t GetFrameControl (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   175
  uint16_t GetQosControl (void) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   176
  void SetFrameControl (uint16_t control);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   177
  void SetSequenceControl (uint16_t seq);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   178
  void SetQosControl (uint16_t qos);
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   179
  void PrintFrameControl (std::ostream &os) const;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   180
3660
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   181
  uint8_t m_ctrlType;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   182
  uint8_t m_ctrlSubtype;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   183
  uint8_t m_ctrlToDs;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   184
  uint8_t m_ctrlFromDs;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   185
  uint8_t m_ctrlMoreFrag;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   186
  uint8_t m_ctrlRetry;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   187
  uint8_t m_ctrlPwrMgt;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   188
  uint8_t m_ctrlMoreData;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   189
  uint8_t m_ctrlWep;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   190
  uint8_t m_ctrlOrder;
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   191
  uint16_t m_duration;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   192
  Mac48Address m_addr1;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   193
  Mac48Address m_addr2;
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   194
  Mac48Address m_addr3;
3660
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   195
  uint8_t m_seqFrag;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   196
  uint16_t m_seqSeq;
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   197
  Mac48Address m_addr4;
3660
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   198
  uint8_t m_qosTid;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   199
  uint8_t m_qosEosp;
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   200
  uint8_t m_qosAckPolicy;
4401
427cec7079f3 add amsdu field
Mirko Banchi <mk.banchi@gmail.com>
parents: 3660
diff changeset
   201
  uint8_t m_amsduPresent;
3660
0ae474317c28 don't use bitfields: they are evil.
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 2646
diff changeset
   202
  uint16_t m_qosStuff;
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   203
};
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   204
1977
4303409f3d8e remove uneeded trailing ';'
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1896
diff changeset
   205
} // namespace ns3
1896
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   206
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   207
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   208
9861a16a8a1d build WifiMacHeader
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
   209
#endif /* WIFI_MAC_HEADER_H */