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::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 ()
 
b getMCSLength () const
 
b getCBWLength () const
 
b getHTLengthLength () const
 
b getSmoothingLength () const
 
b getNotSoundingLength () const
 
b getReservedLength () const
 
b getAggregationLength () const
 
b getSTBCLength () const
 
b getFECCodingLength () const
 
b getShortGILength () const
 
b getNumOfExtensionSpatialStreamsLength () const
 
b getCRCLength () const
 
b 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 b getLength () const override
 
virtual bps getNetBitrate () const override
 
virtual bps getGrossBitrate () const override
 
virtual const Ieee80211OfdmModulationgetModulation () const override
 
virtual const Ieee80211HtCodegetCode () const
 
virtual Ptr< Ieee80211PhyHeadercreateHeader () const override
 
- Public Member Functions inherited from inet::IPrintableObject
virtual ~IPrintableObject ()
 
virtual std::ostream & printToStream (std::ostream &stream, int level, int evFlags=0) const
 Prints this object to the provided output stream. More...
 
virtual std::string printToString () const
 
virtual std::string printToString (int level, int evFlags=0) const
 
virtual std::string getInfoStringRepresentation (int evFlags=0) const
 
virtual std::string getDetailStringRepresentation (int evFlags=0) const
 
virtual std::string getDebugStringRepresentation (int evFlags=0) const
 
virtual std::string getTraceStringRepresentation (int evFlags=0) const
 
virtual std::string getCompleteStringRepresentation (int evFlags=0) 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::IPrintableObject
enum  PrintLevel {
  PRINT_LEVEL_TRACE, PRINT_LEVEL_DEBUG, PRINT_LEVEL_DETAIL, PRINT_LEVEL_INFO,
  PRINT_LEVEL_COMPLETE = INT_MIN
}
 
enum  PrintFlag { PRINT_FLAG_FORMATTED = (1 << 0), PRINT_FLAG_MULTILINE = (1 << 1) }
 
- Public Types inherited from inet::physicallayer::Ieee80211HtModeBase
enum  GuardIntervalType { HT_GUARD_INTERVAL_SHORT, HT_GUARD_INTERVAL_LONG }
 

Constructor & Destructor Documentation

◆ Ieee80211HtSignalMode() [1/2]

inet::physicallayer::Ieee80211HtSignalMode::Ieee80211HtSignalMode ( unsigned int  modulationAndCodingScheme,
const Ieee80211OfdmModulation modulation,
const Ieee80211HtCode code,
const Hz  bandwidth,
GuardIntervalType  guardIntervalType 
)
46  :
47  Ieee80211HtModeBase(modulationAndCodingScheme, 1, bandwidth, guardIntervalType),
49  code(code)
50 {
51 }

◆ Ieee80211HtSignalMode() [2/2]

inet::physicallayer::Ieee80211HtSignalMode::Ieee80211HtSignalMode ( unsigned int  modulationAndCodingScheme,
const Ieee80211OfdmModulation modulation,
const Ieee80211ConvolutionalCode convolutionalCode,
const Hz  bandwidth,
GuardIntervalType  guardIntervalType 
)
53  :
54  Ieee80211HtModeBase(modulationAndCodingScheme, 1, bandwidth, guardIntervalType),
56  code(Ieee80211HtCompliantCodes::getCompliantCode(convolutionalCode, modulation, nullptr, nullptr, nullptr, bandwidth, false))
57 {
58 }

◆ ~Ieee80211HtSignalMode()

inet::physicallayer::Ieee80211HtSignalMode::~Ieee80211HtSignalMode ( )
virtual
356 {
357  delete code;
358 }

Member Function Documentation

◆ computeGrossBitrate()

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

Implements inet::physicallayer::Ieee80211HtModeBase.

162 {
163  unsigned int numberOfCodedBitsPerSymbol = modulation->getSubcarrierModulation()->getCodeWordSize() * getNumberOfDataSubcarriers();
165  return bps(numberOfCodedBitsPerSymbol / getSymbolInterval());
167  return bps(numberOfCodedBitsPerSymbol / getShortGISymbolInterval());
168  else
169  throw cRuntimeError("Unknown guard interval type");
170 }

Referenced by computeNetBitrate().

◆ computeNetBitrate()

bps inet::physicallayer::Ieee80211HtSignalMode::computeNetBitrate ( ) const
overrideprotectedvirtual

◆ createHeader()

virtual Ptr<Ieee80211PhyHeader> inet::physicallayer::Ieee80211HtSignalMode::createHeader ( ) const
inlineoverridevirtual

Implements inet::physicallayer::IIeee80211HeaderMode.

111 { return makeShared<Ieee80211HtPhyHeader>(); }

◆ getAggregationLength()

b inet::physicallayer::Ieee80211HtSignalMode::getAggregationLength ( ) const
inline
92 { return b(1); }

Referenced by getLength().

◆ getCBWLength()

