INET Framework for OMNeT++/OMNEST
inet::physicallayer::Ieee80211HTSignalMode Class Reference

#include <Ieee80211HTMode.h>

Inheritance diagram for inet::physicallayer::Ieee80211HTSignalMode:
inet::physicallayer::IIeee80211HeaderMode inet::physicallayer::Ieee80211HTModeBase inet::physicallayer::Ieee80211HTTimingRelatedParametersBase inet::physicallayer::IPrintableObject

Public Member Functions

 Ieee80211HTSignalMode (unsigned int modulationAndCodingScheme, const Ieee80211OFDMModulation *modulation, const Ieee80211HTCode *code, const Hz bandwidth, GuardIntervalType guardIntervalType)
 
 Ieee80211HTSignalMode (unsigned int modulationAndCodingScheme, const Ieee80211OFDMModulation *modulation, const Ieee80211ConvolutionalCode *convolutionalCode, const Hz bandwidth, GuardIntervalType guardIntervalType)
 
virtual ~Ieee80211HTSignalMode ()
 
virtual int getMCSLength () const
 
virtual int getCBWLength () const
 
virtual int getHTLengthLength () const
 
virtual int getSmoothingLength () const
 
virtual int getNotSoundingLength () const
 
virtual int getReservedLength () const
 
virtual int getAggregationLength () const
 
virtual int getSTBCLength () const
 
virtual int getFECCodingLength () const
 
virtual int getShortGILength () const
 
virtual int getNumOfExtensionSpatialStreamsLength () const
 
virtual int getCRCLength () const
 
virtual int getTailBitsLength () const
 
virtual unsigned int getSTBC () const
 
virtual const simtime_t getHTSIGDuration () const
 
virtual unsigned int getModulationAndCodingScheme () const
 
virtual const simtime_t getDuration () const override
 
virtual int getBitLength () const override
 
virtual bps getNetBitrate () const override
 
virtual bps getGrossBitrate () const override
 
virtual const IModulationgetModulation () const override
 
- Public Member Functions inherited from inet::physicallayer::IPrintableObject
virtual ~IPrintableObject ()
 
virtual std::ostream & printToStream (std::ostream &stream, int level) const
 Prints this object to the provided output stream. More...
 
virtual std::string getInfoStringRepresentation () const
 
virtual std::string getDetailStringRepresentation () const
 
virtual std::string getDebugStringRepresentation () const
 
virtual std::string getTraceStringRepresentation () const
 
virtual std::string getCompleteStringRepresentation () const
 
- Public Member Functions inherited from inet::physicallayer::Ieee80211HTModeBase
 Ieee80211HTModeBase (unsigned int modulationAndCodingScheme, unsigned int numberOfSpatialStreams, const Hz bandwidth, GuardIntervalType guardIntervalType)
 
virtual int getNumberOfDataSubcarriers () const
 
virtual int getNumberOfPilotSubcarriers () const
 
virtual int getNumberOfTotalSubcarriers () const
 
virtual GuardIntervalType getGuardIntervalType () const
 
virtual int getNumberOfSpatialStreams () const
 
virtual unsigned int getMcsIndex () const
 
virtual Hz getBandwidth () const
 

Protected Member Functions

virtual bps computeGrossBitrate () const override
 
virtual bps computeNetBitrate () const override
 

Protected Attributes

const Ieee80211OFDMModulationmodulation
 
const Ieee80211HTCodecode
 
- Protected Attributes inherited from inet::physicallayer::Ieee80211HTModeBase
const Hz bandwidth
 
const GuardIntervalType guardIntervalType
 
const unsigned int mcsIndex
 
const unsigned int numberOfSpatialStreams
 
bps netBitrate
 
bps grossBitrate
 

Additional Inherited Members

- Public Types inherited from inet::physicallayer::IPrintableObject
enum  PrintLevel {
  PRINT_LEVEL_TRACE, PRINT_LEVEL_DEBUG, PRINT_LEVEL_DETAIL, PRINT_LEVEL_INFO,
  PRINT_LEVEL_COMPLETE = INT_MIN
}
 
- Public Types inherited from inet::physicallayer::Ieee80211HTModeBase
enum  GuardIntervalType { HT_GUARD_INTERVAL_SHORT, HT_GUARD_INTERVAL_LONG }
 

Constructor & Destructor Documentation

