|
INET Framework for OMNeT++/OMNEST
|
#include <ApskLayeredTransmitter.h>
◆ LevelOfDetail
| Enumerator |
|---|
| PACKET_DOMAIN | |
| BIT_DOMAIN | |
| SYMBOL_DOMAIN | |
| SAMPLE_DOMAIN | |
◆ ApskLayeredTransmitter()
| inet::physicallayer::ApskLayeredTransmitter::ApskLayeredTransmitter |
( |
| ) |
|
◆ createAnalogModel()
137 if (sampleModel ==
nullptr)
138 throw cRuntimeError(
"Digital analog converter needs sample domain representation");
143 simtime_t duration = packetModel->getPacket()->getBitLength() /
bitrate.
get();
Referenced by createTransmission().
◆ createBitModel()
98 auto packet = packetModel->getPacket();
99 b netHeaderLength = packet->peekAtFront<ApskPhyHeader>()->getChunkLength();
100 b netDataLength = packet->getTotalLength() - netHeaderLength;
102 const ApskEncoder *apskEncoder = check_and_cast<const ApskEncoder *>(
encoder);
103 const ConvolutionalCode *forwardErrorCorrection = apskEncoder->getCode()->getConvolutionalCode();
104 if (forwardErrorCorrection ==
nullptr)
105 return new TransmissionBitModel(netHeaderLength,
bitrate, netDataLength,
bitrate,
nullptr, forwardErrorCorrection,
nullptr,
nullptr);
107 b grossHeaderLength =
b(forwardErrorCorrection->getEncodedLength(
b(netHeaderLength).get()));
108 b grossDataLength =
b(forwardErrorCorrection->getEncodedLength(
b(netDataLength).get()));
109 bps grossBitrate =
bitrate / forwardErrorCorrection->getCodeRate();
110 return new TransmissionBitModel(grossHeaderLength, grossBitrate, grossDataLength, grossBitrate,
nullptr, forwardErrorCorrection,
nullptr,
nullptr);
114 return new TransmissionBitModel(netHeaderLength,
bitrate, netDataLength,
bitrate,
nullptr,
nullptr,
nullptr,
nullptr);
Referenced by createTransmission().
◆ createPacketModel()
◆ createSampleModel()
◆ createSymbolModel()
◆ createTransmission()
| const ITransmission * inet::physicallayer::ApskLayeredTransmitter::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.
151 const ITransmissionBitModel *bitModel =
createBitModel(packetModel);
154 const ITransmissionAnalogModel *analogModel =
createAnalogModel(packetModel, bitModel, sampleModel);
156 IMobility *mobility = transmitter->getAntenna()->getMobility();
157 const simtime_t endTime = startTime + analogModel->getDuration();
158 const Coord& startPosition = mobility->getCurrentPosition();
159 const Coord& endPosition = mobility->getCurrentPosition();
160 const Quaternion& startOrientation = mobility->getCurrentAngularPosition();
161 const Quaternion& endOrientation = mobility->getCurrentAngularPosition();
162 return new LayeredTransmission(packetModel, bitModel, symbolModel, sampleModel, analogModel, transmitter, packet, startTime, endTime, -1, -1, -1, startPosition, endPosition, startOrientation, endOrientation);
◆ getBandwidth()
| virtual const Hz inet::physicallayer::ApskLayeredTransmitter::getBandwidth |
( |
| ) |
const |
|
inlinevirtual |
◆ getBitrate()
| virtual bps inet::physicallayer::ApskLayeredTransmitter::getBitrate |
( |
| ) |
const |
|
inlinevirtual |
◆ getCenterFrequency()
| virtual const Hz inet::physicallayer::ApskLayeredTransmitter::getCenterFrequency |
( |
| ) |
const |
|
inlinevirtual |
◆ getDigitalAnalogConverter()
| virtual const IDigitalAnalogConverter* inet::physicallayer::ApskLayeredTransmitter::getDigitalAnalogConverter |
( |
| ) |
const |
|
inlinevirtual |
◆ getEncoder()
| virtual const IEncoder* inet::physicallayer::ApskLayeredTransmitter::getEncoder |
( |
| ) |
const |
|
inlinevirtual |
◆ getMaxCommunicationRange()
| virtual m inet::physicallayer::ApskLayeredTransmitter::getMaxCommunicationRange |
( |
| ) |
const |
|
inlineoverridevirtual |
◆ getMaxInterferenceRange()
| virtual m inet::physicallayer::ApskLayeredTransmitter::getMaxInterferenceRange |
( |
| ) |
const |
|
inlineoverridevirtual |
◆ getMaxPower()
| virtual W inet::physicallayer::ApskLayeredTransmitter::getMaxPower |
( |
| ) |
const |
|
inlineoverridevirtual |
Returns the maximum transmission power above which no transmission is ever transmitted.
Returns a value in the range [0, +infinity] or NaN if unspecified.
Reimplemented from inet::physicallayer::TransmitterBase.
◆ getModulator()
| virtual const IModulator* inet::physicallayer::ApskLayeredTransmitter::getModulator |
( |
| ) |
const |
|
inlinevirtual |
◆ getPower()
| virtual W inet::physicallayer::ApskLayeredTransmitter::getPower |
( |
| ) |
const |
|
inlinevirtual |
◆ getPulseShaper()
| virtual const IPulseShaper* inet::physicallayer::ApskLayeredTransmitter::getPulseShaper |
( |
| ) |
const |
|
inlinevirtual |
◆ initialize()
| void inet::physicallayer::ApskLayeredTransmitter::initialize |
( |
int |
stage | ) |
|
|
overrideprotectedvirtual |
41 encoder =
dynamic_cast<const IEncoder *
>(getSubmodule(
"encoder"));
42 modulator =
dynamic_cast<const IModulator *
>(getSubmodule(
"modulator"));
43 pulseShaper =
dynamic_cast<const IPulseShaper *
>(getSubmodule(
"pulseShaper"));
44 digitalAnalogConverter =
dynamic_cast<const IDigitalAnalogConverter *
>(getSubmodule(
"digitalAnalogConverter"));
48 throw cRuntimeError(
"Invalid birate: %s",
bitrate.
str().c_str());
51 const char *levelOfDetailStr = par(
"levelOfDetail");
52 if (strcmp(
"packet", levelOfDetailStr) == 0)
54 else if (strcmp(
"bit", levelOfDetailStr) == 0)
56 else if (strcmp(
"symbol", levelOfDetailStr) == 0)
58 else if (strcmp(
"sample", levelOfDetailStr) == 0)
61 throw cRuntimeError(
"Unknown level of detail='%s'", levelOfDetailStr);
63 throw cRuntimeError(
"Encoder not configured");
65 throw cRuntimeError(
"Modulator not configured");
67 throw cRuntimeError(
"Pulse shaper not configured");
◆ printToStream()
| std::ostream & inet::physicallayer::ApskLayeredTransmitter::printToStream |
( |
std::ostream & |
stream, |
|
|
int |
level, |
|
|
int |
evFlags = 0 |
|
) |
| const |
|
overridevirtual |
Prints this object to the provided output stream.
Reimplemented from inet::IPrintableObject.
73 stream <<
"ApskLayeredTransmitter";
◆ bandwidth
| Hz inet::physicallayer::ApskLayeredTransmitter::bandwidth |
|
protected |
◆ bitrate
| bps inet::physicallayer::ApskLayeredTransmitter::bitrate |
|
protected |
◆ centerFrequency
| Hz inet::physicallayer::ApskLayeredTransmitter::centerFrequency |
|
protected |
◆ digitalAnalogConverter
◆ encoder
| const IEncoder* inet::physicallayer::ApskLayeredTransmitter::encoder |
|
protected |
◆ levelOfDetail
| LevelOfDetail inet::physicallayer::ApskLayeredTransmitter::levelOfDetail |
|
protected |
◆ modulator
| const IModulator* inet::physicallayer::ApskLayeredTransmitter::modulator |
|
protected |
◆ power
| W inet::physicallayer::ApskLayeredTransmitter::power |
|
protected |
◆ pulseShaper
| const IPulseShaper* inet::physicallayer::ApskLayeredTransmitter::pulseShaper |
|
protected |
The documentation for this class was generated from the following files:
@ PACKET_DOMAIN
Definition: ApskLayeredTransmitter.h:27
virtual const ITransmissionSampleModel * shape(const ITransmissionSymbolModel *symbolModel) const =0
LevelOfDetail
Definition: ApskLayeredTransmitter.h:26
std::string str() const
Definition: Units.h:101
virtual const ITransmissionPacketModel * createPacketModel(const Packet *packet) const
Definition: ApskLayeredTransmitter.cc:88
bps bitrate
Definition: ApskLayeredTransmitter.h:40
pow< s, -1 > Hz
Definition: Units.h:935
@ PRINT_LEVEL_DETAIL
Definition: IPrintableObject.h:24
virtual const ITransmissionSymbolModel * createSymbolModel(const ITransmissionBitModel *bitModel) const
Definition: ApskLayeredTransmitter.cc:118
compose< b, pow< s, -1 > > bps
Definition: Units.h:1169
virtual const ITransmissionAnalogModel * convertDigitalToAnalog(const ITransmissionSampleModel *sampleModel) const =0
compose< J, pow< s, -1 > > W
Definition: Units.h:939
const IDigitalAnalogConverter * digitalAnalogConverter
Definition: ApskLayeredTransmitter.h:38
virtual const ITransmissionAnalogModel * createAnalogModel(const ITransmissionPacketModel *packetModel, const ITransmissionBitModel *bitModel, const ITransmissionSampleModel *sampleModel) const
Definition: ApskLayeredTransmitter.cc:134
Hz bandwidth
Definition: ApskLayeredTransmitter.h:41
LevelOfDetail levelOfDetail
Definition: ApskLayeredTransmitter.h:34
W power
Definition: ApskLayeredTransmitter.h:39
virtual const ITransmissionSymbolModel * modulate(const ITransmissionBitModel *bitModel) const =0
std::string printFieldToString(const IPrintableObject *object, int level, int evFlags=0)
Definition: IPrintableObject.h:98
virtual const ITransmissionBitModel * encode(const ITransmissionPacketModel *packetModel) const =0
#define EV_FIELD(...)
Definition: INETDefs.h:112
const IModulator * modulator
Definition: ApskLayeredTransmitter.h:36
@ BIT_DOMAIN
Definition: ApskLayeredTransmitter.h:28
#define NaN
Definition: INETMath.h:91
INET_API InitStage INITSTAGE_LOCAL
Initialization of local state that don't use or affect other modules includes:
Hz centerFrequency
Definition: ApskLayeredTransmitter.h:42
@ PRINT_LEVEL_TRACE
Definition: IPrintableObject.h:22
value< int64_t, units::b > b
Definition: Units.h:1241
int evFlags
Definition: INETDefs.cc:12
virtual const IModulation * getModulation() const =0
const IPulseShaper * pulseShaper
Definition: ApskLayeredTransmitter.h:37
const value_type & get() const
Definition: Units.h:108
virtual const ITransmissionBitModel * createBitModel(const ITransmissionPacketModel *packetModel) const
Definition: ApskLayeredTransmitter.cc:93
virtual const ITransmissionSampleModel * createSampleModel(const ITransmissionSymbolModel *symbolModel) const
Definition: ApskLayeredTransmitter.cc:126
value< double, units::m > m
Definition: Units.h:1233
const IEncoder * encoder
Definition: ApskLayeredTransmitter.h:35
@ SAMPLE_DOMAIN
Definition: ApskLayeredTransmitter.h:30
@ SYMBOL_DOMAIN
Definition: ApskLayeredTransmitter.h:29