RadioMedium

Package: inet.physicallayer.wireless.common.medium

compound module RadioMedium

The medium model describes the shared physical medium where communication takes place. It keeps track of radios, noise sources, ongoing transmissions, background noise, and other ongoing noises. The medium computes when, where and how transmissions and noises arrive at receivers. It also efficiently provides the set of interfering transmissions and noises for the receivers.

RadioMediumpropagation: inet.physicallayer.wireless.common.propagation.ConstantSpeedPropagation (like IPropagation) ConstantSpeedPropagation: This propagation model computes the propagation time to be proportional to the traveled distance,... IPropagation: The propagation model describes how a radio signal propagates through space over time. Source: propagation: <default("ConstantSpeedPropagation")> like IPropagation { parameters: @display("p=100,100"); }propagationanalogModel: inet.physicallayer.wireless.common.contract.packetlevel.IMediumAnalogModel (like IMediumAnalogModel) IMediumAnalogModel: The analog model describes how the analog representation of the transmissions is turned into the... Source: analogModel: <default(signalAnalogRepresentation == "unitDisk" ? "UnitDiskMediumAnalogModel" : signalAnalogRepresentation == "scalar" ? "ScalarMediumAnalogModel" : signalAnalogRepresentation == "dimensional" ? "DimensionalMediumAnalogModel" : "")> like IMediumAnalogModel { parameters:...analogModelbackgroundNoise: inet.physicallayer.wireless.common.contract.packetlevel.IBackgroundNoise (like IBackgroundNoise) IBackgroundNoise: The background noise model describes the thermal noise, the cosmic background noise, and other ra... Source: backgroundNoise: <default(signalAnalogRepresentation == "scalar" ? "IsotropicScalarBackgroundNoise" : signalAnalogRepresentation == "dimensional" ? "IsotropicDimensionalBackgroundNoise" : "")> like IBackgroundNoise if typename != "" { parameters: @display("p=100,300");...backgroundNoisepathLoss: inet.physicallayer.wireless.common.pathloss.FreeSpacePathLoss (like IPathLoss) FreeSpacePathLoss: Implements the free space path loss model, which models signal attenuation over distance accordin... IPathLoss: The path loss model describes the reduction of power as the signal propagates through space. Source: pathLoss: <default("FreeSpacePathLoss")> like IPathLoss { parameters: @display("p=300,100"); }pathLossobstacleLoss: inet.physicallayer.wireless.common.contract.packetlevel.IObstacleLoss (like IObstacleLoss) IObstacleLoss: The obstacle loss model describes the reduction of power as the signal passes through physical ob... Source: obstacleLoss: <default("")> like IObstacleLoss if typename != "" { parameters: @display("p=300,200"); }obstacleLossmediumLimitCache: inet.physicallayer.wireless.common.medium.MediumLimitCache (like IMediumLimitCache) MediumLimitCache: Caches various limits and constraints of the radio medium to optimize performance. IMediumLimitCache: Module interface for caching various limits and constraints of the radio medium to optimize perfo... Source: mediumLimitCache: <default("MediumLimitCache")> like IMediumLimitCache { parameters: @display("p=500,100"); }mediumLimitCachecommunicationCache: inet.physicallayer.wireless.common.communicationcache.VectorCommunicationCache (like ICommunicationCache) VectorCommunicationCache: This communication cache model stores radio, transmission and reception related intermediate comp... ICommunicationCache: Module interface for communication caches that store and manage radio and transmission data in wi... Source: communicationCache: <default("VectorCommunicationCache")> like ICommunicationCache { parameters: @display("p=500,300"); }communicationCacheneighborCache: inet.physicallayer.wireless.common.contract.packetlevel.INeighborCache (like INeighborCache) INeighborCache: The neighbor cache model computes the affected set of receivers on the medium for a given transmi... Source: neighborCache: <default("")> like INeighborCache if typename != "" { parameters: @display("p=500,200"); }neighborCache

Usage diagram

Inheritance diagram

Used in

Name

Type

Description

WirelessNetworkBase

network

(no description)

Known subclasses

Name

Type

Description

DimensionalRadioMedium

compound module

Radio medium model that uses dimensional representation (time and frequency domain) for signal power. Provides more accurate modeling of signal propagation, interference, and reception compared to scalar or unit disk models. Suitable for simulations requiring detailed physical layer behavior.

ScalarRadioMedium

compound module

Radio medium model that uses scalar representation for signal power. Provides a simpler and more computationally efficient alternative to dimensional models by representing signals as single scalar values rather than as functions of time and frequency. Suitable for simulations where detailed physical layer behavior is not required.

UnitDiskRadioMedium

compound module

This radio medium model provides a very simple but fast and predictable physical layer behavior. The idea behind this analog model is to describe transmissions with a few distance-based parameters: communication range, interference range, and detection range. Whether the reception is successful or not depends on the distance between the transmitter and the receiver.

Ieee80211RadioMedium

compound module

This radio medium model is part of the IEEE 802.11 physical layer model. It must be used in conjunction with the Ieee80211Radio model or other derived models.

Ieee802154UwbIrRadioMedium

compound module

(no description)

Ieee802154NarrowbandDimensionalRadioMedium

compound module

(no description)

Ieee802154NarrowbandScalarRadioMedium

compound module

(no description)

Extends

Name

Type

Description

Module

compound module

Base module for all INET compound modules.

Parameters

Name

Type

Default value

Description

displayStringTextFormat

string

“”

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

physicalEnvironmentModule

string

“physicalEnvironment”

Module path of the physical environment model

signalAnalogRepresentation

string

“scalar”

rangeFilter

string

“”

When either set to ‘interferenceRange’ or ‘communicationRange’ the radio medium doesn’t send signals to a radio if it’s outside the provided range

radioModeFilter

bool

false

When enabled, the radio medium doesn’t send signals to a radio if it’s neither in receiver nor in transceiver mode

listeningFilter

bool

false

When enabled, the radio medium doesn’t send signals to a radio if it listens on the channel in an incompatible mode (e.g. different carrier frequency and bandwidth, different modulation)

macAddressFilter

bool

false

When enabled, the radio medium doesn’t send signals to a radio if the destination MAC address differs

recordTransmissionLog

bool

false

When enabled, the medium writes one line per transmission into the communication log file

recordReceptionLog

bool

false

When enabled, the medium writes one line per reception into the communication log file

sameTransmissionStartTimeCheck

string

“error”

Specifies what should happen if two transmissions start at the same moment

Properties

Name

Value

Description

class

RadioMedium

display

i=misc/sun

Signals

Name

Type

Unit

Description

radioAdded

radioRemoved

signalAdded

signalArrivalEnded

signalArrivalStarted

signalDepartureEnded

signalDepartureStarted

signalRemoved

Unassigned submodule parameters

Name

Type

Default value

Description

neighborCache.refillPeriod

double

Source code

//
// The medium model describes the shared physical medium where communication
// takes place. It keeps track of radios, noise sources, ongoing transmissions,
// background noise, and other ongoing noises. The medium computes when, where
// and how transmissions and noises arrive at receivers. It also efficiently
// provides the set of interfering transmissions and noises for the receivers.
//
module RadioMedium extends Module like IRadioMedium
{
    parameters:
        string physicalEnvironmentModule = default("physicalEnvironment"); // Module path of the physical environment model
        string signalAnalogRepresentation @enum("unitDisk","scalar","dimensional") = default("scalar");

        // filter parameters that control when signals are sent to receiver radios
        string rangeFilter = default("");       // When either set to 'interferenceRange' or 'communicationRange' the radio medium doesn't send signals to a radio if it's outside the provided range
        bool radioModeFilter = default(false);  // When enabled, the radio medium doesn't send signals to a radio if it's neither in receiver nor in transceiver mode
        bool listeningFilter = default(false);  // When enabled, the radio medium doesn't send signals to a radio if it listens on the channel in an incompatible mode (e.g. different carrier frequency and bandwidth, different modulation)
        bool macAddressFilter = default(false); // When enabled, the radio medium doesn't send signals to a radio if the destination MAC address differs

        // logging parameters
        bool recordTransmissionLog = default(false); // When enabled, the medium writes one line per transmission into the communication log file
        bool recordReceptionLog = default(false);    // When enabled, the medium writes one line per reception into the communication log file

        string sameTransmissionStartTimeCheck @enum("ignore", "warning", "error") = default("error"); // Specifies what should happen if two transmissions start at the same moment

        @class(RadioMedium);
        @display("i=misc/sun");

        @signal[radioAdded];
        @signal[radioRemoved];
        @signal[signalAdded];
        @signal[signalRemoved];
        @signal[signalDepartureStarted];
        @signal[signalDepartureEnded];
        @signal[signalArrivalStarted];
        @signal[signalArrivalEnded];

    submodules:
        propagation: <default("ConstantSpeedPropagation")> like IPropagation {
            parameters:
                @display("p=100,100");
        }
        analogModel: <default(signalAnalogRepresentation == "unitDisk" ? "UnitDiskMediumAnalogModel" : signalAnalogRepresentation == "scalar" ? "ScalarMediumAnalogModel" : signalAnalogRepresentation == "dimensional" ? "DimensionalMediumAnalogModel" : "")> like IMediumAnalogModel {
            parameters:
                @display("p=100,200");
        }
        backgroundNoise: <default(signalAnalogRepresentation == "scalar" ? "IsotropicScalarBackgroundNoise" : signalAnalogRepresentation == "dimensional" ? "IsotropicDimensionalBackgroundNoise" : "")> like IBackgroundNoise if typename != "" {
            parameters:
                @display("p=100,300");
        }
        pathLoss: <default("FreeSpacePathLoss")> like IPathLoss {
            parameters:
                @display("p=300,100");
        }
        obstacleLoss: <default("")> like IObstacleLoss if typename != "" {
            parameters:
                @display("p=300,200");
        }
        mediumLimitCache: <default("MediumLimitCache")> like IMediumLimitCache {
            parameters:
                @display("p=500,100");
        }
        communicationCache: <default("VectorCommunicationCache")> like ICommunicationCache {
            parameters:
                @display("p=500,300");
        }
        neighborCache: <default("")> like INeighborCache if typename != "" {
            parameters:
                @display("p=500,200");
        }
}

File: src/inet/physicallayer/wireless/common/medium/RadioMedium.ned