Ieee80211Radio

Package: inet.physicallayer.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.

See also Ieee80211ScalarRadio, and Ieee80211DimensionalRadio for more details.

TODO: check this Table 18-14—Receiver performance requirements

antenna : like IAntenna

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

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

ITransmitter: The transmitter model describes the physical process which converts packets into electric signals.

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

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

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

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

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

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

This radio model uses dimensional transmission power (that changes over time and/or frequency) in the analog representation. It must be used in conjunction with the Ieee80211DimensionalRadioMedium model.

Ieee80211IdealRadio compound module

This radio model uses ideal analog representation. It must be used in conjunction with the IdealRadioMedium model.

Ieee80211ScalarRadio compound module

This radio model uses scalar transmission power in the analog representation. It must be used in conjunction with the Ieee80211ScalarRadioMedium model.

Extends

Name Type Description
FlatRadioBase compound module

This module servces as a base module for flat radio models.

Parameters

Name Type Default value Description
antennaType string "IsotropicAntenna"

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

carrierFrequency double 2.412GHz

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

bandwidth double 2MHz

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)

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
radioChannelChanged long

Statistics

Name Title Source Record Unit Interpolation Mode
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 also ~Ieee80211ScalarRadio, and ~Ieee80211DimensionalRadio for more
// details.
//
// TODO: check this Table 18-14—Receiver performance requirements
module Ieee80211Radio extends FlatRadioBase
{
    parameters:
        string opMode @enum("a","b","g(erp)","g(mixed)","n","p") = default("g(mixed)");    // operation mode
        string bandName @enum("2.4 GHz","5 GHz") = default("2.4 GHz"); // band name
        int channelNumber = default(0);                                 // initial channel number within the band (TODO: this is offset by 1)
        carrierFrequency @unit(Hz) = default(2.412GHz);                 // the center frequency of the band is automatically set by the radio
        bandwidth @unit(Hz) = default(2MHz);
        antennaType = default("IsotropicAntenna");
        transmitter.preambleDuration = default(-1 s);
        transmitter.bitrate = default(11Mbps);
        transmitter.headerBitLength = default(192b);
        transmitter.power = default(20mW);
        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/ieee80211/packetlevel/Ieee80211Radio.ned