b inet::physicallayer::Ieee80211HtSignalMode::getCBWLength ( ) const
inline
85 { return b(1); }

Referenced by getLength().

◆ getCode()

virtual const Ieee80211HtCode* inet::physicallayer::Ieee80211HtSignalMode::getCode ( ) const
inlinevirtual
109 { return code; }

◆ getCRCLength()

b inet::physicallayer::Ieee80211HtSignalMode::getCRCLength ( ) const
inline
97 { return b(8); }

Referenced by getLength().

◆ getDuration()

virtual const simtime_t inet::physicallayer::Ieee80211HtSignalMode::getDuration ( ) const
inlineoverridevirtual

◆ getFECCodingLength()

b inet::physicallayer::Ieee80211HtSignalMode::getFECCodingLength ( ) const
inline
94 { return b(1); }

Referenced by getLength().

◆ getGrossBitrate()

virtual bps inet::physicallayer::Ieee80211HtSignalMode::getGrossBitrate ( ) const
inlineoverridevirtual

◆ getHTLengthLength()

b inet::physicallayer::Ieee80211HtSignalMode::getHTLengthLength ( ) const
inline
86 { return b(16); }

Referenced by getLength().

◆ getHTSIGDuration()

virtual const simtime_t inet::physicallayer::Ieee80211HtSignalMode::getHTSIGDuration ( ) const
inlinevirtual
101 { return 2 * getSymbolInterval(); } // HT-SIG

◆ getLength()

b inet::physicallayer::Ieee80211HtSignalMode::getLength ( ) const
overridevirtual

◆ getMCSLength()

b inet::physicallayer::Ieee80211HtSignalMode::getMCSLength ( ) const
inline
84 { return b(7); }

Referenced by getLength().

◆ getModulation()

virtual const Ieee80211OfdmModulation* inet::physicallayer::Ieee80211HtSignalMode::getModulation ( ) const
inlineoverridevirtual

◆ getModulationAndCodingScheme()

virtual unsigned int inet::physicallayer::Ieee80211HtSignalMode::getModulationAndCodingScheme ( ) const
inlinevirtual
103 { return mcsIndex; }

◆ getNetBitrate()

virtual bps inet::physicallayer::Ieee80211HtSignalMode::getNetBitrate ( ) const
inlineoverridevirtual

◆ getNotSoundingLength()

b inet::physicallayer::Ieee80211HtSignalMode::getNotSoundingLength ( ) const
inline
90 { return b(1); }

Referenced by getLength().

◆ getNumOfExtensionSpatialStreamsLength()

b inet::physicallayer::Ieee80211HtSignalMode::getNumOfExtensionSpatialStreamsLength ( ) const
inline
96 { return b(2); }

Referenced by getLength().

◆ getReservedLength()

b inet::physicallayer::Ieee80211HtSignalMode::getReservedLength ( ) const
inline
91 { return b(1); }

Referenced by getLength().

◆ getShortGILength()

b inet::physicallayer::Ieee80211HtSignalMode::getShortGILength ( ) const
inline
95 { return b(1); }

Referenced by getLength().

◆ getSmoothingLength()

b inet::physicallayer::Ieee80211HtSignalMode::getSmoothingLength ( ) const
inline
89 { return b(1); }

Referenced by getLength().

◆ getSTBC()

virtual unsigned int inet::physicallayer::Ieee80211HtSignalMode::getSTBC ( ) const
inlinevirtual
99 { return 0; } // Limitation: We assume that STBC is not used

Referenced by inet::physicallayer::Ieee80211HtPreambleMode::computeNumberOfSpaceTimeStreams().

◆ getSTBCLength()

b inet::physicallayer::Ieee80211HtSignalMode::getSTBCLength ( ) const
inline
93 { return b(2); }

Referenced by getLength().

◆ getTailBitsLength()

b inet::physicallayer::Ieee80211HtSignalMode::getTailBitsLength ( ) const
inline
98 { return b(6); }

Referenced by getLength().

Member Data Documentation

◆ code

const Ieee80211HtCode* inet::physicallayer::Ieee80211HtSignalMode::code
protected

◆ modulation

const Ieee80211OfdmModulation* inet::physicallayer::Ieee80211HtSignalMode::modulation
protected

Referenced by computeGrossBitrate().


The documentation for this class was generated from the following files:
inet::physicallayer::Ieee80211HtSignalMode::getCRCLength
b getCRCLength() const
Definition: Ieee80211HtMode.h:97
inet::physicallayer::Ieee80211HtModeBase::HT_GUARD_INTERVAL_LONG
@ HT_GUARD_INTERVAL_LONG
Definition: Ieee80211HtMode.h:36
inet::physicallayer::ApskModulationBase::getCodeWordSize
virtual unsigned int getCodeWordSize() const override
Definition: ApskModulationBase.h:37
inet::physicallayer::Ieee80211HtCompliantCodes::getCompliantCode
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:26
inet::physicallayer::Ieee80211HtModeBase::guardIntervalType
const GuardIntervalType guardIntervalType
Definition: Ieee80211HtMode.h:41
inet::physicallayer::Ieee80211HtSignalMode::code
const Ieee80211HtCode * code
Definition: Ieee80211HtMode.h:70
inet::units::units::bps
compose< b, pow< s, -1 > > bps
Definition: Units.h:1169
inet::physicallayer::Ieee80211HtSignalMode::getTailBitsLength
b getTailBitsLength() const
Definition: Ieee80211HtMode.h:98
inet::physicallayer::Ieee80211HtSignalMode::getMCSLength
b getMCSLength() const
Definition: Ieee80211HtMode.h:84
inet::physicallayer::Ieee80211HtSignalMode::getFECCodingLength
b getFECCodingLength() const
Definition: Ieee80211HtMode.h:94
inet::physicallayer::Ieee80211HtSignalMode::getNotSoundingLength
b getNotSoundingLength() const
Definition: Ieee80211HtMode.h:90
inet::physicallayer::Ieee80211HtSignalMode::modulation
const Ieee80211OfdmModulation * modulation
Definition: Ieee80211HtMode.h:69
inet::physicallayer::Ieee80211HtCode::getForwardErrorCorrection
const Ieee80211ConvolutionalCode * getForwardErrorCorrection() const
Definition: Ieee80211HtCode.h:30
inet::physicallayer::ConvolutionalCode::getCodeRate
virtual double getCodeRate() const override
Definition: ConvolutionalCode.cc:38
inet::physicallayer::Ieee80211HtSignalMode::getHTLengthLength
b getHTLengthLength() const
Definition: Ieee80211HtMode.h:86
inet::physicallayer::Ieee80211HtModeBase::mcsIndex
const unsigned int mcsIndex
Definition: Ieee80211HtMode.h:42
inet::physicallayer::Ieee80211HtSignalMode::getNumOfExtensionSpatialStreamsLength
b getNumOfExtensionSpatialStreamsLength() const
Definition: Ieee80211HtMode.h:96
inet::physicallayer::Ieee80211HtModeBase::bandwidth
const Hz bandwidth
Definition: Ieee80211HtMode.h:40
inet::physicallayer::Ieee80211HtModeBase::getGrossBitrate
virtual bps getGrossBitrate() const
Definition: Ieee80211HtMode.cc:218
inet::physicallayer::Ieee80211OfdmModulation::getSubcarrierModulation
const ApskModulationBase * getSubcarrierModulation() const
Definition: Ieee80211OfdmModulation.h:24
inet::units::values::b
value< int64_t, units::b > b
Definition: Units.h:1241
inet::physicallayer::Ieee80211HtSignalMode::computeGrossBitrate
virtual bps computeGrossBitrate() const override
Definition: Ieee80211HtMode.cc:161
inet::physicallayer::Ieee80211HtSignalMode::getSmoothingLength
b getSmoothingLength() const
Definition: Ieee80211HtMode.h:89
inet::physicallayer::Ieee80211HtSignalMode::getShortGILength
b getShortGILength() const
Definition: Ieee80211HtMode.h:95
inet::physicallayer::Ieee80211HtSignalMode::getCBWLength
b getCBWLength() const
Definition: Ieee80211HtMode.h:85
inet::physicallayer::Ieee80211HtModeBase::HT_GUARD_INTERVAL_SHORT
@ HT_GUARD_INTERVAL_SHORT
Definition: Ieee80211HtMode.h:35
inet::physicallayer::Ieee80211HtModeBase::getNetBitrate
virtual bps getNetBitrate() const
Definition: Ieee80211HtMode.cc:211
inet::physicallayer::Ieee80211HtModeBase::Ieee80211HtModeBase
Ieee80211HtModeBase(unsigned int modulationAndCodingScheme, unsigned int numberOfSpatialStreams, const Hz bandwidth, GuardIntervalType guardIntervalType)
Definition: Ieee80211HtMode.cc:28
inet::physicallayer::Ieee80211HtSignalMode::getAggregationLength
b getAggregationLength() const
Definition: Ieee80211HtMode.h:92
inet::physicallayer::Ieee80211HtSignalMode::getHTSIGDuration
virtual const simtime_t getHTSIGDuration() const
Definition: Ieee80211HtMode.h:101
inet::physicallayer::Ieee80211HtSignalMode::getSTBCLength
b getSTBCLength() const
Definition: Ieee80211HtMode.h:93
inet::physicallayer::Ieee80211HtModeBase::getNumberOfDataSubcarriers
virtual int getNumberOfDataSubcarriers() const
Definition: Ieee80211HtMode.cc:225
inet::physicallayer::Ieee80211HtSignalMode::getReservedLength
b getReservedLength() const
Definition: Ieee80211HtMode.h:91