A Discrete-Event Network Simulator
Go to the documentation of this file.
2 * Copyright (c) 2020 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
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 * Authors: Rediet <getachew.redieteab@orange.com>
18 * S├ębastien Deronne <sebastien.deronne@gmail.com> (for logic ported from wifi-phy)
19 * Mathieu Lacage <mathieu.lacage@sophia.inria.fr> (for logic ported from wifi-phy)
20 */
22#ifndef DSSS_PHY_H
23#define DSSS_PHY_H
25#include "ns3/phy-entity.h"
27#include <vector>
35namespace ns3
46class DsssPhy : public PhyEntity
48 public:
52 DsssPhy();
56 ~DsssPhy() override;
58 WifiMode GetSigMode(WifiPpduField field, const WifiTxVector& txVector) const override;
59 const PpduFormats& GetPpduFormats() const override;
60 Time GetDuration(WifiPpduField field, const WifiTxVector& txVector) const override;
62 const WifiTxVector& txVector,
63 WifiPhyBand band,
64 MpduType mpdutype,
65 bool incFlag,
66 uint32_t& totalAmpduSize,
67 double& totalAmpduNumSymbols,
68 uint16_t staId) const override;
70 const WifiTxVector& txVector,
71 Time ppduDuration) override;
72 uint32_t GetMaxPsduSize() const override;
77 static void InitializeModes();
85 static WifiMode GetDsssRate(uint64_t rate);
119 static WifiCodeRate GetCodeRate(const std::string& name);
128 static uint16_t GetConstellationSize(const std::string& name);
139 static uint64_t GetDataRateFromTxVector(const WifiTxVector& txVector, uint16_t staId);
151 static uint64_t GetDataRate(const std::string& name, WifiModulationClass modClass);
159 static bool IsAllowed(const WifiTxVector& txVector);
161 private:
164 Ptr<const WifiPpdu> ppdu) const override;
165 uint16_t GetRxChannelWidth(const WifiTxVector& txVector) const override;
166 uint16_t GetMeasurementChannelWidth(const Ptr<const WifiPpdu> ppdu) const override;
172 WifiMode GetHeaderMode(const WifiTxVector& txVector) const;
180 Time GetPreambleDuration(const WifiTxVector& txVector) const;
185 Time GetHeaderDuration(const WifiTxVector& txVector) const;
206 static WifiMode CreateDsssMode(std::string uniqueName, WifiModulationClass modClass);
210 static const ModulationLookupTable
213}; // class DsssPhy
215} // namespace ns3
217#endif /* DSSS_PHY_H */
PHY entity for HR/DSSS (11b)
Definition: dsss-phy.h:47
PhyFieldRxStatus DoEndReceiveField(WifiPpduField field, Ptr< Event > event) override
End receiving a given field, perform amendment-specific actions, and provide the status of the recept...
Definition: dsss-phy.cc:210
static uint16_t GetConstellationSize(const std::string &name)
Return the constellation size from the DSSS or HR/DSSS mode's unique name using ModulationLookupTable...
Definition: dsss-phy.cc:354
static const PpduFormats m_dsssPpduFormats
DSSS and HR/DSSS PPDU formats.
Definition: dsss-phy.h:208
PhyFieldRxStatus EndReceiveHeader(Ptr< Event > event)
End receiving the header, perform DSSS-specific actions, and provide the status of the reception.
Definition: dsss-phy.cc:221
static WifiMode CreateDsssMode(std::string uniqueName, WifiModulationClass modClass)
Create a DSSS or HR/DSSS mode from a unique name, the unique name must already be contained inside Mo...
Definition: dsss-phy.cc:326
static WifiCodeRate GetCodeRate(const std::string &name)
Return the WifiCodeRate from the DSSS or HR/DSSS mode's unique name using ModulationLookupTable.
Definition: dsss-phy.cc:348
static const ModulationLookupTable m_dsssModulationLookupTable
lookup table to retrieve code rate and constellation size corresponding to a unique name of modulatio...
Definition: dsss-phy.h:211
static uint64_t GetDataRateFromTxVector(const WifiTxVector &txVector, uint16_t staId)
Return the data rate corresponding to the supplied TXVECTOR.
Definition: dsss-phy.cc:360
uint16_t GetMeasurementChannelWidth(const Ptr< const WifiPpdu > ppdu) const override
Return the channel width used to measure the RSSI.
Definition: dsss-phy.cc:262
Ptr< SpectrumValue > GetTxPowerSpectralDensity(double txPowerW, Ptr< const WifiPpdu > ppdu) const override
Definition: dsss-phy.cc:268
~DsssPhy() override
Destructor for HR/DSSS PHY.
Definition: dsss-phy.cc:90
static WifiMode GetDsssRate5_5Mbps()
Return a WifiMode for HR/DSSS at 5.5 Mbps.
WifiMode GetSigMode(WifiPpduField field, const WifiTxVector &txVector) const override
Get the WifiMode for the SIG field specified by the PPDU field.
Definition: dsss-phy.cc:96
uint16_t GetRxChannelWidth(const WifiTxVector &txVector) const override
Return the channel width used in the reception spectrum model.
Definition: dsss-phy.cc:246
static uint64_t GetDataRate(const std::string &name, WifiModulationClass modClass)
Return the data rate from the DSSS or HR/DSSS mode's unique name and the supplied parameters.
Definition: dsss-phy.cc:367
static bool IsAllowed(const WifiTxVector &txVector)
Check whether the combination in TXVECTOR is allowed.
Definition: dsss-phy.cc:390
Time GetHeaderDuration(const WifiTxVector &txVector) const
Definition: dsss-phy.cc:167
Time GetPayloadDuration(uint32_t size, const WifiTxVector &txVector, WifiPhyBand band, MpduType mpdutype, bool incFlag, uint32_t &totalAmpduSize, double &totalAmpduNumSymbols, uint16_t staId) const override
Definition: dsss-phy.cc:185
Constructor for HR/DSSS PHY.
Definition: dsss-phy.cc:79
static WifiMode GetDsssRate(uint64_t rate)
Return a WifiMode for HR/DSSS corresponding to the provided rate.
Definition: dsss-phy.cc:292
const PpduFormats & GetPpduFormats() const override
Return the PPDU formats of the PHY.
Definition: dsss-phy.cc:127
uint32_t GetMaxPsduSize() const override
Get the maximum PSDU size in bytes.
Definition: dsss-phy.cc:396
Time GetPreambleDuration(const WifiTxVector &txVector) const
Definition: dsss-phy.cc:150
static WifiMode GetDsssRate1Mbps()
Return a WifiMode for DSSS at 1 Mbps.
WifiMode GetHeaderMode(const WifiTxVector &txVector) const
Definition: dsss-phy.cc:110
static void InitializeModes()
Initialize all HR/DSSS modes.
Definition: dsss-phy.cc:283
Ptr< WifiPpdu > BuildPpdu(const WifiConstPsduMap &psdus, const WifiTxVector &txVector, Time ppduDuration) override
Build amendment-specific PPDU.
Definition: dsss-phy.cc:198
static WifiMode GetDsssRate11Mbps()
Return a WifiMode for HR/DSSS at 11 Mbps.
static WifiMode GetDsssRate2Mbps()
Return a WifiMode for DSSS at 2 Mbps.
Time GetDuration(WifiPpduField field, const WifiTxVector &txVector) const override
Get the duration of the PPDU field (or group of fields) used by this entity for the given transmissio...
Definition: dsss-phy.cc:133
Abstract class for PHY entities.
Definition: phy-entity.h:97
std::map< std::string, CodeRateConstellationSizePair > ModulationLookupTable
A modulation lookup table using unique name of modulation as key.
Definition: phy-entity.h:556
std::map< WifiPreamble, std::vector< WifiPpduField > > PpduFormats
A map of PPDU field elements per preamble type.
Definition: phy-entity.h:546
Smart pointer class similar to boost::intrusive_ptr.
Definition: ptr.h:78
Simulation virtual time values and global simulation resolution.
Definition: nstime.h:105
represent a single transmission mode
Definition: wifi-mode.h:50
This class mimics the TXVECTOR which is to be passed to the PHY in order to define the parameters whi...
Identifies the PHY band.
Definition: wifi-phy-band.h:33
This enumeration defines the modulation classes per (Table 10-6 "Modulation classes"; IEEE 802....
The type of PPDU field (grouped for convenience)
The type of an MPDU.
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.
uint16_t WifiCodeRate
These constants define the various convolutional coding rates used for the OFDM transmission modes in...
Status of the reception of the PPDU field.
Definition: phy-entity.h:113