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

#include <Ieee80211TransmitterBase.h>

Inheritance diagram for inet::physicallayer::Ieee80211TransmitterBase:
inet::physicallayer::FlatTransmitterBase inet::physicallayer::NarrowbandTransmitterBase inet::physicallayer::TransmitterBase inet::physicallayer::ITransmitter inet::IPrintableObject inet::physicallayer::Ieee80211DimensionalTransmitter inet::physicallayer::Ieee80211ScalarTransmitter inet::physicallayer::Ieee80211UnitDiskTransmitter

Public Member Functions

 Ieee80211TransmitterBase ()
 
virtual ~Ieee80211TransmitterBase ()
 
virtual std::ostream & printToStream (std::ostream &stream, int level, int evFlags=0) const override
 Prints this object to the provided output stream. More...
 
virtual const IIeee80211ModecomputeTransmissionMode (const Packet *packet) const
 
virtual const Ieee80211ChannelcomputeTransmissionChannel (const Packet *packet) const
 
virtual void setModeSet (const Ieee80211ModeSet *modeSet)
 
virtual void setMode (const IIeee80211Mode *mode)
 
virtual void setBand (const IIeee80211Band *band)
 
virtual void setChannel (const Ieee80211Channel *channel)
 
virtual void setChannelNumber (int channelNumber)
 
- Public Member Functions inherited from inet::physicallayer::FlatTransmitterBase
 FlatTransmitterBase ()
 
virtual b getHeaderLength () const
 
virtual void setHeaderLength (b headerLength)
 
virtual bps getBitrate () const
 
virtual void setBitrate (bps bitrate)
 
virtual W getMaxPower () const override
 Returns the maximum transmission power above which no transmission is ever transmitted. More...
 
virtual W getPower () const
 
virtual void setPower (W power)
 
- Public Member Functions inherited from inet::physicallayer::NarrowbandTransmitterBase
 NarrowbandTransmitterBase ()
 
virtual const IModulationgetModulation () const
 
virtual void setModulation (const IModulation *modulation)
 
virtual Hz getCenterFrequency () const
 
virtual void setCenterFrequency (Hz centerFrequency)
 
virtual Hz getBandwidth () const
 
virtual void setBandwidth (Hz bandwidth)
 
- Public Member Functions inherited from inet::physicallayer::TransmitterBase
virtual m getMaxCommunicationRange () const override
 Returns the maximum communication range. More...
 
virtual m getMaxInterferenceRange () const override
 Returns the maximum interference range. More...
 
- Public Member Functions inherited from inet::physicallayer::ITransmitter
virtual const ITransmissioncreateTransmission (const IRadio *transmitter, const Packet *packet, const simtime_t startTime) const =0
 Returns a transmission which describes the radio signal corresponding to the provided packet. More...
 
- Public Member Functions inherited from inet::IPrintableObject
virtual ~IPrintableObject ()
 
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 void initialize (int stage) override
 
- Protected Member Functions inherited from inet::physicallayer::FlatTransmitterBase
virtual bps computeTransmissionPreambleBitrate (const Packet *packet) const
 
virtual bps computeTransmissionHeaderBitrate (const Packet *packet) const
 
virtual bps computeTransmissionDataBitrate (const Packet *packet) const
 
virtual W computeTransmissionPower (const Packet *packet) const
 
- Protected Member Functions inherited from inet::physicallayer::NarrowbandTransmitterBase
virtual Hz computeCenterFrequency (const Packet *packet) const
 
virtual Hz computeBandwidth (const Packet *packet) const
 
- Protected Member Functions inherited from inet::physicallayer::TransmitterBase
virtual int numInitStages () const override
 

Protected Attributes

const Ieee80211ModeSetmodeSet
 
const IIeee80211Modemode
 
const IIeee80211Bandband
 
const Ieee80211Channelchannel
 
- Protected Attributes inherited from inet::physicallayer::FlatTransmitterBase
simtime_t preambleDuration
 
b headerLength
 
bps bitrate
 
