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

Implements the UnitDiskTransmitter model, see the NED file for details. More...

#include <UnitDiskTransmitter.h>

Inheritance diagram for inet::physicallayer::UnitDiskTransmitter:
inet::physicallayer::TransmitterBase inet::physicallayer::ITransmitter inet::IPrintableObject

Public Member Functions

 UnitDiskTransmitter ()
 
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 ITransmissioncreateTransmission (const IRadio *radio, const Packet *packet, const simtime_t startTime) const override
 Returns a transmission which describes the radio signal corresponding to the provided packet. More...
 
virtual simtime_t getPreambleDuration () const
 
virtual b getHeaderLength () const
 
virtual bps getBitrate () const
 
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::TransmitterBase
virtual W getMaxPower () const override
 Returns the maximum transmission power above which no transmission is ever transmitted. 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::TransmitterBase
virtual int numInitStages () const override
 

Protected Attributes

simtime_t preambleDuration
 
b headerLength
 
bps bitrate
 
m communicationRange
 
m interferenceRange
 
m detectionRange
 

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

Detailed Description

Implements the UnitDiskTransmitter model, see the NED file for details.

Constructor & Destructor Documentation

◆ UnitDiskTransmitter()

inet::physicallayer::UnitDiskTransmitter::UnitDiskTransmitter ( )
20  :
21  headerLength(b(-1)),
22  bitrate(NaN),
26 {
27 }

Member Function Documentation

◆ createTransmission()

const ITransmission * inet::physicallayer::UnitDiskTransmitter::createTransmission ( const IRadio transmitter,
const Packet packet,
const simtime_t  startTime 
) const
overridevirtual

Returns a transmission which describes the radio signal corresponding to the provided packet.

This function never returns nullptr.

Implements inet::physicallayer::ITransmitter.

57 {
58  auto phyHeader = packet->peekAtFront<UnitDiskPhyHeader>();
59  auto dataLength = packet->getTotalLength() - phyHeader->getChunkLength();
60  const auto& signalBitrateReq = const_cast<Packet *>(packet)->findTag<SignalBitrateReq>();
61  auto transmissionBitrate = signalBitrateReq != nullptr ? signalBitrateReq->getDataBitrate() : bitrate;
62  auto headerDuration = b(headerLength).get() / bps(transmissionBitrate).get();
63  auto dataDuration = b(dataLength).get() / bps(transmissionBitrate).get();
64  auto duration = preambleDuration + headerDuration + dataDuration;
65  auto endTime = startTime + duration;
66  auto mobility = transmitter->getAntenna()->getMobility();
67  auto startPosition = mobility->getCurrentPosition();
68  auto endPosition = mobility->getCurrentPosition();
69  auto startOrientation = mobility->getCurrentAngularPosition();
70  auto endOrientation = mobility->getCurrentAngularPosition();
71  return new UnitDiskTransmission(transmitter, packet, startTime, endTime,
72  preambleDuration, headerDuration, dataDuration,
73  startPosition, endPosition, startOrientation, endOrientation,
75 }

◆ getBitrate()

virtual bps inet::physicallayer::UnitDiskTransmitter::getBitrate ( ) const
inlinevirtual
40 { return bitrate; }

◆ getHeaderLength()

virtual b inet::physicallayer::UnitDiskTransmitter::getHeaderLength ( ) const
inlinevirtual
39 { return headerLength; }

◆ getMaxCommunicationRange()

virtual m inet::physicallayer::UnitDiskTransmitter::getMaxCommunicationRange ( ) const
inlineoverridevirtual

Returns the maximum communication range.

Returns a value in the range [0, +infinity] or NaN if unspecified.

Reimplemented from inet::physicallayer::TransmitterBase.

41 { return communicationRange; }

◆ getMaxInterferenceRange()

virtual m inet::physicallayer::UnitDiskTransmitter::getMaxInterferenceRange ( ) const
inlineoverridevirtual

Returns the maximum interference range.

Returns a value in the range [0, +infinity] or NaN if unspecified.

Reimplemented from inet::physicallayer::TransmitterBase.

42 { return interferenceRange; }

◆ getPreambleDuration()

virtual simtime_t inet::physicallayer::UnitDiskTransmitter::getPreambleDuration ( ) const
inlinevirtual
38 { return preambleDuration; }

◆ initialize()

void inet::physicallayer::UnitDiskTransmitter::initialize ( int  stage)
overrideprotectedvirtual
30 {
31  if (stage == INITSTAGE_LOCAL) {
32  preambleDuration = par("preambleDuration");
33  headerLength = b(par("headerLength"));
34  bitrate = bps(par("bitrate"));
35  communicationRange = m(par("communicationRange"));
36  interferenceRange = m(par("interferenceRange"));
37  detectionRange = m(par("detectionRange"));
38  }
39 }

◆ printToStream()

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

Prints this object to the provided output stream.

Reimplemented from inet::IPrintableObject.

42 {
43  stream << "UnitDiskTransmitter";
44  if (level <= PRINT_LEVEL_TRACE)
45  stream << EV_FIELD(preambleDuration)
47  << EV_FIELD(bitrate);
48  if (level <= PRINT_LEVEL_INFO)
49  stream << EV_FIELD(communicationRange);
50  if (level <= PRINT_LEVEL_TRACE)
51  stream << EV_FIELD(interferenceRange)
53  return stream;
54 }

Member Data Documentation

◆ bitrate

bps inet::physicallayer::UnitDiskTransmitter::bitrate
protected

◆ communicationRange

m inet::physicallayer::UnitDiskTransmitter::communicationRange
protected

◆ detectionRange

m inet::physicallayer::UnitDiskTransmitter::detectionRange
protected

◆ headerLength

b inet::physicallayer::UnitDiskTransmitter::headerLength
protected

◆ interferenceRange

m inet::physicallayer::UnitDiskTransmitter::interferenceRange
protected

◆ preambleDuration

simtime_t inet::physicallayer::UnitDiskTransmitter::preambleDuration
protected

The documentation for this class was generated from the following files:
inet::physicallayer::UnitDiskTransmitter::communicationRange
m communicationRange
Definition: UnitDiskTransmitter.h:26
inet::physicallayer::UnitDiskTransmitter::interferenceRange
m interferenceRange
Definition: UnitDiskTransmitter.h:27
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
EV_FIELD
#define EV_FIELD(...)
Definition: INETDefs.h:112
inet::physicallayer::UnitDiskTransmitter::bitrate
bps bitrate
Definition: UnitDiskTransmitter.h:25
NaN
#define NaN
Definition: INETMath.h:91
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::units::values::b
value< int64_t, units::b > b
Definition: Units.h:1241
inet::physicallayer::UnitDiskTransmitter::detectionRange
m detectionRange
Definition: UnitDiskTransmitter.h:28
inet::physicallayer::UnitDiskTransmitter::preambleDuration
simtime_t preambleDuration
Definition: UnitDiskTransmitter.h:23
inet::units::values::m
value< double, units::m > m
Definition: Units.h:1233
inet::physicallayer::UnitDiskTransmitter::headerLength
b headerLength
Definition: UnitDiskTransmitter.h:24