src/devices/wifi/wifi-mac-parameters.h
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Thu, 28 Feb 2008 06:18:02 +0100
changeset 2508 18b690d1e74b
parent 1978 src/devices/wifi/mac-parameters.h@cc905522d049
child 2509 a72ee2fc1f30
permissions -rw-r--r--
MacParameters -> WifiMacParameters
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
 *
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     5
 * 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
     6
 * 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
     7
 * published by the Free Software Foundation;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     8
 *
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
     9
 * 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
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    12
 * GNU General Public License for more details.
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    13
 *
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    14
 * 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
    15
 * along with this program; if not, write to the Free Software
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    16
 * 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
    17
 *
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    18
 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    19
 */
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    20
#ifndef MAC_PARAMETERS_H
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    21
#define MAC_PARAMETERS_H
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    22
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    23
#include <stdint.h>
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    24
#include "ns3/nstime.h"
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    25
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    26
namespace ns3 {
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    27
2508
18b690d1e74b MacParameters -> WifiMacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
    28
class WifiMacParameters 
1964
041240a915f8 build and link
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1904
diff changeset
    29
{
1904
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    30
public:
2508
18b690d1e74b MacParameters -> WifiMacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1978
diff changeset
    31
  WifiMacParameters ();
1964
041240a915f8 build and link
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1904
diff changeset
    32
041240a915f8 build and link
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1904
diff changeset
    33
  void Initialize (Time ctsDelay, Time ackDelay);
1904
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    34
  void SetSlotTime (Time slotTime);
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    35
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    36
  // XXX AP-specific
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    37
  Time GetBeaconInterval (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    38
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    39
  Time GetPifs (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    40
  Time GetSifs (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    41
  Time GetSlotTime (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    42
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    43
  uint32_t GetMaxSsrc (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    44
  uint32_t GetMaxSlrc (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    45
  uint32_t GetRtsCtsThreshold (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    46
  uint32_t GetFragmentationThreshold (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    47
  Time GetCtsTimeout (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    48
  Time GetAckTimeout (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    49
  Time GetMsduLifetime (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    50
  Time GetMaxPropagationDelay (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    51
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    52
  uint32_t GetMaxMsduSize (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    53
  double GetCapLimit (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    54
  double GetMinEdcaTrafficProportion (void) const;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    55
private:
1964
041240a915f8 build and link
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1904
diff changeset
    56
  void Initialize80211a (void);
1904
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    57
  Time m_ctsTimeout;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    58
  Time m_ackTimeout;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    59
  Time m_sifs;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    60
  Time m_pifs;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    61
  Time m_slot;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    62
  uint32_t m_maxSsrc;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    63
  uint32_t m_maxSlrc;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    64
  uint32_t m_rtsCtsThreshold;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    65
  uint32_t m_fragmentationThreshold;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    66
  Time m_maxPropagationDelay;
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    67
  static const double SPEED_OF_LIGHT; // m/s
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    68
};
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    69
1977
4303409f3d8e remove uneeded trailing ';'
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents: 1964
diff changeset
    70
} // namespace ns3
1904
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    71
c0cfe985f973 build MacParameters
Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
parents:
diff changeset
    72
#endif /* MAC_PARAMETERS_H */