W power
 
- Protected Attributes inherited from inet::physicallayer::NarrowbandTransmitterBase
const IModulationmodulation
 
Hz centerFrequency
 
Hz bandwidth
 

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) }
 

Constructor & Destructor Documentation

◆ Ieee80211TransmitterBase()

inet::physicallayer::Ieee80211TransmitterBase::Ieee80211TransmitterBase ( )
16  :
17  modeSet(nullptr),
18  mode(nullptr),
19  band(nullptr),
20  channel(nullptr)
21 {
22 }

◆ ~Ieee80211TransmitterBase()

inet::physicallayer::Ieee80211TransmitterBase::~Ieee80211TransmitterBase ( )
virtual
25 {
26  delete channel;
27 }

Member Function Documentation

◆ computeTransmissionChannel()

const Ieee80211Channel * inet::physicallayer::Ieee80211TransmitterBase::computeTransmissionChannel ( const Packet packet) const
virtual
75 {
76  const Ieee80211Channel *transmissionChannel;
77  const auto& channelReq = const_cast<Packet *>(packet)->findTag<Ieee80211ChannelReq>();
78  transmissionChannel = channelReq != nullptr ? channelReq->getChannel() : channel;
79  if (transmissionChannel == nullptr)
80  throw cRuntimeError("Transmission channel is undefined");
81  return transmissionChannel;
82 
83 }

Referenced by inet::physicallayer::Ieee80211ScalarTransmitter::createTransmission(), and inet::physicallayer::Ieee80211DimensionalTransmitter::createTransmission().

◆ computeTransmissionMode()

const IIeee80211Mode * inet::physicallayer::Ieee80211TransmitterBase::computeTransmissionMode ( const Packet packet) const
virtual
56 {
57  const IIeee80211Mode *transmissionMode;
58  const auto& modeReq = const_cast<Packet *>(packet)->findTag<Ieee80211ModeReq>();
59  const auto& bitrateReq = const_cast<Packet *>(packet)->findTag<SignalBitrateReq>();
60  if (modeReq != nullptr) {
61  if (modeSet != nullptr && !modeSet->containsMode(modeReq->getMode()))
62  throw cRuntimeError("Unsupported mode requested");
63  transmissionMode = modeReq->getMode();
64  }
65  else if (modeSet != nullptr && bitrateReq != nullptr)
66  transmissionMode = modeSet->getMode(bitrateReq->getDataBitrate());
67  else
68  transmissionMode = mode;
69  if (transmissionMode == nullptr)
70  throw cRuntimeError("Transmission mode is undefined");
71  return transmissionMode;
72 }

Referenced by inet::physicallayer::Ieee80211ScalarTransmitter::createTransmission(), inet::physicallayer::Ieee80211DimensionalTransmitter::createTransmission(), and inet::physicallayer::Ieee80211UnitDiskTransmitter::createTransmission().

◆ initialize()

void inet::physicallayer::Ieee80211TransmitterBase::initialize ( int  stage)
overrideprotectedvirtual

Reimplemented from inet::physicallayer::FlatTransmitterBase.

Reimplemented in inet::physicallayer::Ieee80211UnitDiskTransmitter, and inet::physicallayer::Ieee80211DimensionalTransmitter.

30 {
32  if (stage == INITSTAGE_LOCAL) {
33  const char *opMode = par("opMode");
34  setModeSet(*opMode ? Ieee80211ModeSet::getModeSet(opMode) : nullptr);
35  const char *bandName = par("bandName");
36  setBand(*bandName != '\0' ? Ieee80211CompliantBands::getBand(bandName) : nullptr);
37  setMode(modeSet != nullptr ? (bitrate != bps(-1) ? modeSet->getMode(bitrate, bandwidth) : modeSet->getFastestMode()) : nullptr);
38  int channelNumber = par("channelNumber");
39  if (channelNumber != -1)
40  setChannelNumber(channelNumber);
41  }
42 }

