A Discrete-Event Network Simulator
API
wifi-mode.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2005,2006,2007 INRIA
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2 as
7  * published by the Free Software Foundation;
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17  *
18  * Authors: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
19  * Sébastien Deronne <sebastien.deronne@gmail.com>
20  */
21 
22 #ifndef WIFI_MODE_H
23 #define WIFI_MODE_H
24 
25 #include <vector>
26 #include "ns3/attribute-helper.h"
27 
28 namespace ns3 {
29 
30 class WifiTxVector;
31 
37 {
63 };
64 
73 {
84 };
85 
97 class WifiMode
98 {
99 public:
106  bool IsAllowed (uint8_t channelWidth, uint8_t nss) const;
118  uint64_t GetPhyRate (uint8_t channelWidth, uint16_t guardInterval, uint8_t nss) const;
127  uint64_t GetPhyRate (WifiTxVector txVector) const;
136  uint64_t GetDataRate (uint8_t channelWidth, uint16_t guardInterval, uint8_t nss) const;
142  uint64_t GetDataRate (WifiTxVector txVector) const;
148  uint64_t GetDataRate (uint8_t channelWidth) const;
149 
153  WifiCodeRate GetCodeRate (void) const;
157  uint16_t GetConstellationSize (void) const;
161  uint8_t GetMcsValue (void) const;
166  std::string GetUniqueName (void) const;
171  bool IsMandatory (void) const;
179  uint32_t GetUid (void) const;
194  uint64_t GetNonHtReferenceRate (void) const;
200  bool IsHigherCodeRate (WifiMode mode) const;
206  bool IsHigherDataRate (WifiMode mode) const;
207 
214  WifiMode ();
221  WifiMode (std::string name);
222 
223 
224 private:
226  friend class WifiModeFactory;
228  friend class WifiPhyTag; // access the UID-based constructor
234  WifiMode (uint32_t uid);
235  uint32_t m_uid;
236 };
237 
239 bool operator == (const WifiMode &a, const WifiMode &b);
240 std::ostream & operator << (std::ostream & os, const WifiMode &mode);
241 std::istream & operator >> (std::istream &is, WifiMode &mode);
242 
244 
251 typedef std::vector<WifiMode> WifiModeList;
255 typedef WifiModeList::const_iterator WifiModeListIterator;
256 
264 {
265 public:
282  static WifiMode CreateWifiMode (std::string uniqueName,
283  WifiModulationClass modClass,
284  bool isMandatory,
285  WifiCodeRate codingRate,
286  uint16_t constellationSize);
287 
298  static WifiMode CreateWifiMcs (std::string uniqueName,
299  uint8_t mcsValue,
300  WifiModulationClass modClass);
301 
302 
303 private:
305  friend class WifiMode;
306  friend std::istream & operator >> (std::istream &is, WifiMode &mode);
307 
313  static WifiModeFactory* GetFactory ();
314  WifiModeFactory ();
315 
322  {
323  std::string uniqueUid;
325  uint16_t constellationSize;
327  bool isMandatory;
328  uint8_t mcsValue;
329  };
330 
338  WifiMode Search (std::string name) const;
346  uint32_t AllocateUid (std::string uniqueUid);
354  WifiModeItem* Get (uint32_t uid);
355 
359  typedef std::vector<WifiModeItem> WifiModeItemList;
360  WifiModeItemList m_itemList;
361 };
362 
363 } //namespace ns3
364 
365 #endif /* WIFI_MODE_H */
std::istream & operator>>(std::istream &is, Angles &a)
initialize a struct Angles from input
Definition: angles.cc:48
WifiMode()
Create an invalid WifiMode.
Definition: wifi-mode.cc:659
ERP-OFDM PHY (19.5)
Definition: wifi-mode.h:54
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
WifiCodeRate
This enumeration defines the various convolutional coding rates used for the OFDM transmission modes ...
Definition: wifi-mode.h:72
DSSS-OFDM PHY (19.7)
Definition: wifi-mode.h:52
WifiCodeRate codingRate
coding rate
Definition: wifi-mode.h:326
VHT PHY (Clause 22)
Definition: wifi-mode.h:60
HR/DSSS PHY (Clause 18)
Definition: wifi-mode.h:48
ERP-PBCC PHY (19.6)
Definition: wifi-mode.h:50
represent a single transmission modeA WifiMode is implemented by a single integer which is used to lo...
Definition: wifi-mode.h:97
bool IsMandatory(void) const
Definition: wifi-mode.cc:458
Modulation class unknown or unspecified.
Definition: wifi-mode.h:40
Frequency-hopping spread spectrum (FHSS) PHY (Clause 14)
Definition: wifi-mode.h:44
uint16_t GetConstellationSize(void) const
Definition: wifi-mode.cc:393
bool IsHigherDataRate(WifiMode mode) const
Definition: wifi-mode.cc:602
static WifiMode CreateWifiMode(std::string uniqueName, WifiModulationClass modClass, bool isMandatory, WifiCodeRate codingRate, uint16_t constellationSize)
Definition: wifi-mode.cc:681
uint32_t m_uid
UID.
Definition: wifi-mode.h:235
uint64_t GetDataRate(uint8_t channelWidth, uint16_t guardInterval, uint8_t nss) const
Definition: wifi-mode.cc:143
HT PHY (Clause 20)
Definition: wifi-mode.h:58
uint8_t GetMcsValue(void) const
Definition: wifi-mode.cc:465
std::string GetUniqueName(void) const
Definition: wifi-mode.cc:450
WifiModeItemList m_itemList
item list
Definition: wifi-mode.h:360
WifiModulationClass modClass
modulation class
Definition: wifi-mode.h:324
std::ostream & operator<<(std::ostream &os, const Angles &a)
print a struct Angles to output
Definition: angles.cc:42
Infrared (IR) (Clause 16)
Definition: wifi-mode.h:42
Every class exported by the ns3 library is enclosed in the ns3 namespace.
WifiModeList::const_iterator WifiModeListIterator
An iterator for WifiModeList vector.
Definition: wifi-mode.h:255
bool IsAllowed(uint8_t channelWidth, uint8_t nss) const
Definition: wifi-mode.cc:72
std::vector< WifiMode > WifiModeList
In various parts of the code, folk are interested in maintaining a list of transmission modes...
Definition: wifi-mode.h:251
uint16_t constellationSize
constellation size
Definition: wifi-mode.h:325
uint64_t GetNonHtReferenceRate(void) const
Definition: wifi-mode.cc:494
No explicit coding (e.g., DSSS rates)
Definition: wifi-mode.h:75
create WifiMode class instances and keep track of them.
Definition: wifi-mode.h:263
WifiModulationClass
This enumeration defines the modulation classes per (Table 9-4 "Modulation classes"; IEEE 802...
Definition: wifi-mode.h:36
uint64_t GetPhyRate(uint8_t channelWidth, uint16_t guardInterval, uint8_t nss) const
Definition: wifi-mode.cc:96
bool IsHigherCodeRate(WifiMode mode) const
Definition: wifi-mode.cc:582
OFDM PHY (Clause 17)
Definition: wifi-mode.h:56
bool operator==(const EventId &a, const EventId &b)
Definition: event-id.h:135
Tag for WifiTxVector and WifiPreamble information to be embedded in outgoing transmissions as a Packe...
Definition: wifi-phy-tag.h:35
static WifiModeFactory * GetFactory()
Return a WifiModeFactory.
Definition: wifi-mode.cc:802
uint32_t AllocateUid(std::string uniqueUid)
Allocate a WifiModeItem from a given uniqueUid.
Definition: wifi-mode.cc:777
uint32_t GetUid(void) const
Definition: wifi-mode.cc:481
WifiModulationClass GetModulationClass() const
Definition: wifi-mode.cc:487
std::vector< WifiModeItem > WifiModeItemList
typedef for a vector of WifiModeItem.
Definition: wifi-mode.h:359
WifiModeItem * Get(uint32_t uid)
Return a WifiModeItem at the given uid index.
Definition: wifi-mode.cc:795
static WifiMode CreateWifiMcs(std::string uniqueName, uint8_t mcsValue, WifiModulationClass modClass)
Definition: wifi-mode.cc:719
bool isMandatory
flag to indicate whether this mode is mandatory
Definition: wifi-mode.h:327
friend std::istream & operator>>(std::istream &is, WifiMode &mode)
Serialize WifiMode from istream (human-readable).
Definition: wifi-mode.cc:63
#define ATTRIBUTE_HELPER_HEADER(type)
Declare the attribute value, accessor and checkers for class type.
WifiCodeRate GetCodeRate(void) const
Definition: wifi-mode.cc:317
HE PHY (Clause 26)
Definition: wifi-mode.h:62
This is the data associated to a unique WifiMode.
Definition: wifi-mode.h:321
DSSS PHY (Clause 15)
Definition: wifi-mode.h:46
WifiMode Search(std::string name) const
Search and return WifiMode from a given name.
Definition: wifi-mode.cc:742
std::string uniqueUid
unique UID
Definition: wifi-mode.h:323