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

#include <Ieee80211OFDMMode.h>

Inheritance diagram for inet::physicallayer::Ieee80211OFDMDataMode:
inet::physicallayer::IIeee80211DataMode inet::physicallayer::Ieee80211OFDMModeBase inet::physicallayer::IPrintableObject inet::physicallayer::Ieee80211OFDMTimingRelatedParametersBase

Public Member Functions

 Ieee80211OFDMDataMode (const Ieee80211OFDMCode *code, const Ieee80211OFDMModulation *modulation, Hz channelSpacing, Hz bandwidth)
 
virtual ~Ieee80211OFDMDataMode ()
 
virtual std::ostream & printToStream (std::ostream &stream, int level) const override
 Prints this object to the provided output stream. More...
 
int getServiceBitLength () const
 
int getTailBitLength () const
 
virtual int getBitLength (int dataBitLength) const override
 
virtual const simtime_t getDuration (int dataBitLength) const override
 
const Ieee80211OFDMCodegetCode () const
 
const Ieee80211OFDMModulationgetModulation () const override
 
virtual bps getGrossBitrate () const override
 
virtual bps getNetBitrate () const override
 
virtual int getNumberOfSpatialStreams () const override
 
- Public Member Functions inherited from inet::physicallayer::IPrintableObject
virtual ~IPrintableObject ()
 
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::Ieee80211OFDMModeBase
 Ieee80211OFDMModeBase (const Ieee80211OFDMModulation *modulation, const Ieee80211OFDMCode *code, Hz channelSpacing, Hz bandwidth)
 
virtual ~Ieee80211OFDMModeBase ()
 
int getNumberOfDataSubcarriers () const
 
int getNumberOfPilotSubcarriers () const
 
int getNumberOfTotalSubcarriers () const
 
Hz getBandwidth () const
 

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
}
 
- Protected Member Functions inherited from inet::physicallayer::Ieee80211OFDMModeBase
bps computeGrossBitrate (const Ieee80211OFDMModulation *modulation) const
 
bps computeNetBitrate (bps grossBitrate, const Ieee80211OFDMCode *code) const
 
- Protected Attributes inherited from inet::physicallayer::Ieee80211OFDMModeBase
const Ieee80211OFDMModulationmodulation
 
const Ieee80211OFDMCodecode
 
const Hz bandwidth
 
bps netBitrate
 
bps grossBitrate
 

Constructor & Destructor Documentation

inet::physicallayer::Ieee80211OFDMDataMode::Ieee80211OFDMDataMode ( const Ieee80211OFDMCode code,
const Ieee80211OFDMModulation modulation,
Hz  channelSpacing,
Hz  bandwidth 
)
57  :
59 {
60 }
Ieee80211OFDMModeBase(const Ieee80211OFDMModulation *modulation, const Ieee80211OFDMCode *code, Hz channelSpacing, Hz bandwidth)
Definition: Ieee80211OFDMMode.cc:27
const Ieee80211OFDMCode * code
Definition: Ieee80211OFDMMode.h:49
const Hz bandwidth
Definition: Ieee80211OFDMMode.h:50
const Ieee80211OFDMModulation * modulation
Definition: Ieee80211OFDMMode.h:48
virtual inet::physicallayer::Ieee80211OFDMDataMode::~Ieee80211OFDMDataMode ( )
inlinevirtual
117 {}

Member Function Documentation

int inet::physicallayer::Ieee80211OFDMDataMode::getBitLength ( int  dataBitLength) const
overridevirtual

Implements inet::physicallayer::IIeee80211DataMode.

Referenced by getDuration().

181 {
182  return getServiceBitLength() + dataBitLength + getTailBitLength(); // TODO: padding?
183 }
int getTailBitLength() const
Definition: Ieee80211OFDMMode.h:122
int getServiceBitLength() const
Definition: Ieee80211OFDMMode.h:121
const Ieee80211OFDMCode* inet::physicallayer::Ieee80211OFDMDataMode::getCode ( ) const
inline

Referenced by inet::physicallayer::Ieee80211LayeredOFDMReceiver::createDataFieldBitModel().