Referenced by inet::physicallayer::Ieee80211DimensionalTransmitter::initialize(), and inet::physicallayer::Ieee80211UnitDiskTransmitter::initialize().

◆ printToStream()

std::ostream & inet::physicallayer::Ieee80211TransmitterBase::printToStream ( std::ostream &  stream,
int  level,
int  evFlags = 0 
) const
overridevirtual

◆ setBand()

void inet::physicallayer::Ieee80211TransmitterBase::setBand ( const IIeee80211Band band)
virtual
104 {
105  if (this->band != band) {
106  this->band = band;
107  if (channel != nullptr)
108  setChannel(new Ieee80211Channel(band, channel->getChannelNumber()));
109  }
110 }

Referenced by initialize(), and inet::physicallayer::Ieee80211Radio::setBand().

◆ setChannel()

void inet::physicallayer::Ieee80211TransmitterBase::setChannel ( const Ieee80211Channel channel)
virtual
113 {
114  if (this->channel != channel) {
115  delete this->channel;
116  this->channel = channel;
118  }
119 }

Referenced by setBand(), inet::physicallayer::Ieee80211Radio::setChannel(), and setChannelNumber().

◆ setChannelNumber()

void inet::physicallayer::Ieee80211TransmitterBase::setChannelNumber ( int  channelNumber)
virtual
122 {
123  if (channel == nullptr || channelNumber != channel->getChannelNumber())
124  setChannel(new Ieee80211Channel(band, channelNumber));
125 }

Referenced by initialize(), and inet::physicallayer::Ieee80211Radio::setChannelNumber().

◆ setMode()

void inet::physicallayer::Ieee80211TransmitterBase::setMode ( const IIeee80211Mode mode)
virtual
95 {
96  if (this->mode != mode) {
98  throw cRuntimeError("Invalid mode");
99  this->mode = mode;
100  }
101 }

Referenced by initialize(), and inet::physicallayer::Ieee80211Radio::setMode().

◆ setModeSet()

void inet::physicallayer::Ieee80211TransmitterBase::setModeSet ( const Ieee80211ModeSet modeSet)
virtual
86 {
87  if (this->modeSet != modeSet) {
88  this->modeSet = modeSet;
89  if (mode != nullptr)
90  mode = modeSet != nullptr ? modeSet->getMode(mode->getDataMode()->getNetBitrate()) : nullptr;
91  }
92 }

Referenced by initialize(), and inet::physicallayer::Ieee80211Radio::setModeSet().

Member Data Documentation

◆ band

const IIeee80211Band* inet::physicallayer::Ieee80211TransmitterBase::band
protected

◆ channel

◆ mode

const IIeee80211Mode* inet::physicallayer::Ieee80211TransmitterBase::mode
protected

◆ modeSet

const Ieee80211ModeSet* inet::physicallayer::Ieee80211TransmitterBase::modeSet
protected

