Package: inet.physicallayer.common.packetlevel
Radio
compound moduleThe radio model describes the physical device that is capable of transmitting and receiving signals on the medium. It contains an antenna model, a transmitter model, a receiver model, and an energy consumer model.
The radio model supports changing radio mode, transmission power, or bitrate via ConfigureRadioCommand, or with direct C++ function calls.
switchingTimes parameter should be regarded as a 5x5 matrix:
OFF SLEEP RECEIVER TRANSMITTER TRANSCEIVER OFF 0 0 0 0 0 SLEEP 0 0 0 0 0 RECEIVER 0 0 0 0 0 TRANSMITTER 0 0 0 0 0 TRANSCEIVER 0 0 0 0 0
The corresponding RadioMode pairs contain the time needed to switch from one state to another. For example: the 6th number identifies the time needed to switch from SLEEP to OFF.
The first entry of the switchingTimes string indicates the time-related metric prefix and it MUST be s, ms or ns.
Usage diagram
The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.
Inheritance diagram
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.
Known subclasses
Name | Type | Description |
---|---|---|
IdealRadio | compound module |
This radio model provides a very simple but fast and predictable physical layer behavior. It must be used in conjunction with the IdealRadioMedium model. |
Ieee802154UWBIRRadio | compound module | (no description) |
NarrowbandRadioBase | compound module |
This module servces as a base module for narrowband radio models. |
Parameters
Name | Type | Default value | Description |
---|---|---|---|
antennaType | string |
NED type of the antenna model |
|
transmitterType | string |
NED type of the transmitter model |
|
receiverType | string |
NED type of the receiver model |
|
energyConsumerType | string | "" |
NED type of the energy consumer model |
radioMediumModule | string | "radioMedium" |
module path of the medium module where this radio communicates |
energySourceModule | string | "" |
module path of the energy source module which provides energy to the radio |
switchingTimes | string | "ms 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0" |
time parameters to switch between radio modes |
separateTransmissionParts | bool | false |
when enabled the transmission of preamble, header and data part are simulated separately |
separateReceptionParts | bool | false |
when enabled the reception of preamble, header and data part are simulated separately |
displayCommunicationRange | bool | false |
if true communication range is displayed as a blue circle around the node |
displayInterferenceRange | bool | false |
if true interference range is displayed as a gray circle around the node |
Properties
Name | Value | Description |
---|---|---|
class | Radio | |
display | i=block/wrxtx |
Gates
Name | Direction | Size | Description |
---|---|---|---|
upperLayerIn | input | ||
upperLayerOut | output | ||
radioIn | input |
Signals
Name | Type | Unit |
---|---|---|
receptionStateChanged | long | |
bitErrorRate | ||
radioModeChanged | long | |
transmittedSignalPartChanged | long | |
packetReceivedFromUpper | cPacket | |
receivedSignalPartChanged | long | |
packetErrorRate | ||
symbolErrorRate | ||
packetSentToUpper | cPacket | |
transmissionStateChanged | long | |
listeningChanged | ||
minSNIR |
Statistics
Name | Title | Source | Record | Unit | Interpolation Mode |
---|---|---|---|---|---|
receptionState | Radio reception state | receptionStateChanged | count, vector | sample-hold | |
bitErrorRate | Bit error rate | bitErrorRate | histogram | ||
radioMode | Radio mode | radioModeChanged | count, vector | sample-hold | |
packetErrorRate | Packet error rate | packetErrorRate | histogram | ||
symbolErrorRate | Symbol error rate | symbolErrorRate | histogram | ||
transmissionState | Radio transmission state | transmissionStateChanged | count, vector | sample-hold | |
minSNIR | Min SNIR | minSNIR | histogram |
Source code
// // The radio model describes the physical device that is capable of transmitting // and receiving signals on the medium. It contains an antenna model, a // transmitter model, a receiver model, and an energy consumer model. // // The radio model supports changing radio mode, transmission power, or bitrate // via ~ConfigureRadioCommand, or with direct C++ function calls. // // switchingTimes parameter should be regarded as a 5x5 matrix: // // OFF SLEEP RECEIVER TRANSMITTER TRANSCEIVER // OFF 0 0 0 0 0 // SLEEP 0 0 0 0 0 // RECEIVER 0 0 0 0 0 // TRANSMITTER 0 0 0 0 0 // TRANSCEIVER 0 0 0 0 0 // // The corresponding RadioMode pairs contain the time needed to // switch from one state to another. // For example: the 6th number identifies the time needed to switch // from SLEEP to OFF. // // The first entry of the switchingTimes string indicates the // time-related metric prefix and it MUST be s, ms or ns. // module Radio like IRadio { parameters: string antennaType; // NED type of the antenna model string transmitterType; // NED type of the transmitter model string receiverType; // NED type of the receiver model string energyConsumerType = default(""); // NED type of the energy consumer model string radioMediumModule = default("radioMedium"); // module path of the medium module where this radio communicates string energySourceModule = default(""); // module path of the energy source module which provides energy to the radio string switchingTimes = default("ms 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"); // time parameters to switch between radio modes bool separateTransmissionParts = default(false); // when enabled the transmission of preamble, header and data part are simulated separately bool separateReceptionParts = default(false); // when enabled the reception of preamble, header and data part are simulated separately bool displayCommunicationRange = default(false); // if true communication range is displayed as a blue circle around the node bool displayInterferenceRange = default(false); // if true interference range is displayed as a gray circle around the node *.energySourceModule = default(absPath(this.energySourceModule)); @class(Radio); @display("i=block/wrxtx"); @signal[packetSentToUpper](type=cPacket); @signal[packetReceivedFromUpper](type=cPacket); @signal[radioModeChanged](type=long); @signal[listeningChanged]; @signal[receptionStateChanged](type=long); @signal[transmissionStateChanged](type=long); @signal[receivedSignalPartChanged](type=long); @signal[transmittedSignalPartChanged](type=long); @signal[minSNIR]; @signal[packetErrorRate]; @signal[bitErrorRate]; @signal[symbolErrorRate]; @statistic[radioMode](title="Radio mode"; source=radioModeChanged; record=count,vector; interpolationmode=sample-hold); @statistic[receptionState](title="Radio reception state"; source=receptionStateChanged; record=count,vector; interpolationmode=sample-hold); @statistic[transmissionState](title="Radio transmission state"; source=transmissionStateChanged; record=count,vector; interpolationmode=sample-hold); @statistic[minSNIR](title="Min SNIR"; source=minSNIR; record=histogram); @statistic[packetErrorRate](title="Packet error rate"; source=packetErrorRate; record=histogram); @statistic[bitErrorRate](title="Bit error rate"; source=bitErrorRate; record=histogram); @statistic[symbolErrorRate](title="Symbol error rate"; source=symbolErrorRate; record=histogram); gates: input upperLayerIn @labels(ILinkLayerFrame/down); output upperLayerOut @labels(ILinkLayerFrame/up); input radioIn @labels(IRadioFrame); submodules: antenna: <antennaType> like IAntenna { parameters: @display("p=100,50"); } transmitter: <transmitterType> like ITransmitter { parameters: @display("p=100,150"); } receiver: <receiverType> like IReceiver { parameters: @display("p=100,250"); } energyConsumer: <energyConsumerType> like IEnergyConsumer if energyConsumerType != "" { parameters: @display("p=100,350"); } }File: src/inet/physicallayer/common/packetlevel/Radio.ned