127 { return code; }
const Ieee80211OFDMCode * code
Definition: Ieee80211OFDMMode.h:49
const simtime_t inet::physicallayer::Ieee80211OFDMDataMode::getDuration ( int  dataBitLength) const
overridevirtual

Implements inet::physicallayer::IIeee80211DataMode.

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

186 {
187  // IEEE Std 802.11-2007, section 17.3.2.2, table 17-3
188  // corresponds to N_{DBPS} in the table
189  unsigned int codedBitsPerOFDMSymbol = modulation->getSubcarrierModulation()->getCodeWordSize() * getNumberOfDataSubcarriers();
190  const ConvolutionalCode *convolutionalCode = code ? code->getConvolutionalCode() : nullptr;
191  unsigned int dataBitsPerOFDMSymbol = convolutionalCode ? convolutionalCode->getDecodedLength(codedBitsPerOFDMSymbol) : codedBitsPerOFDMSymbol;
192  // IEEE Std 802.11-2007, section 17.3.5.3, equation (17-11)
193  unsigned int numberOfSymbols = lrint(ceil((double)getBitLength(dataBitLength) / dataBitsPerOFDMSymbol));
194  // Add signal extension for ERP PHY
195  return numberOfSymbols * getSymbolInterval();
196 }
virtual int getBitLength(int dataBitLength) const override
Definition: Ieee80211OFDMMode.cc:180
const Ieee80211OFDMCode * code
Definition: Ieee80211OFDMMode.h:49
const APSKModulationBase * getSubcarrierModulation() const
Definition: Ieee80211OFDMModulation.h:34
const Ieee80211OFDMModulation * modulation
Definition: Ieee80211OFDMMode.h:48
int getNumberOfDataSubcarriers() const
Definition: Ieee80211OFDMMode.h:62
virtual unsigned int getCodeWordSize() const override
Definition: APSKModulationBase.h:47
virtual int getDecodedLength(int encodedLength) const override
Definition: ConvolutionalCode.cc:58
const ConvolutionalCode * getConvolutionalCode() const
Definition: Ieee80211OFDMCode.h:41
virtual bps inet::physicallayer::Ieee80211OFDMDataMode::getGrossBitrate ( ) const
inlineoverridevirtual
const Ieee80211OFDMModulation* inet::physicallayer::Ieee80211OFDMDataMode::getModulation ( ) const
inlineoverridevirtual

Implements inet::physicallayer::IIeee80211DataMode.

Referenced by inet::physicallayer::Ieee80211LayeredOFDMReceiver::createDataFieldBitModel().

128 { return modulation; }
const Ieee80211OFDMModulation * modulation
Definition: Ieee80211OFDMMode.h:48
virtual bps inet::physicallayer::Ieee80211OFDMDataMode::getNetBitrate ( ) const
inlineoverridevirtual

Reimplemented from inet::physicallayer::Ieee80211OFDMModeBase.

virtual bps getNetBitrate() const
Definition: Ieee80211OFDMMode.cc:83
virtual int inet::physicallayer::Ieee80211OFDMDataMode::getNumberOfSpatialStreams ( ) const
inlineoverridevirtual

Implements inet::physicallayer::IIeee80211DataMode.

131 { return 1; }
int inet::physicallayer::Ieee80211OFDMDataMode::getServiceBitLength ( ) const
inline

Referenced by getBitLength().

121 { return 16; }
int inet::physicallayer::Ieee80211OFDMDataMode::getTailBitLength ( ) const
inline

Referenced by getBitLength().

122 { return 6; }
std::ostream & inet::physicallayer::Ieee80211OFDMDataMode::printToStream ( std::ostream &  stream,
int  level 
) const
overridevirtual

Prints this object to the provided output stream.

Function calls to operator<< with pointers or references either const or not are all forwarded to this function.

Reimplemented from inet::physicallayer::IPrintableObject.

162 {
163  stream << "Ieee80211OFDMDataMode";
164  if (level <= PRINT_LEVEL_DETAIL)
165  stream << ", netBitrate = " << netBitrate;
166  return stream;
167 }
bps netBitrate
Definition: Ieee80211OFDMMode.h:51

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