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

#include <Ieee80211HtMode.h>

Inheritance diagram for inet::physicallayer::Ieee80211HtPreambleMode:
inet::physicallayer::IIeee80211PreambleMode inet::physicallayer::Ieee80211HtTimingRelatedParametersBase inet::IPrintableObject

Public Types

enum  HighTroughputPreambleFormat { HT_PREAMBLE_MIXED, HT_PREAMBLE_GREENFIELD }
 
- 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 Member Functions

 Ieee80211HtPreambleMode (const Ieee80211HtSignalMode *highThroughputSignalMode, const Ieee80211OfdmSignalMode *legacySignalMode, HighTroughputPreambleFormat preambleFormat, unsigned int numberOfSpatialStream)
 
virtual ~Ieee80211HtPreambleMode ()
 
HighTroughputPreambleFormat getPreambleFormat () const
 
virtual const Ieee80211HtSignalModegetSignalMode () const
 
virtual const Ieee80211OfdmSignalModegetLegacySignalMode () const
 
virtual const Ieee80211HtSignalModegetHighThroughputSignalMode () const
 
virtual const simtime_t getDoubleGIDuration () const
 
virtual const simtime_t getLSIGDuration () const
 
virtual const simtime_t getNonHTShortTrainingSequenceDuration () const
 
virtual const simtime_t getHTGreenfieldShortTrainingFieldDuration () const
 
virtual const simtime_t getNonHTLongTrainingFieldDuration () const
 
virtual const simtime_t getHTShortTrainingFieldDuration () const
 
virtual const simtime_t getFirstHTLongTrainingFieldDuration () const
 
virtual const simtime_t getSecondAndSubsequentHTLongTrainingFielDuration () const
 
virtual unsigned int getNumberOfHtLongTrainings () const
 
virtual const simtime_t getDuration () const override
 
virtual Ptr< Ieee80211PhyPreamblecreatePreamble () 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
 

Protected Member Functions

virtual unsigned int computeNumberOfSpaceTimeStreams (unsigned int numberOfSpatialStreams) const
 
virtual unsigned int computeNumberOfHTLongTrainings (unsigned int numberOfSpaceTimeStreams) const
 

Protected Attributes

const Ieee80211HtSignalModehighThroughputSignalMode
 
const Ieee80211OfdmSignalModelegacySignalMode
 
const HighTroughputPreambleFormat preambleFormat
 
const unsigned int numberOfHTLongTrainings
 

Member Enumeration Documentation

◆ HighTroughputPreambleFormat

Enumerator
HT_PREAMBLE_MIXED 
HT_PREAMBLE_GREENFIELD 
121  {
122  HT_PREAMBLE_MIXED, // can be received by non-HT STAs compliant with Clause 18 or Clause 19
123  HT_PREAMBLE_GREENFIELD // all of the non-HT fields are omitted
124  };

Constructor & Destructor Documentation

◆ Ieee80211HtPreambleMode()

inet::physicallayer::Ieee80211HtPreambleMode::Ieee80211HtPreambleMode ( const Ieee80211HtSignalMode highThroughputSignalMode,
const Ieee80211OfdmSignalMode legacySignalMode,
HighTroughputPreambleFormat  preambleFormat,
unsigned int  numberOfSpatialStream 
)

◆ ~Ieee80211HtPreambleMode()

virtual inet::physicallayer::Ieee80211HtPreambleMode::~Ieee80211HtPreambleMode ( )
inlinevirtual
138 { delete highThroughputSignalMode; }

Member Function Documentation

◆ computeNumberOfHTLongTrainings()

unsigned int inet::physicallayer::Ieee80211HtPreambleMode::computeNumberOfHTLongTrainings ( unsigned int  numberOfSpaceTimeStreams) const
protectedvirtual
138 {
139  // If the transmitter is providing training for exactly the space-time
140  // streams (spatial mapper inputs) used for the transmission of the PSDU,
141  // the number of training symbols, N_LTF, is equal to the number of space-time
142  // streams, N STS, except that for three space-time streams, four training symbols
143  // are required.
144  return numberOfSpaceTimeStreams == 3 ? 4 : numberOfSpaceTimeStreams;
145 }

◆ computeNumberOfSpaceTimeStreams()

unsigned int inet::physicallayer::Ieee80211HtPreambleMode::computeNumberOfSpaceTimeStreams ( unsigned int  numberOfSpatialStreams) const
protectedvirtual
132 {
133  // Table 20-12—Determining the number of space-time streams
134  return numberOfSpatialStreams + highThroughputSignalMode->getSTBC();
135 }

◆ createPreamble()