The documentation for this class was generated from the following files:
inet::physicallayer::Ieee80211TransmitterBase::mode
const IIeee80211Mode * mode
Definition: Ieee80211TransmitterBase.h:25
inet::physicallayer::Ieee80211TransmitterBase::channel
const Ieee80211Channel * channel
Definition: Ieee80211TransmitterBase.h:27
inet::physicallayer::Ieee80211TransmitterBase::setMode
virtual void setMode(const IIeee80211Mode *mode)
Definition: Ieee80211TransmitterBase.cc:94
inet::IPrintableObject::PRINT_LEVEL_INFO
@ PRINT_LEVEL_INFO
Definition: IPrintableObject.h:25
inet::units::units::bps
compose< b, pow< s, -1 > > bps
Definition: Units.h:1169
inet::physicallayer::IIeee80211Mode::getDataMode
virtual const IIeee80211DataMode * getDataMode() const =0
inet::physicallayer::Ieee80211ModeSet::containsMode
bool containsMode(const IIeee80211Mode *mode) const
Definition: Ieee80211ModeSet.h:48
inet::physicallayer::IIeee80211DataMode::getNetBitrate
virtual bps getNetBitrate() const =0
inet::physicallayer::Ieee80211TransmitterBase::band
const IIeee80211Band * band
Definition: Ieee80211TransmitterBase.h:26
inet::physicallayer::Ieee80211CompliantBands::getBand
static const IIeee80211Band * getBand(const char *name)
Definition: Ieee80211Band.cc:87
inet::printFieldToString
std::string printFieldToString(const IPrintableObject *object, int level, int evFlags=0)
Definition: IPrintableObject.h:98
inet::physicallayer::FlatTransmitterBase::bitrate
bps bitrate
Definition: FlatTransmitterBase.h:22
inet::physicallayer::FlatTransmitterBase::printToStream
virtual std::ostream & printToStream(std::ostream &stream, int level, int evFlags=0) const override
Prints this object to the provided output stream.
Definition: FlatTransmitterBase.cc:35
inet::physicallayer::IIeee80211DataMode::getBandwidth
virtual Hz getBandwidth() const =0
EV_FIELD
#define EV_FIELD(...)
Definition: INETDefs.h:112
inet::physicallayer::Ieee80211Channel::getChannelNumber
virtual int getChannelNumber() const
Definition: Ieee80211Channel.h:29
inet::INITSTAGE_LOCAL
INET_API InitStage INITSTAGE_LOCAL
Initialization of local state that don't use or affect other modules includes:
inet::IPrintableObject::PRINT_LEVEL_TRACE
@ PRINT_LEVEL_TRACE
Definition: IPrintableObject.h:22
inet::physicallayer::Ieee80211TransmitterBase::setModeSet
virtual void setModeSet(const Ieee80211ModeSet *modeSet)
Definition: Ieee80211TransmitterBase.cc:85
inet::physicallayer::Ieee80211TransmitterBase::setBand
virtual void setBand(const IIeee80211Band *band)
Definition: Ieee80211TransmitterBase.cc:103
inet::physicallayer::FlatTransmitterBase::initialize
virtual void initialize(int stage) override
Definition: FlatTransmitterBase.cc:24
inet::evFlags
int evFlags
Definition: INETDefs.cc:12
inet::physicallayer::Ieee80211TransmitterBase::setChannelNumber
virtual void setChannelNumber(int channelNumber)
Definition: Ieee80211TransmitterBase.cc:121
inet::physicallayer::NarrowbandTransmitterBase::bandwidth
Hz bandwidth
Definition: NarrowbandTransmitterBase.h:23
inet::physicallayer::Ieee80211ModeSet::findMode
const IIeee80211Mode * findMode(bps bitrate, Hz bandwidth=Hz(NaN), int numSpatialStreams=-1) const
Definition: Ieee80211ModeSet.cc:498
inet::physicallayer::Ieee80211TransmitterBase::setChannel
virtual void setChannel(const Ieee80211Channel *channel)
Definition: Ieee80211TransmitterBase.cc:112
inet::physicallayer::Ieee80211ModeSet::getFastestMode
const IIeee80211Mode * getFastestMode() const
Definition: Ieee80211ModeSet.cc:542
inet::physicallayer::Ieee80211Channel::getCenterFrequency
virtual Hz getCenterFrequency() const
Definition: Ieee80211Channel.h:30
inet::physicallayer::NarrowbandTransmitterBase::setCenterFrequency
virtual void setCenterFrequency(Hz centerFrequency)
Definition: NarrowbandTransmitterBase.h:40
inet::physicallayer::Ieee80211TransmitterBase::modeSet
const Ieee80211ModeSet * modeSet
Definition: Ieee80211TransmitterBase.h:24
inet::physicallayer::Ieee80211ModeSet::getModeSet
static const Ieee80211ModeSet * getModeSet(const char *mode)
Definition: Ieee80211ModeSet.cc:611
inet::physicallayer::Ieee80211ModeSet::getMode
const IIeee80211Mode * getMode(bps bitrate, Hz bandwidth=Hz(NaN), int numSpatialStreams=-1) const
Definition: Ieee80211ModeSet.cc:519