Ieee80211Radio

Package: inet.physicallayer.wireless.ieee80211.packetlevel

compound module Ieee80211Radio

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, Ieee80211DimensionalRadio.

Ieee80211Radioantenna: inet.physicallayer.wireless.common.antenna.IsotropicAntenna (like IAntenna) inherited from Radio IsotropicAntenna: This antenna model describes the theoretical point source which radiates the same intensity of ra... IAntenna: The antenna model describes the physical device (a part of the radio) which converts electric sig... Source: antenna: <default("IsotropicAntenna")> like IAntenna { parameters: @display("p=100,100"); }antennatransmitter: inet.physicallayer.wireless.ieee80211.packetlevel.Ieee80211Transmitter (like ITransmitter) inherited from Radio Ieee80211Transmitter: This transmitter model produces IEEE 802.11 transmissions. ITransmitter: The transmitter model models the physical process which converts packets into electrical signals. Source: transmitter: <> like ITransmitter { parameters: @display("p=100,200"); }transmitterreceiver: inet.physicallayer.wireless.ieee80211.packetlevel.Ieee80211Receiver (like IReceiver) inherited from Radio Ieee80211Receiver: This receiver model receives an IEEE 802.11 transmission successfully if the minimum of the signa... IReceiver: The receiver model describes the physical process that converts electric signals into packets. Source: receiver: <> like IReceiver { parameters: @display("p=100,300"); }receiverenergyConsumer: inet.power.contract.IEnergyConsumer (like IEnergyConsumer) inherited from Radio 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"); }energyConsumer

Usage diagram

Inheritance diagram

Used in compound modules

Name

Type

Description

ExtUpperIeee80211Interface

compound module

Provides an IEEE 802.11 network interface suitable for emulation. The upper part of the network interface is realized in the real world using a real TAP device of the host computer which is running the simulation.

Ieee80211Interface

compound module

Implements an IEEE 802.11 network interface. It implements a large subset of the IEEE 802.11 standard, and may use radio models and wireless signal representations of varying levels of detail. It is also extremely configurable, and its component structure makes it easy to experiment with various details of the protocol.

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

listeningChanged

packetDropped

cPacket

packetReceivedFromLower

cPacket

packetReceivedFromUpper

cPacket

packetSentToLower

cPacket

packetSentToUpper

cPacket

radioChannelChanged

long

radioModeChanged

long

receivedSignalPartChanged

long

receptionEnded

receptionStarted

receptionStateChanged

long

transmissionEnded

transmissionStarted

transmissionStateChanged

long

transmittedSignalPartChanged

long

Statistics

Name

Title

Source

Record

Unit

Interpolation Mode

Description

bitErrorRate

Bit error rate

bitErrorRate(packetSentToUpper)

histogram

minSnir

Min SNIR

minimumSnir(packetSentToUpper)

histogram

packetErrorRate

Packet error rate

packetErrorRate(packetSentToUpper)

histogram

radioChannel

Radio channel

radioChannelChanged

histogram,vector

sample-hold

radioMode

Radio mode

radioModeChanged

count,vector

sample-hold

receptionState

Radio reception state

receptionStateChanged

count,vector

sample-hold

symbolErrorRate

Symbol error rate

symbolErrorRate(packetSentToUpper)

histogram

transmissionState

Radio transmission state

transmissionStateChanged

count,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