inet::physicallayer::Ieee80211HTSignalMode::Ieee80211HTSignalMode ( unsigned int  modulationAndCodingScheme,
const Ieee80211OFDMModulation modulation,
const Ieee80211HTCode code,
const Hz  bandwidth,
GuardIntervalType  guardIntervalType 
)
54  :
55  Ieee80211HTModeBase(modulationAndCodingScheme, 1, bandwidth, guardIntervalType),
57  code(code)
58 {
59 }
const GuardIntervalType guardIntervalType
Definition: Ieee80211HTMode.h:52
const Hz bandwidth
Definition: Ieee80211HTMode.h:51
const Ieee80211HTCode * code
Definition: Ieee80211HTMode.h:81
const Ieee80211OFDMModulation * modulation
Definition: Ieee80211HTMode.h:80
Ieee80211HTModeBase(unsigned int modulationAndCodingScheme, unsigned int numberOfSpatialStreams, const Hz bandwidth, GuardIntervalType guardIntervalType)
Definition: Ieee80211HTMode.cc:36
inet::physicallayer::Ieee80211HTSignalMode::Ieee80211HTSignalMode ( unsigned int  modulationAndCodingScheme,
const Ieee80211OFDMModulation modulation,
const Ieee80211ConvolutionalCode convolutionalCode,
const Hz  bandwidth,
GuardIntervalType  guardIntervalType 
)
61  :
62  Ieee80211HTModeBase(modulationAndCodingScheme, 1, bandwidth, guardIntervalType),
64  code(Ieee80211HTCompliantCodes::getCompliantCode(convolutionalCode, modulation, nullptr, nullptr, nullptr, bandwidth, false))
65 {
66 }
static const Ieee80211HTCode * getCompliantCode(const Ieee80211ConvolutionalCode *convolutionalCode, const Ieee80211OFDMModulation *stream1Modulation, const Ieee80211OFDMModulation *stream2Modulation, const Ieee80211OFDMModulation *stream3Modulation, const Ieee80211OFDMModulation *stream4Modulation, Hz bandwidth, bool withScrambling=true)
Definition: Ieee80211HTCode.cc:35
const GuardIntervalType guardIntervalType
Definition: Ieee80211HTMode.h:52
const Hz bandwidth
Definition: Ieee80211HTMode.h:51
const Ieee80211HTCode * code
Definition: Ieee80211HTMode.h:81
const Ieee80211OFDMModulation * modulation
Definition: Ieee80211HTMode.h:80
Ieee80211HTModeBase(unsigned int modulationAndCodingScheme, unsigned int numberOfSpatialStreams, const Hz bandwidth, GuardIntervalType guardIntervalType)
Definition: Ieee80211HTMode.cc:36
inet::physicallayer::Ieee80211HTSignalMode::~Ieee80211HTSignalMode ( )
virtual
368 {
369  delete code;
370 }
const Ieee80211HTCode * code
Definition: Ieee80211HTMode.h:81

Member Function Documentation

bps inet::physicallayer::Ieee80211HTSignalMode::computeGrossBitrate ( ) const
overrideprotectedvirtual

Implements inet::physicallayer::Ieee80211HTModeBase.

172 {
173  unsigned int numberOfCodedBitsPerSymbol = modulation->getSubcarrierModulation()->getCodeWordSize() * getNumberOfDataSubcarriers();
175  return bps(numberOfCodedBitsPerSymbol / getSymbolInterval());
177  return bps(numberOfCodedBitsPerSymbol / getShortGISymbolInterval());
178  else
179  throw cRuntimeError("Unknown guard interval type");
180 }
const APSKModulationBase * getSubcarrierModulation() const
Definition: Ieee80211OFDMModulation.h:34
const GuardIntervalType guardIntervalType
Definition: Ieee80211HTMode.h:52
compose< b, pow< s,-1 > > bps
Definition: Units.h:985
const Ieee80211OFDMModulation * modulation
Definition: Ieee80211HTMode.h:80
virtual int getNumberOfDataSubcarriers() const
Definition: Ieee80211HTMode.cc:237
virtual unsigned int getCodeWordSize() const override
Definition: APSKModulationBase.h:47
bps inet::physicallayer::Ieee80211HTSignalMode::computeNetBitrate ( ) const
overrideprotectedvirtual

Implements inet::physicallayer::Ieee80211HTModeBase.

183 {
185 }
virtual bps computeGrossBitrate() const override
Definition: Ieee80211HTMode.cc:171
const Ieee80211HTCode * code
Definition: Ieee80211HTMode.h:81
const IForwardErrorCorrection * getForwardErrorCorrection() const
Definition: Ieee80211HTCode.h:40
virtual int inet::physicallayer::Ieee80211HTSignalMode::getAggregationLength ( ) const
inlinevirtual
103 { return 1; }
int inet::physicallayer::Ieee80211HTSignalMode::getBitLength ( ) const
overridevirtual

Implements inet::physicallayer::IIeee80211HeaderMode.

