src/devices/wifi/mac-parameters.h
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Mon, 08 Oct 2007 15:58:07 +0200
changeset 1913 4e4ea4809c3d
parent 1904 c0cfe985f973
child 1964 041240a915f8
permissions -rw-r--r--
implement broadcast/multicast MacStation
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1904
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     1
/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     2
/*
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     3
 * Copyright (c) 2005 INRIA
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     4
 * All rights reserved.
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     5
 *
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     6
 * This program is free software; you can redistribute it and/or modify
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     7
 * it under the terms of the GNU General Public License version 2 as 
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     8
 * published by the Free Software Foundation;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     9
 *
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    10
 * This program is distributed in the hope that it will be useful,
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    13
 * GNU General Public License for more details.
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    14
 *
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    16
 * along with this program; if not, write to the Free Software
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    17
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    18
 *
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    19
 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    20
 */
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    21
#ifndef MAC_PARAMETERS_H
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    22
#define MAC_PARAMETERS_H
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    23
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    24
#include <stdint.h>
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    25
#include "ns3/nstime.h"
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    26
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    27
namespace ns3 {
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    28
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    29
class WifiPhy;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    30
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    31
class MacParameters {
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    32
public:
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    33
  MacParameters ();
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    34
  
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    35
  void Initialize80211a (WifiPhy const*phy);
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    36
  void SetSlotTime (Time slotTime);
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    37
  void SetMaxSsrc (uint32_t ssrc);
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    38
  void SetMaxSlrc (uint32_t ssrc);
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    39
  void SetRtsCtsThreshold (uint32_t threshold);
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    40
  void SetFragmentationThreshold (uint32_t threshold);
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    41
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    42
  // XXX AP-specific
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    43
  Time GetBeaconInterval (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    44
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    45
  Time GetPifs (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    46
  Time GetSifs (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    47
  Time GetSlotTime (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    48
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    49
  uint32_t GetMaxSsrc (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    50
  uint32_t GetMaxSlrc (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    51
  uint32_t GetRtsCtsThreshold (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    52
  uint32_t GetFragmentationThreshold (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    53
  Time GetCtsTimeout (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    54
  Time GetAckTimeout (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    55
  Time GetMsduLifetime (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    56
  uint32_t GetMaxQueueSize (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    57
  Time GetMaxPropagationDelay (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    58
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    59
  uint32_t GetMaxMsduSize (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    60
  double GetCapLimit (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    61
  double GetMinEdcaTrafficProportion (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    62
private:
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    63
  Time m_ctsTimeout;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    64
  Time m_ackTimeout;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    65
  Time m_sifs;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    66
  Time m_pifs;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    67
  Time m_slot;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    68
  uint32_t m_maxSsrc;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    69
  uint32_t m_maxSlrc;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    70
  uint32_t m_rtsCtsThreshold;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    71
  uint32_t m_fragmentationThreshold;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    72
  Time m_maxPropagationDelay;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    73
  static const double SPEED_OF_LIGHT; // m/s
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    74
};
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    75
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    76
}; // namespace ns3
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    77
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    78
#endif /* MAC_PARAMETERS_H */