A Discrete-Event Network Simulator
API
wifi-tx-vector.cc
Go to the documentation of this file.
1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2010 CTTC
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: Nicola Baldo <nbaldo@cttc.es>
19  * Ghada Badawy <gbadawy@gmail.com>
20  */
21 
22 #include "ns3/wifi-tx-vector.h"
23 #include "ns3/fatal-error.h"
24 
25 namespace ns3 {
26 
28  : m_retries (0),
29  m_channelWidth (20),
30  m_shortGuardInterval (false),
31  m_nss (1),
32  m_ness (0),
33  m_aggregation (false),
34  m_stbc (false),
35  m_modeInitialized (false),
36  m_txPowerLevelInitialized (false)
37 {
38 }
39 
40 WifiTxVector::WifiTxVector (WifiMode mode, uint8_t powerLevel, uint8_t retries,
41  bool shortGuardInterval, uint8_t nss, uint8_t ness,
42  uint32_t channelWidth, bool aggregation, bool stbc)
43  : m_mode (mode),
44  m_txPowerLevel (powerLevel),
45  m_retries (retries),
46  m_channelWidth (channelWidth),
47  m_shortGuardInterval (shortGuardInterval),
48  m_nss (nss),
49  m_ness (ness),
50  m_aggregation (aggregation),
51  m_stbc (stbc),
52  m_modeInitialized (true),
53  m_txPowerLevelInitialized (true)
54 {
55 }
56 
59 {
60  if (!m_modeInitialized)
61  {
62  NS_FATAL_ERROR ("WifiTxVector mode must be set before using");
63  }
64  return m_mode;
65 }
66 
67 uint8_t
69 {
71  {
72  NS_FATAL_ERROR ("WifiTxVector txPowerLevel must be set before using");
73  }
74  return m_txPowerLevel;
75 }
76 
77 uint8_t
79 {
80  return m_retries;
81 }
82 
83 uint32_t
85 {
86  return m_channelWidth;
87 }
88 
89 bool
91 {
92  return m_shortGuardInterval;
93 }
94 
95 uint8_t
97 {
98  return m_nss;
99 }
100 
101 uint8_t
103 {
104  return m_ness;
105 }
106 
107 bool
109 {
110  return m_aggregation;
111 }
112 
113 bool
115 {
116  return m_stbc;
117 }
118 
119 void
121 {
122  m_mode = mode;
123  m_modeInitialized = true;
124 }
125 
126 void
127 WifiTxVector::SetTxPowerLevel (uint8_t powerlevel)
128 {
129  m_txPowerLevel = powerlevel;
131 }
132 
133 void
134 WifiTxVector::SetRetries (uint8_t retries)
135 {
136  m_retries = retries;
137 }
138 
139 void
140 WifiTxVector::SetChannelWidth (uint32_t channelWidth)
141 {
142  m_channelWidth = channelWidth;
143 }
144 
145 void
147 {
148  m_shortGuardInterval = guardinterval;
149 }
150 
151 void
152 WifiTxVector::SetNss (uint8_t nss)
153 {
154  m_nss = nss;
155 }
156 
157 void
158 WifiTxVector::SetNess (uint8_t ness)
159 {
160  m_ness = ness;
161 }
162 
163 void
165 {
166  m_aggregation = aggregation;
167 }
168 
169 void
171 {
172  m_stbc = stbc;
173 }
174 
175 std::ostream & operator << ( std::ostream &os, const WifiTxVector &v)
176 {
177  os << "mode: " << v.GetMode () <<
178  " txpwrlvl: " << (uint32_t)v.GetTxPowerLevel () <<
179  " retries: " << (uint32_t)v.GetRetries () <<
180  " channel width: " << v.GetChannelWidth () <<
181  " Short GI: " << v.IsShortGuardInterval () <<
182  " Nss: " << (uint32_t)v.GetNss () <<
183  " Ness: " << (uint32_t)v.GetNess () <<
184  " MPDU aggregation: " << v.IsAggregation () <<
185  " STBC: " << v.IsStbc ();
186  return os;
187 }
188 
189 } //namespace ns3
void SetShortGuardInterval(bool guardinterval)
Sets if short gurad interval is being used.
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
bool IsAggregation(void) const
Checks whether the PSDU contains A-MPDU.
bool m_shortGuardInterval
true if short GI is going to be used
void SetStbc(bool stbc)
Sets if STBC is being used.
bool IsShortGuardInterval(void) const
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
Definition: fatal-error.h:162
represent a single transmission modeA WifiMode is implemented by a single integer which is used to lo...
Definition: wifi-mode.h:99
uint8_t GetTxPowerLevel(void) const
void SetChannelWidth(uint32_t channelWidth)
Sets the selected channelWidth (in MHz)
uint8_t m_nss
number of streams
uint8_t GetNess(void) const
uint32_t m_channelWidth
channel width in MHz
uint32_t GetChannelWidth(void) const
bool IsStbc(void) const
Check if STBC is used or not.
uint8_t m_retries
The DATA_RETRIES/RTS_RETRIES parameter for Click radiotap information.
void SetNss(uint8_t nss)
Sets the number of Nss refer to IEEE 802.11n Table 20-28 for explanation and range.
std::ostream & operator<<(std::ostream &os, const Angles &a)
print a struct Angles to output
Definition: angles.cc:42
Every class exported by the ns3 library is enclosed in the ns3 namespace.
void SetAggregation(bool aggregation)
Sets if PSDU contains A-MPDU.
void SetTxPowerLevel(uint8_t powerlevel)
Sets the selected transmission power level.
bool m_stbc
Flag whether the PSDU contains A-MPDU.
void SetMode(WifiMode mode)
Sets the selected payload transmission mode.
uint8_t GetNss(void) const
void SetNess(uint8_t ness)
Sets the Ness number refer to IEEE 802.11n Table 20-6 for explanation.
void SetRetries(uint8_t retries)
Sets the number of retries.
uint8_t GetRetries(void) const
uint8_t m_ness
number of streams in beamforming
WifiMode GetMode(void) const
uint8_t m_txPowerLevel
The TXPWR_LEVEL parameter in Table 15-4.
WifiMode m_mode
The DATARATE parameter in Table 15-4.