189 {
190  return
191  getMCSLength() +
192  getCBWLength() +
198  getSTBCLength() +
200  getShortGILength() +
202  getCRCLength() +
204 }
virtual int getSmoothingLength() const
Definition: Ieee80211HTMode.h:100
virtual int getFECCodingLength() const
Definition: Ieee80211HTMode.h:105
virtual int getCBWLength() const
Definition: Ieee80211HTMode.h:96
virtual int getNotSoundingLength() const
Definition: Ieee80211HTMode.h:101
virtual int getShortGILength() const
Definition: Ieee80211HTMode.h:106
virtual int getNumOfExtensionSpatialStreamsLength() const
Definition: Ieee80211HTMode.h:107
virtual int getMCSLength() const
Definition: Ieee80211HTMode.h:95
virtual int getAggregationLength() const
Definition: Ieee80211HTMode.h:103
virtual int getTailBitsLength() const
Definition: Ieee80211HTMode.h:109
virtual int getReservedLength() const
Definition: Ieee80211HTMode.h:102
virtual int getCRCLength() const
Definition: Ieee80211HTMode.h:108
virtual int getSTBCLength() const
Definition: Ieee80211HTMode.h:104
virtual int getHTLengthLength() const
Definition: Ieee80211HTMode.h:97
virtual int inet::physicallayer::Ieee80211HTSignalMode::getCBWLength ( ) const
inlinevirtual
96 { return 1; }
virtual int inet::physicallayer::Ieee80211HTSignalMode::getCRCLength ( ) const
inlinevirtual
108 { return 8; }
virtual const simtime_t inet::physicallayer::Ieee80211HTSignalMode::getDuration ( ) const
inlineoverridevirtual

Implements inet::physicallayer::IIeee80211HeaderMode.

115 { return getHTSIGDuration(); }
virtual const simtime_t getHTSIGDuration() const
Definition: Ieee80211HTMode.h:112
virtual int inet::physicallayer::Ieee80211HTSignalMode::getFECCodingLength ( ) const
inlinevirtual
105 { return 1; }
virtual bps inet::physicallayer::Ieee80211HTSignalMode::getGrossBitrate ( ) const
inlineoverridevirtual

Reimplemented from inet::physicallayer::Ieee80211HTModeBase.

virtual bps getGrossBitrate() const
Definition: Ieee80211HTMode.cc:230
virtual int inet::physicallayer::Ieee80211HTSignalMode::getHTLengthLength ( ) const
inlinevirtual
97 { return 16; }
virtual const simtime_t inet::physicallayer::Ieee80211HTSignalMode::getHTSIGDuration ( ) const
inlinevirtual
112 { return 2 * getSymbolInterval(); } // HT-SIG
virtual int inet::physicallayer::Ieee80211HTSignalMode::getMCSLength ( ) const
inlinevirtual
95 { return 7; }
virtual const IModulation* inet::physicallayer::Ieee80211HTSignalMode::getModulation ( ) const
inlineoverridevirtual

Implements inet::physicallayer::IIeee80211HeaderMode.

119 { return modulation; }
const Ieee80211OFDMModulation * modulation
Definition: Ieee80211HTMode.h:80
virtual unsigned int inet::physicallayer::Ieee80211HTSignalMode::getModulationAndCodingScheme ( ) const
inlinevirtual
114 { return mcsIndex; }
const unsigned int mcsIndex
Definition: Ieee80211HTMode.h:53
virtual bps inet::physicallayer::Ieee80211HTSignalMode::getNetBitrate ( ) const
inlineoverridevirtual

Reimplemented from inet::physicallayer::Ieee80211HTModeBase.

virtual bps getNetBitrate() const
Definition: Ieee80211HTMode.cc:223
virtual int inet::physicallayer::Ieee80211HTSignalMode::getNotSoundingLength ( ) const
inlinevirtual
101 { return 1; }
virtual int inet::physicallayer::Ieee80211HTSignalMode::getNumOfExtensionSpatialStreamsLength ( ) const
inlinevirtual
107 { return 2; }
virtual int inet::physicallayer::Ieee80211HTSignalMode::getReservedLength ( ) const
inlinevirtual
102 { return 1; }
virtual int inet::physicallayer::Ieee80211HTSignalMode::getShortGILength ( ) const
inlinevirtual
106 { return 1; }
virtual int inet::physicallayer::Ieee80211HTSignalMode::getSmoothingLength ( ) const
inlinevirtual
100 { return 1; }
virtual unsigned int inet::physicallayer::Ieee80211HTSignalMode::getSTBC ( ) const
inlinevirtual
110 { return 0; } // Limitation: We assume that STBC is not used
virtual int inet::physicallayer::Ieee80211HTSignalMode::getSTBCLength ( ) const
inlinevirtual
104 { return 2; }
virtual int inet::physicallayer::Ieee80211HTSignalMode::getTailBitsLength ( ) const
inlinevirtual
109 { return 6; }

Member Data Documentation

const Ieee80211HTCode* inet::physicallayer::Ieee80211HTSignalMode::code
protected
const Ieee80211OFDMModulation* inet::physicallayer::Ieee80211HTSignalMode::modulation
protected

The documentation for this class was generated from the following files: