Ieee80211Radio

Package: inet.physicallayer.wireless.ieee80211.packetlevel

Ieee80211Radio

compound module

This radio model is part of the IEEE 802.11 physical layer model. It supports multiple channels, different operation modes, and preamble modes. It must be used in conjunction with the ~Ieee80211RadioMedium model or other derived models.

This model provides sensible default values for the radio parameters to be used in IEEE 802.11 simulations. It also supports switching channels via ~ConfigureRadioCommand, or with direct C++ function calls.

<b>See also:</b> ~Ieee80211ScalarRadio, ~Ieee80211DimensionalRadio.

antenna : like IAntenna

IsotropicAntenna: This antenna model describes the theoretical point source which radiates the same intensity of...

IAntenna: The antenna model describes the physical device (a part of the radio) which converts electric...

Source:
antenna: <default("IsotropicAntenna")> like IAntenna {
    parameters:
        @display("p=100,100");
} transmitter : like ITransmitter

ITransmitter: The transmitter model models the physical process which converts packets into electrical signals.

Source:
transmitter: <> like ITransmitter {
    parameters:
        @display("p=100,200");
} receiver : like IReceiver

IReceiver: The receiver model describes the physical process that converts electric signals into packets.

Source:
receiver: <> like IReceiver {
    parameters:
        @display("p=100,300");
} energyConsumer : like IEnergyConsumer

IEnergyConsumer: The energy consumer models describe the energy consumption process of devices over time.

Source:
energyConsumer: <default("")> like IEnergyConsumer if typename != "" {
    parameters:
        @display("p=100,400");
}

Inheritance diagram

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.

Known subclasses

Name Type Description
Ieee80211DimensionalRadio compound module (no description)
Ieee80211ScalarRadio compound module (no description)
Ieee80211UnitDiskRadio compound module (no description)

Extends

Name Type Description
FlatRadioBase compound module

Serves as a base module for flat radio models.

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

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

initialRadioMode string "off"
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

sendRawBytes bool false

When true packets are serialized into a sequence of bytes before sending out

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

signalAnalogRepresentation string "scalar"
centerFrequency double 2.412GHz

Center frequency of the band where the radio transmits and receives signals on the medium

bandwidth double nan MHz

Bandwidth of the band where the radio transmits and receives signals on the medium

opMode string "g(mixed)"

Operation mode

bandName string "2.4 GHz"

Band name

channelNumber int 0

Initial channel number within the band (TODO this is offset by 1)

fcsMode string "declared"

Properties

Name Value Description
class Ieee80211Radio
display i=block/wrxtx

Gates

Name Direction Size Description
upperLayerIn input
upperLayerOut output
radioIn input

Signals

Name Type Unit Description
radioChannelChanged long

Statistics

Name Title Source Record Unit Interpolation Mode Description
radioChannel Radio channel radioChannelChanged histogram, vector sample-hold

Source code

//
// This radio model is part of the IEEE 802.11 physical layer model. It supports
// multiple channels, different operation modes, and preamble modes. It must be
// used in conjunction with the ~Ieee80211RadioMedium model or other derived
// models.
//
// This model provides sensible default values for the radio parameters to be
// used in IEEE 802.11 simulations. It also supports switching channels via
// ~ConfigureRadioCommand, or with direct C++ function calls.
//
// @see ~Ieee80211ScalarRadio, ~Ieee80211DimensionalRadio.
//
//# TODO check this Table 18-14—Receiver performance requirements
module Ieee80211Radio extends FlatRadioBase
{
    parameters:
        string opMode @enum("a","b","g(erp)","g(mixed)","n(mixed-2.4Ghz)","p","ac") = default("g(mixed)"); // Operation mode
        string bandName @enum("2.4 GHz","5 GHz","5 GHz (20 MHz)","5 GHz (40 MHz)","5 GHz (80 MHz)","5 GHz (160 MHz)","5.9 GHz") = default("2.4 GHz"); // Band name
        int channelNumber = default(0);                                 // Initial channel number within the band (TODO this is offset by 1)
        string fcsMode @enum("declared","computed") = default("declared");
        transmitter.typename = default("Ieee80211Transmitter");
        receiver.typename = default("Ieee80211Receiver");
        receiver.errorModel.typename = default(signalAnalogRepresentation != "unitDisk" ? "Ieee80211NistErrorModel" : "");
        centerFrequency @unit(Hz) = default(2.412GHz);                 // The center frequency of the band is automatically set by the radio
        bandwidth @unit(Hz) = default(nan MHz);
        transmitter.preambleDuration = default(-1 s);
        transmitter.bitrate = default(11Mbps);
        transmitter.headerLength = default(192b);
        transmitter.power = default(20mW);
        receiver.bandwidth = default(22 MHz); // The highest value
        receiver.sensitivity = default(-85dBm);
        receiver.energyDetection = default(-85dBm);
        receiver.snirThreshold = default(4dB);
        *.opMode = this.opMode;
        *.bandName = this.bandName;
        *.channelNumber = this.channelNumber;
        @class(Ieee80211Radio);
        @signal[radioChannelChanged](type=long);
        @statistic[radioChannel](title="Radio channel"; source=radioChannelChanged; record=histogram,vector; interpolationmode=sample-hold);
}

File: src/inet/physicallayer/wireless/ieee80211/packetlevel/Ieee80211Radio.ned