A Discrete-Event Network Simulator
API
wifi-ppdu.h
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2019 Orange Labs
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  * Author: Rediet <getachew.redieteab@orange.com>
19  */
20 
21 #ifndef WIFI_PPDU_H
22 #define WIFI_PPDU_H
23 
24 #include "wifi-tx-vector.h"
25 #include "ns3/nstime.h"
26 #include <list>
27 #include <unordered_map>
28 
36 namespace ns3 {
37 
38 class WifiPsdu;
39 
43 typedef std::unordered_map <uint16_t /* STA-ID */, Ptr<const WifiPsdu> /* PSDU */> WifiConstPsduMap;
44 
51 class WifiPpdu : public SimpleRefCount<WifiPpdu>
52 {
53 public:
61  WifiPpdu (Ptr<const WifiPsdu> psdu, const WifiTxVector& txVector, uint64_t uid = UINT64_MAX);
69  WifiPpdu (const WifiConstPsduMap & psdus, const WifiTxVector& txVector, uint64_t uid);
73  virtual ~WifiPpdu ();
74 
80  WifiTxVector GetTxVector (void) const;
81 
87  Ptr<const WifiPsdu> GetPsdu (void) const;
88 
92  bool IsTruncatedTx (void) const;
93 
97  void SetTruncatedTx (void);
98 
106  virtual Time GetTxDuration (void) const;
107 
112  WifiModulationClass GetModulation (void) const;
113 
118  uint64_t GetUid (void) const;
119 
124  WifiPreamble GetPreamble (void) const;
125 
130  void Print (std::ostream &os) const;
135  virtual Ptr<WifiPpdu> Copy (void) const;
136 
141  virtual WifiPpduType GetType (void) const;
142 
148  virtual uint16_t GetStaId (void) const;
149 
150 protected:
155  virtual std::string PrintPayload (void) const;
156 
160  uint64_t m_uid;
161 
162 private:
170  virtual WifiTxVector DoGetTxVector (void) const;
171 
173  uint8_t m_txPowerLevel;
174  uint8_t m_txAntennas;
175 }; //class WifiPpdu
176 
184 std::ostream& operator<< (std::ostream& os, const Ptr<const WifiPpdu> &ppdu);
185 
193 std::ostream & operator << (std::ostream &os, const WifiConstPsduMap &psdus);
194 
195 } //namespace ns3
196 
197 #endif /* WIFI_PPDU_H */
WifiModulationClass
This enumeration defines the modulation classes per (Table 10-6 "Modulation classes"; IEEE 802...
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:103
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
uint64_t GetUid(void) const
Get the UID of the PPDU.
Definition: wifi-ppdu.cc:104
virtual uint16_t GetStaId(void) const
Get the ID of the STA that transmitted the PPDU for UL MU, SU_STA_ID otherwise.
Definition: wifi-ppdu.cc:122
Ptr< const WifiPsdu > GetPsdu(void) const
Get the payload of the PPDU.
Definition: wifi-ppdu.cc:79
void SetTruncatedTx(void)
Indicate that the PPDU&#39;s transmission was aborted due to transmitter switch off.
Definition: wifi-ppdu.cc:91
WifiPpdu(Ptr< const WifiPsdu > psdu, const WifiTxVector &txVector, uint64_t uid=UINT64_MAX)
Create a PPDU storing a PSDU.
Definition: wifi-ppdu.cc:30
WifiTxVector GetTxVector(void) const
Get the TXVECTOR used to send the PPDU.
Definition: wifi-ppdu.cc:63
uint64_t m_uid
the unique ID of this PPDU
Definition: wifi-ppdu.h:160
virtual WifiTxVector DoGetTxVector(void) const
Get the TXVECTOR used to send the PPDU.
Definition: wifi-ppdu.cc:72
WifiModulationClass GetModulation(void) const
Get the modulation used for the PPDU.
Definition: wifi-ppdu.cc:98
std::ostream & operator<<(std::ostream &os, const Angles &a)
Definition: angles.cc:137
WifiPreamble GetPreamble(void) const
Get the preamble of the PPDU.
Definition: wifi-ppdu.cc:110
WifiPreamble
The type of preamble to be used by an IEEE 802.11 transmission.
uint8_t m_txAntennas
the number of antennas used to transmit this PPDU
Definition: wifi-ppdu.h:174
virtual Time GetTxDuration(void) const
Get the total transmission duration of the PPDU.
Definition: wifi-ppdu.cc:128
void Print(std::ostream &os) const
Print the PPDU contents.
Definition: wifi-ppdu.cc:135
WifiPreamble m_preamble
the PHY preamble
Definition: wifi-ppdu.h:157
WifiPpdu stores a preamble, a modulation class, PHY headers and a PSDU.
Definition: wifi-ppdu.h:51
bool IsTruncatedTx(void) const
Definition: wifi-ppdu.cc:85
Every class exported by the ns3 library is enclosed in the ns3 namespace.
virtual ~WifiPpdu()
Destructor for WifiPpdu.
Definition: wifi-ppdu.cc:53
WifiPpduType
The type of PPDU (SU, DL MU, or UL MU)
uint8_t m_txPowerLevel
the transmission power level (used only for TX and initializing the returned WifiTxVector) ...
Definition: wifi-ppdu.h:173
bool m_truncatedTx
flag indicating whether the frame&#39;s transmission was aborted due to transmitter switch off ...
Definition: wifi-ppdu.h:172
WifiConstPsduMap m_psdus
the PSDUs contained in this PPDU
Definition: wifi-ppdu.h:159
virtual Ptr< WifiPpdu > Copy(void) const
Copy this instance.
Definition: wifi-ppdu.cc:154
A template-based reference counting class.
WifiModulationClass m_modulation
the modulation used for the transmission of this PPDU
Definition: wifi-ppdu.h:158
std::unordered_map< uint16_t, Ptr< const WifiPsdu > > WifiConstPsduMap
Map of const PSDUs indexed by STA-ID.
virtual WifiPpduType GetType(void) const
Return the PPDU type (.
Definition: wifi-ppdu.cc:116
virtual std::string PrintPayload(void) const
Print the payload of the PPDU.
Definition: wifi-ppdu.cc:146