Package: inet.physicallayer.wireless.common.medium
RadioMedium
compound moduleThe 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.
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.
Used in
| Name | Type | Description |
|---|---|---|
| AnalogModelShowcaseRoutingNetwork | network | (no description) |
| CoexistenceShowcase | network | (no description) |
| ComboExample | network | (no description) |
| CorruptionModeExample | network | (no description) |
| LayeredApsk | network | (no description) |
| ManetSensorNetwork | network | (no description) |
| SensorNetworkShowcaseA | network | (no description) |
| SensorNetworkShowcaseB | network | (no description) |
| TestNic | network | (no description) |
| TestRadioScaling | network | (no description) |
| WirelessA | 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. |
| 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. |
| Ieee802154NarrowbandDimensionalRadioMedium | compound module | (no description) |
| Ieee802154NarrowbandScalarRadioMedium | compound module | (no description) |
| Ieee802154UwbIrRadioMedium | compound module | (no description) |
| 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. |
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 | "" |
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 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 |
logging parameters |
| 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 |
|---|---|---|---|
| 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 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