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.
Usage diagram¶
Inheritance diagram¶
Used in compound modules¶
Name |
Type |
Description |
|---|---|---|
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. |
|
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 |
|---|---|---|
compound module |
(no description) |
|
compound module |
(no description) |
|
compound module |
(no description) |
Extends¶
Name |
Type |
Description |
|---|---|---|
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