RadioMedium

Package: inet.physicallayer.common.packetlevel

RadioMedium

compound module

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.

IPropagation IAnalogModel IBackgroundNoise IPathLoss IObstacleLoss IMediumLimitCache ICommunicationCache INeighborCache

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
ApskDimensionalRadioMedium compound module

This radio medium model provides a hypothetical radio that simply uses one of the well-known modulations without utilizing other techiques such as forward error correction, interleaving, spreading, etc. It must be used in conjunction with the ApskDimensionalRadio model.

ApskLayeredDimensionalRadioMedium compound module

This medium model is used by a simple hypothetical layered radio.

ApskLayeredScalarRadioMedium compound module

This medium model is used by a simple hypothetical layered radio.

ApskScalarRadioMedium compound module

This radio medium model provides a hypothetical radio that simply uses one of the well-known modulations without utilizing other techiques such as forward error correction, interleaving, spreading, etc. It must be used in conjunction with the ApskScalarRadio model.

Ieee80211LayeredDimensionalRadioMedium compound module (no description)
Ieee80211LayeredScalarRadioMedium compound module (no description)
Ieee80211RadioMedium compound module

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

Ieee802154NarrowbandDimensionalRadioMedium compound module (no description)
Ieee802154NarrowbandScalarRadioMedium compound module (no description)
UnitDiskRadioMedium compound module

This radio medium model provides a very simple but fast and predictable physical layer behavior. It must be used in conjunction with the UnitDiskRadio model.

Parameters

Name Type Default value Description
physicalEnvironmentModule string "physicalEnvironment"

module path of the physical environment model

signalAnalogRepresentation string "scalar"
rangeFilter string ""

filter parameters that control when signals are sent to receiver radios

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 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 it the destination mac address differs

recordCommunicationLog bool false

logging parameters

Properties

Name Value Description
class RadioMedium
display i=misc/sun

Signals

Name Type Unit
radioRemoved
signalDepartureStarted
radioAdded
signalArrivalStarted
signalAdded
signalDepartureEnded
signalRemoved
signalArrivalEnded

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 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 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 it the destination mac address differs

        // logging parameters
        bool recordCommunicationLog = default(false); // when enabled the medium writes a communication log file that contains one line per transmission and per reception

        @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" ? "UnitDiskAnalogModel" : signalAnalogRepresentation == "scalar" ? "ScalarAnalogModel" : signalAnalogRepresentation == "dimensional" ? "DimensionalAnalogModel" : "")> like IAnalogModel {
            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/common/packetlevel/RadioMedium.ned