A Discrete-Event Network Simulator
API
wifi-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 */
19
20#ifndef WIFI_PPDU_H
21#define WIFI_PPDU_H
22
23#include "wifi-tx-vector.h"
24
25#include "ns3/nstime.h"
26
27#include <list>
28#include <unordered_map>
29
37namespace ns3
38{
39
40class WifiPsdu;
41
45typedef std::unordered_map<uint16_t /* STA-ID */, Ptr<const WifiPsdu> /* PSDU */> WifiConstPsduMap;
46
53class WifiPpdu : public SimpleRefCount<WifiPpdu>
54{
55 public:
65 const WifiTxVector& txVector,
66 uint16_t txCenterFreq,
67 uint64_t uid = UINT64_MAX);
76 WifiPpdu(const WifiConstPsduMap& psdus,
77 const WifiTxVector& txVector,
78 uint16_t txCenterFreq,
79 uint64_t uid);
83 virtual ~WifiPpdu();
84
91
98
102 bool IsTruncatedTx() const;
103
107 void SetTruncatedTx();
108
114 virtual Time GetTxDuration() const;
115
122 virtual uint16_t GetTransmissionChannelWidth() const;
123
131 bool DoesOverlapChannel(uint16_t minFreq, uint16_t maxFreq) const;
132
142 virtual bool CanBeReceived(uint16_t p20MinFreq, uint16_t p20MaxFreq) const;
143
149
154 uint64_t GetUid() const;
155
161
166 void Print(std::ostream& os) const;
171 virtual Ptr<WifiPpdu> Copy() const;
172
177 virtual WifiPpduType GetType() const;
178
184 virtual uint16_t GetStaId() const;
185
186 protected:
191 virtual std::string PrintPayload() const;
192
196 uint16_t m_txCenterFreq;
197 uint64_t m_uid;
198
199 private:
205 virtual WifiTxVector DoGetTxVector() const;
206
211 uint8_t m_txAntennas;
212}; // class WifiPpdu
213
221std::ostream& operator<<(std::ostream& os, const Ptr<const WifiPpdu>& ppdu);
222
230std::ostream& operator<<(std::ostream& os, const WifiConstPsduMap& psdus);
231
232} // namespace ns3
233
234#endif /* WIFI_PPDU_H */
A template-based reference counting class.
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:105
WifiPpdu stores a preamble, a modulation class, PHY headers and a PSDU.
Definition: wifi-ppdu.h:54
void Print(std::ostream &os) const
Print the PPDU contents.
Definition: wifi-ppdu.cc:210
virtual Time GetTxDuration() const
Get the total transmission duration of the PPDU.
Definition: wifi-ppdu.cc:202
bool IsTruncatedTx() const
Definition: wifi-ppdu.cc:97
WifiPreamble GetPreamble() const
Get the preamble of the PPDU.
Definition: wifi-ppdu.cc:184
virtual uint16_t GetStaId() const
Get the ID of the STA that transmitted the PPDU for UL MU, SU_STA_ID otherwise.
Definition: wifi-ppdu.cc:196
virtual bool CanBeReceived(uint16_t p20MinFreq, uint16_t p20MaxFreq) const
Check whether the given PPDU can be received on the specified primary channel.
Definition: wifi-ppdu.cc:165
uint16_t m_txCenterFreq
the center frequency (MHz) used for the transmission of this PPDU
Definition: wifi-ppdu.h:196
virtual WifiPpduType GetType() const
Return the PPDU type (.
Definition: wifi-ppdu.cc:190
WifiModulationClass m_modulation
the modulation used for the transmission of this PPDU
Definition: wifi-ppdu.h:194
WifiPreamble m_preamble
the PHY preamble
Definition: wifi-ppdu.h:193
virtual ~WifiPpdu()
Destructor for WifiPpdu.
Definition: wifi-ppdu.cc:64
Ptr< const WifiPsdu > GetPsdu() const
Get the payload of the PPDU.
Definition: wifi-ppdu.cc:91
virtual WifiTxVector DoGetTxVector() const
Get the TXVECTOR used to send the PPDU.
Definition: wifi-ppdu.cc:83
uint64_t m_uid
the unique ID of this PPDU
Definition: wifi-ppdu.h:197
void SetTruncatedTx()
Indicate that the PPDU's transmission was aborted due to transmitter switch off.
Definition: wifi-ppdu.cc:103
WifiPpdu(Ptr< const WifiPsdu > psdu, const WifiTxVector &txVector, uint16_t txCenterFreq, uint64_t uid=UINT64_MAX)
Create a PPDU storing a PSDU.
Definition: wifi-ppdu.cc:32
uint64_t GetUid() const
Get the UID of the PPDU.
Definition: wifi-ppdu.cc:178
WifiModulationClass GetModulation() const
Get the modulation used for the PPDU.
Definition: wifi-ppdu.cc:110
virtual uint16_t GetTransmissionChannelWidth() const
Get the channel width over which the PPDU will effectively be transmitted.
Definition: wifi-ppdu.cc:116
WifiConstPsduMap m_psdus
the PSDUs contained in this PPDU
Definition: wifi-ppdu.h:195
WifiTxVector GetTxVector() const
Get the TXVECTOR used to send the PPDU.
Definition: wifi-ppdu.cc:74
virtual std::string PrintPayload() const
Print the payload of the PPDU.
Definition: wifi-ppdu.cc:218
uint8_t m_txAntennas
the number of antennas used to transmit this PPDU
Definition: wifi-ppdu.h:211
bool DoesOverlapChannel(uint16_t minFreq, uint16_t maxFreq) const
Check whether the given PPDU overlaps a given channel.
Definition: wifi-ppdu.cc:122
uint8_t m_txPowerLevel
the transmission power level (used only for TX and initializing the returned WifiTxVector)
Definition: wifi-ppdu.h:209
virtual Ptr< WifiPpdu > Copy() const
Copy this instance.
Definition: wifi-ppdu.cc:226
bool m_truncatedTx
flag indicating whether the frame's transmission was aborted due to transmitter switch off
Definition: wifi-ppdu.h:207
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
WifiPreamble
The type of preamble to be used by an IEEE 802.11 transmission.
WifiPpduType
The type of PPDU (SU, DL MU, or UL MU)
WifiModulationClass
This enumeration defines the modulation classes per (Table 10-6 "Modulation classes"; IEEE 802....
Every class exported by the ns3 library is enclosed in the ns3 namespace.
std::unordered_map< uint16_t, Ptr< const WifiPsdu > > WifiConstPsduMap
Map of const PSDUs indexed by STA-ID.
std::ostream & operator<<(std::ostream &os, const Angles &a)
Definition: angles.cc:129