A Discrete-Event Network Simulator
API
wifi-tx-vector.h
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 #ifndef WIFI_TX_VECTOR_H
23 #define WIFI_TX_VECTOR_H
24 
25 #include <list>
26 #include "wifi-mode.h"
27 #include "wifi-phy-common.h"
28 #include "ns3/he-ru.h"
29 
30 namespace ns3 {
31 
34 {
37  uint8_t nss;
38 };
39 
71 {
72 public:
74  typedef std::map <uint16_t /* staId */, HeMuUserInfo /* HE MU specific user info */> HeMuUserInfoMap;
75 
76  WifiTxVector ();
77  ~WifiTxVector ();
95  WifiTxVector (WifiMode mode,
96  uint8_t powerLevel,
97  WifiPreamble preamble,
98  uint16_t guardInterval,
99  uint8_t nTx,
100  uint8_t nss,
101  uint8_t ness,
102  uint16_t channelWidth,
103  bool aggregation,
104  bool stbc = false,
105  bool ldpc = false,
106  uint8_t bssColor = 0,
107  uint16_t length = 0);
112  WifiTxVector (const WifiTxVector& txVector);
113 
117  bool GetModeInitialized (void) const;
127  WifiMode GetMode (uint16_t staId = SU_STA_ID) const;
133  void SetMode (WifiMode mode);
140  void SetMode (WifiMode mode, uint16_t staId);
141 
148 
152  uint8_t GetTxPowerLevel (void) const;
158  void SetTxPowerLevel (uint8_t powerlevel);
162  WifiPreamble GetPreambleType (void) const;
168  void SetPreambleType (WifiPreamble preamble);
172  uint16_t GetChannelWidth (void) const;
178  void SetChannelWidth (uint16_t channelWidth);
182  uint16_t GetGuardInterval (void) const;
188  void SetGuardInterval (uint16_t guardInterval);
192  uint8_t GetNTx (void) const;
198  void SetNTx (uint8_t nTx);
208  uint8_t GetNss (uint16_t staId = SU_STA_ID) const;
212  uint8_t GetNssMax (void) const;
218  void SetNss (uint8_t nss);
225  void SetNss (uint8_t nss, uint16_t staId);
229  uint8_t GetNess (void) const;
235  void SetNess (uint8_t ness);
241  bool IsAggregation (void) const;
247  void SetAggregation (bool aggregation);
254  bool IsStbc (void) const;
260  void SetStbc (bool stbc);
267  bool IsLdpc (void) const;
273  void SetLdpc (bool ldpc);
278  void SetBssColor (uint8_t color);
283  uint8_t GetBssColor (void) const;
288  void SetLength (uint16_t length);
293  uint16_t GetLength (void) const;
301  bool IsValid (void) const;
307  bool IsMu (void) const;
313  bool IsDlMu (void) const;
319  bool IsUlMu (void) const;
327  HeRu::RuSpec GetRu (uint16_t staId) const;
335  void SetRu (HeRu::RuSpec ru, uint16_t staId);
343  HeMuUserInfo GetHeMuUserInfo (uint16_t staId) const;
351  void SetHeMuUserInfo (uint16_t staId, HeMuUserInfo userInfo);
358  const HeMuUserInfoMap& GetHeMuUserInfoMap (void) const;
374  std::pair<std::size_t, std::size_t> GetNumRusPerHeSigBContentChannel (void) const;
375 
376 
377 private:
381  uint8_t m_txPowerLevel;
385  uint16_t m_channelWidth;
386  uint16_t m_guardInterval;
387  uint8_t m_nTx;
388  uint8_t m_nss;
389  uint8_t m_ness;
391  bool m_stbc;
392  bool m_ldpc;
393  uint8_t m_bssColor;
394  uint16_t m_length;
398  //MU information
403 };
404 
413 std::ostream & operator << (std::ostream & os,const WifiTxVector &v);
414 
415 } //namespace ns3
416 
417 #endif /* WIFI_TX_VECTOR_H */
uint16_t m_channelWidth
channel width in MHz
WifiModulationClass
This enumeration defines the modulation classes per (Table 10-6 "Modulation classes"; IEEE 802...
uint8_t GetNssMax(void) const
bool IsAggregation(void) const
Checks whether the PSDU contains A-MPDU.
uint8_t m_nTx
number of TX antennas
RU Specification.
Definition: he-ru.h:67
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
void SetChannelWidth(uint16_t channelWidth)
Sets the selected channelWidth (in MHz)
uint8_t nss
number of spatial streams
bool m_ldpc
LDPC FEC coding if true, BCC otherwise.
void SetBssColor(uint8_t color)
Set the BSS color.
std::map< uint16_t, HeMuUserInfo > HeMuUserInfoMap
map of HE MU specific user info paramters indexed by STA-ID
Declaration of the following enums:
WifiModulationClass GetModulationClass(void) const
Get the modulation class specified by this TXVECTOR.
void SetStbc(bool stbc)
Sets if STBC is being used.
bool IsStbc(void) const
Check if STBC is used or not.
bool GetModeInitialized(void) const
uint8_t GetNess(void) const
bool IsMu(void) const
Return true if this TX vector is used for a multi-user transmission.
uint16_t GetGuardInterval(void) const
uint8_t GetNss(uint16_t staId=SU_STA_ID) const
If this TX vector is associated with an SU PPDU, return the number of spatial streams.
void SetLdpc(bool ldpc)
Sets if LDPC FEC coding is being used.
HeMuUserInfo GetHeMuUserInfo(uint16_t staId) const
Get the HE MU user-specific transmission information for the given STA-ID.
represent a single transmission modeA WifiMode is implemented by a single integer which is used to lo...
Definition: wifi-mode.h:47
WifiMode mcs
MCS.
bool IsLdpc(void) const
Check if LDPC FEC coding is used or not.
uint8_t m_nss
number of spatial streams
HeRu::RuSpec GetRu(uint16_t staId) const
Get the RU specification for the STA-ID.
WifiMode GetMode(uint16_t staId=SU_STA_ID) const
If this TX vector is associated with an SU PPDU, return the selected payload transmission mode...
WifiPreamble GetPreambleType(void) const
std::ostream & operator<<(std::ostream &os, const Angles &a)
Definition: angles.cc:137
WifiPreamble
The type of preamble to be used by an IEEE 802.11 transmission.
uint8_t m_bssColor
BSS color.
bool IsValid(void) const
The standard disallows certain combinations of WifiMode, number of spatial streams, and channel widths.
void SetGuardInterval(uint16_t guardInterval)
Sets the guard interval duration (in nanoseconds)
uint16_t m_guardInterval
guard interval duration in nanoseconds
uint8_t GetNTx(void) const
std::pair< std::size_t, std::size_t > GetNumRusPerHeSigBContentChannel(void) const
Get the number of RUs per HE-SIG-B content channel.
void SetHeMuUserInfo(uint16_t staId, HeMuUserInfo userInfo)
Set the HE MU user-specific transmission information for the given STA-ID.
void SetNss(uint8_t nss)
Sets the number of Nss.
bool m_modeInitialized
Internal initialization flag.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
void SetAggregation(bool aggregation)
Sets if PSDU contains A-MPDU.
void SetPreambleType(WifiPreamble preamble)
Sets the preamble type.
void SetTxPowerLevel(uint8_t powerlevel)
Sets the selected transmission power level.
void SetNTx(uint8_t nTx)
Sets the number of TX antennas.
bool m_aggregation
Flag whether the PSDU contains A-MPDU.
HeRu::RuSpec ru
RU specification.
bool m_stbc
STBC used or not.
void SetMode(WifiMode mode)
Sets the selected payload transmission mode.
uint16_t m_length
LENGTH field of the L-SIG.
bool IsDlMu(void) const
Return true if this TX vector is used for a downlink multi-user transmission.
uint16_t GetLength(void) const
Get the LENGTH field of the L-SIG.
uint8_t GetBssColor(void) const
Get the BSS color.
bool IsUlMu(void) const
Return true if this TX vector is used for an uplink multi-user transmission.
void SetNess(uint8_t ness)
Sets the Ness number.
HeMuUserInfoMap m_muUserInfos
HE MU specific per-user information indexed by station ID (STA-ID) corresponding to the 11 LSBs of th...
uint8_t GetTxPowerLevel(void) const
uint16_t GetChannelWidth(void) const
uint8_t m_ness
number of spatial streams in beamforming
void SetLength(uint16_t length)
Set the LENGTH field of the L-SIG.
const HeMuUserInfoMap & GetHeMuUserInfoMap(void) const
Get a const reference to the map HE MU user-specific transmission information indexed by STA-ID...
void SetRu(HeRu::RuSpec ru, uint16_t staId)
Set the RU specification for the STA-ID.
HE MU specific user transmission parameters.
#define SU_STA_ID
Definition: wifi-mode.h:32
uint8_t m_txPowerLevel
The TXPWR_LEVEL parameter in Table 15-4.
WifiMode m_mode
The DATARATE parameter in Table 15-4.
WifiPreamble m_preamble
preamble