A Discrete-Event Network Simulator
API
vht-ppdu.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2019 Orange Labs
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation;
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program; if not, write to the Free Software
15 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 *
17 * Author: Rediet <getachew.redieteab@orange.com>
18 * Muhammad Iqbal Rochman <muhiqbalcr@uchicago.edu>
19 * Sébastien Deronne <sebastien.deronne@gmail.com> (VhtSigHeader)
20 */
21
22#ifndef VHT_PPDU_H
23#define VHT_PPDU_H
24
25#include "ns3/ofdm-ppdu.h"
26
33namespace ns3
34{
35
36class WifiPsdu;
37
44class VhtPpdu : public OfdmPpdu
45{
46 public:
51 class VhtSigHeader : public Header
52 {
53 public:
55
60 static TypeId GetTypeId();
61
62 TypeId GetInstanceTypeId() const override;
63 void Print(std::ostream& os) const override;
64 uint32_t GetSerializedSize() const override;
65 void Serialize(Buffer::Iterator start) const override;
67
73 void SetMuFlag(bool mu);
74
80 void SetChannelWidth(uint16_t channelWidth);
86 uint16_t GetChannelWidth() const;
92 void SetNStreams(uint8_t nStreams);
98 uint8_t GetNStreams() const;
99
105 void SetShortGuardInterval(bool sgi);
111 bool GetShortGuardInterval() const;
117 void SetShortGuardIntervalDisambiguation(bool disambiguation);
129 void SetSuMcs(uint8_t mcs);
135 uint8_t GetSuMcs() const;
136
137 private:
138 // VHT-SIG-A1 fields
139 uint8_t m_bw;
140 uint8_t m_nsts;
141
142 // VHT-SIG-A2 fields
143 uint8_t m_sgi;
145 uint8_t m_suMcs;
146
148 bool m_mu;
149 }; // class VhtSigHeader
150
162 const WifiTxVector& txVector,
163 uint16_t txCenterFreq,
164 Time ppduDuration,
165 WifiPhyBand band,
166 uint64_t uid);
167
168 Time GetTxDuration() const override;
169 Ptr<WifiPpdu> Copy() const override;
170 WifiPpduType GetType() const override;
171
172 private:
173 WifiTxVector DoGetTxVector() const override;
174
181 virtual void SetPhyHeaders(const WifiTxVector& txVector, Time ppduDuration);
182
189 virtual void SetLSigHeader(LSigHeader& lSig, Time ppduDuration) const;
190
198 void SetVhtSigHeader(VhtSigHeader& vhtSig,
199 const WifiTxVector& txVector,
200 Time ppduDuration) const;
201
210 const LSigHeader& lSig,
211 const VhtSigHeader& vhtSig) const;
212
213#ifndef NS3_BUILD_PROFILE_DEBUG
214 VhtSigHeader m_vhtSig;
215#endif
216}; // class VhtPpdu
217
218} // namespace ns3
219
220#endif /* VHT_PPDU_H */
iterator in a Buffer instance
Definition: buffer.h:100
Protocol header serialization and deserialization.
Definition: header.h:44
OFDM and ERP OFDM L-SIG PHY header.
Definition: ofdm-ppdu.h:55
OFDM PPDU (11a)
Definition: ofdm-ppdu.h:48
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:105
a unique identifier for an interface.
Definition: type-id.h:59
VHT PHY header (VHT-SIG-A1/A2/B).
Definition: vht-ppdu.h:52
uint8_t m_suMcs
SU VHT MCS.
Definition: vht-ppdu.h:145
bool m_mu
This is used to decide whether MU SIG-B should be added or not.
Definition: vht-ppdu.h:148
static TypeId GetTypeId()
Get the type ID.
Definition: vht-ppdu.cc:207
void SetNStreams(uint8_t nStreams)
Fill the number of streams field of VHT-SIG-A1.
Definition: vht-ppdu.cc:291
void SetChannelWidth(uint16_t channelWidth)
Fill the channel width field of VHT-SIG-A1 (in MHz).
Definition: vht-ppdu.cc:249
uint16_t GetChannelWidth() const
Return the channel width (in MHz).
Definition: vht-ppdu.cc:270
TypeId GetInstanceTypeId() const override
Get the most derived TypeId for this Object.
Definition: vht-ppdu.cc:217
uint32_t Deserialize(Buffer::Iterator start) override
Definition: vht-ppdu.cc:367
uint8_t GetSuMcs() const
Return the SU VHT MCS field of VHT-SIG-A2.
Definition: vht-ppdu.cc:335
uint8_t GetNStreams() const
Return the number of streams.
Definition: vht-ppdu.cc:298
bool GetShortGuardInterval() const
Return the short GI field of VHT-SIG-A2.
Definition: vht-ppdu.cc:310
uint8_t m_sgi_disambiguation
Short GI NSYM Disambiguation.
Definition: vht-ppdu.h:144
void Serialize(Buffer::Iterator start) const override
Definition: vht-ppdu.cc:341
void SetMuFlag(bool mu)
Set the Multi-User (MU) flag.
Definition: vht-ppdu.cc:243
uint8_t m_sgi
Short GI.
Definition: vht-ppdu.h:143
void SetSuMcs(uint8_t mcs)
Fill the SU VHT MCS field of VHT-SIG-A2.
Definition: vht-ppdu.cc:328
void SetShortGuardIntervalDisambiguation(bool disambiguation)
Fill the short GI NSYM disambiguation field of VHT-SIG-A2.
Definition: vht-ppdu.cc:316
bool GetShortGuardIntervalDisambiguation() const
Return the short GI NSYM disambiguation field of VHT-SIG-A2.
Definition: vht-ppdu.cc:322
uint32_t GetSerializedSize() const override
Definition: vht-ppdu.cc:230
void SetShortGuardInterval(bool sgi)
Fill the short guard interval field of VHT-SIG-A2.
Definition: vht-ppdu.cc:304
void Print(std::ostream &os) const override
Definition: vht-ppdu.cc:223
VHT PPDU (11ac)
Definition: vht-ppdu.h:45
virtual void SetPhyHeaders(const WifiTxVector &txVector, Time ppduDuration)
Fill in the PHY headers.
Definition: vht-ppdu.cc:53
VhtPpdu(Ptr< const WifiPsdu > psdu, const WifiTxVector &txVector, uint16_t txCenterFreq, Time ppduDuration, WifiPhyBand band, uint64_t uid)
Create a VHT PPDU.
Definition: vht-ppdu.cc:35
WifiPpduType GetType() const override
Return the PPDU type (.
Definition: vht-ppdu.cc:191
WifiTxVector DoGetTxVector() const override
Get the TXVECTOR used to send the PPDU.
Definition: vht-ppdu.cc:104
void SetTxVectorFromPhyHeaders(WifiTxVector &txVector, const LSigHeader &lSig, const VhtSigHeader &vhtSig) const
Fill in the TXVECTOR from PHY headers.
Definition: vht-ppdu.cc:133
void SetVhtSigHeader(VhtSigHeader &vhtSig, const WifiTxVector &txVector, Time ppduDuration) const
Fill in the VHT-SIG header.
Definition: vht-ppdu.cc:83
Time GetTxDuration() const override
Get the total transmission duration of the PPDU.
Definition: vht-ppdu.cc:145
Ptr< WifiPpdu > Copy() const override
Copy this instance.
Definition: vht-ppdu.cc:185
virtual void SetLSigHeader(LSigHeader &lSig, Time ppduDuration) const
Fill in the L-SIG header.
Definition: vht-ppdu.cc:73
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
WifiPhyBand
Identifies the PHY band.
Definition: wifi-phy-band.h:33
WifiPpduType
The type of PPDU (SU, DL MU, or UL MU)
Every class exported by the ns3 library is enclosed in the ns3 namespace.