virtual Ptr<Ieee80211PhyPreamble> inet::physicallayer::Ieee80211HtPreambleMode::createPreamble ( ) const
inlineoverridevirtual

Implements inet::physicallayer::IIeee80211PreambleMode.

157 { return makeShared<Ieee80211HtPhyPreamble>(); }

◆ getDoubleGIDuration()

virtual const simtime_t inet::physicallayer::Ieee80211HtPreambleMode::getDoubleGIDuration ( ) const
inlinevirtual
145 { return 2 * getGIDuration(); } // GI2

◆ getDuration()

const simtime_t inet::physicallayer::Ieee80211HtPreambleMode::getDuration ( ) const
overridevirtual

Implements inet::physicallayer::IIeee80211PreambleMode.

148 {
149  // 20.3.7 Mathematical description of signals
152  // L-STF -> L-LTF -> L-SIG -> HT-SIG -> HT-STF -> HT-LTF1 -> HT-LTF2 -> ... -> HT_LTFn
155  // HT-GF-STF -> HT-LTF1 -> HT-SIG -> HT-LTF2 -> ... -> HT-LTFn
157  else
158  throw cRuntimeError("Unknown preamble format");
159 }

Referenced by inet::physicallayer::Ieee80211HtMode::getDuration().

◆ getFirstHTLongTrainingFieldDuration()

const simtime_t inet::physicallayer::Ieee80211HtPreambleMode::getFirstHTLongTrainingFieldDuration ( ) const
virtual
122 {
124  return simtime_t(4E-6);
126  return simtime_t(8E-6);
127  else
128  throw cRuntimeError("Unknown preamble format");
129 }

Referenced by getDuration().

◆ getHighThroughputSignalMode()

virtual const Ieee80211HtSignalMode* inet::physicallayer::Ieee80211HtPreambleMode::getHighThroughputSignalMode ( ) const
inlinevirtual
143 { return highThroughputSignalMode; }

◆ getHTGreenfieldShortTrainingFieldDuration()

virtual const simtime_t inet::physicallayer::Ieee80211HtPreambleMode::getHTGreenfieldShortTrainingFieldDuration ( ) const
inlinevirtual
148 { return 10 * getDFTPeriod() / 4; } // HT-GF-STF

Referenced by getDuration().

◆ getHTShortTrainingFieldDuration()

virtual const simtime_t inet::physicallayer::Ieee80211HtPreambleMode::getHTShortTrainingFieldDuration ( ) const
inlinevirtual
150 { return 4E-6; } // HT-STF

Referenced by getDuration().

◆ getLegacySignalMode()

virtual const Ieee80211OfdmSignalMode* inet::physicallayer::Ieee80211HtPreambleMode::getLegacySignalMode ( ) const
inlinevirtual

◆ getLSIGDuration()

virtual const simtime_t inet::physicallayer::Ieee80211HtPreambleMode::getLSIGDuration ( ) const
inlinevirtual
146 { return getSymbolInterval(); } // L-SIG

◆ getNonHTLongTrainingFieldDuration()

virtual const simtime_t inet::physicallayer::Ieee80211HtPreambleMode::getNonHTLongTrainingFieldDuration ( ) const
inlinevirtual
149 { return 2 * getDFTPeriod() + getDoubleGIDuration(); } // L-LTF

Referenced by getDuration().

◆ getNonHTShortTrainingSequenceDuration()

virtual const simtime_t inet::physicallayer::Ieee80211HtPreambleMode::getNonHTShortTrainingSequenceDuration ( ) const
inlinevirtual
147 { return 10 * getDFTPeriod() / 4; } // L-STF

Referenced by getDuration().

◆ getNumberOfHtLongTrainings()

virtual unsigned int inet::physicallayer::Ieee80211HtPreambleMode::getNumberOfHtLongTrainings ( ) const
inlinevirtual
153 { return numberOfHTLongTrainings; }

◆ getPreambleFormat()

HighTroughputPreambleFormat inet::physicallayer::Ieee80211HtPreambleMode::getPreambleFormat ( ) const
inline
140 { return preambleFormat; }

◆ getSecondAndSubsequentHTLongTrainingFielDuration()

virtual const simtime_t inet::physicallayer::Ieee80211HtPreambleMode::getSecondAndSubsequentHTLongTrainingFielDuration ( ) const
inlinevirtual
152 { return 4E-6; } // HT-LTFs, s = 2,3,..,n

Referenced by getDuration().

◆ getSignalMode()

virtual const Ieee80211HtSignalMode* inet::physicallayer::Ieee80211HtPreambleMode::getSignalMode ( ) const
inlinevirtual

Member Data Documentation

◆ highThroughputSignalMode

const Ieee80211HtSignalMode* inet::physicallayer::Ieee80211HtPreambleMode::highThroughputSignalMode
protected

◆ legacySignalMode

const Ieee80211OfdmSignalMode* inet::physicallayer::Ieee80211HtPreambleMode::legacySignalMode
protected

Referenced by getDuration().

◆ numberOfHTLongTrainings

const unsigned int inet::physicallayer::Ieee80211HtPreambleMode::numberOfHTLongTrainings
protected

Referenced by getDuration().

◆ preambleFormat

const HighTroughputPreambleFormat inet::physicallayer::Ieee80211HtPreambleMode::preambleFormat
protected

The documentation for this class was generated from the following files:
inet::physicallayer::Ieee80211HtPreambleMode::highThroughputSignalMode
const Ieee80211HtSignalMode * highThroughputSignalMode
Definition: Ieee80211HtMode.h:127
inet::physicallayer::Ieee80211HtPreambleMode::HT_PREAMBLE_GREENFIELD
@ HT_PREAMBLE_GREENFIELD
Definition: Ieee80211HtMode.h:123
inet::physicallayer::Ieee80211HtPreambleMode::getNonHTLongTrainingFieldDuration
virtual const simtime_t getNonHTLongTrainingFieldDuration() const
Definition: Ieee80211HtMode.h:149
inet::physicallayer::Ieee80211HtPreambleMode::getDoubleGIDuration
virtual const simtime_t getDoubleGIDuration() const
Definition: Ieee80211HtMode.h:145
inet::physicallayer::Ieee80211HtSignalMode::getDuration
virtual const simtime_t getDuration() const override
Definition: Ieee80211HtMode.h:104
inet::physicallayer::Ieee80211OfdmSignalMode::getDuration
virtual const simtime_t getDuration() const override
Definition: Ieee80211OfdmMode.h:96
inet::physicallayer::Ieee80211HtPreambleMode::numberOfHTLongTrainings
const unsigned int numberOfHTLongTrainings
Definition: Ieee80211HtMode.h:130
inet::physicallayer::Ieee80211HtPreambleMode::getNonHTShortTrainingSequenceDuration
virtual const simtime_t getNonHTShortTrainingSequenceDuration() const
Definition: Ieee80211HtMode.h:147
inet::physicallayer::Ieee80211HtPreambleMode::preambleFormat
const HighTroughputPreambleFormat preambleFormat
Definition: Ieee80211HtMode.h:129
inet::physicallayer::Ieee80211HtPreambleMode::getSecondAndSubsequentHTLongTrainingFielDuration
virtual const simtime_t getSecondAndSubsequentHTLongTrainingFielDuration() const
Definition: Ieee80211HtMode.h:152
inet::physicallayer::Ieee80211HtPreambleMode::computeNumberOfSpaceTimeStreams
virtual unsigned int computeNumberOfSpaceTimeStreams(unsigned int numberOfSpatialStreams) const
Definition: Ieee80211HtMode.cc:131
inet::physicallayer::Ieee80211HtSignalMode::getSTBC
virtual unsigned int getSTBC() const
Definition: Ieee80211HtMode.h:99
inet::physicallayer::Ieee80211HtPreambleMode::getHTShortTrainingFieldDuration
virtual const simtime_t getHTShortTrainingFieldDuration() const
Definition: Ieee80211HtMode.h:150
inet::physicallayer::Ieee80211HtPreambleMode::HT_PREAMBLE_MIXED
@ HT_PREAMBLE_MIXED
Definition: Ieee80211HtMode.h:122
inet::physicallayer::Ieee80211HtPreambleMode::getHTGreenfieldShortTrainingFieldDuration
virtual const simtime_t getHTGreenfieldShortTrainingFieldDuration() const
Definition: Ieee80211HtMode.h:148
inet::physicallayer::Ieee80211HtPreambleMode::computeNumberOfHTLongTrainings
virtual unsigned int computeNumberOfHTLongTrainings(unsigned int numberOfSpaceTimeStreams) const
Definition: Ieee80211HtMode.cc:137
inet::physicallayer::Ieee80211HtPreambleMode::getFirstHTLongTrainingFieldDuration
virtual const simtime_t getFirstHTLongTrainingFieldDuration() const
Definition: Ieee80211HtMode.cc:121
inet::physicallayer::Ieee80211HtPreambleMode::legacySignalMode
const Ieee80211OfdmSignalMode * legacySignalMode
Definition: Ieee80211HtMode.h:128