IRadio

Package: inet.physicallayer.wireless.common.contract.packetlevel

IRadio

module interface

Module interface for radio modules. Radio modules deal with the transmission of frames over a wireless medium (the radio medium).

Transmission

Upper layers (wireless L2 protocols) can send frames to the radio module. Frames will be encapsulated into WirelessSignal messages and distributed to other network nodes within communication range.

The global IRadioMedium module keeps track of node positions, and knows which nodes are within communication and interference distance of others (neighbour cache). When transmitting, the radio module obtains the neighbour list, and sends a copy of the WirelessSignal to each neighbour.

Reception

Received WirelessSignal messages get delivered to the radioIn gate of the radio module. If it was found to have been received correctly, it gets decapsulated and the frame sent to the upper layer.

Note: currently the packet is also sent up if it was NOT received correctly, with its error flag set to true.

Inheritance diagram

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

Implemented by

Name Type Description
ApskDimensionalRadio compound module

This radio model provides a hypothetical radio that simply uses one of the well-known modulations without utilizing other techiques such as forward error correction, interleaving, spreading, etc. It must be used in conjunction with the ApskDimensionalRadioMedium model.

ApskLayeredDimensionalRadio compound module

This radio model is part of a simple hypothetical layered radio. It produces detailed transmissions that have separate representation for all simulated domains. It must be used in conjunction with the ApskLayeredDimensionalRadioMedium model.

ApskLayeredScalarRadio compound module

This radio model is part of a simple hypothetical layered radio. It produces detailed transmissions that have separate representation for all simulated domains. It must be used in conjunction with the ApskLayeredScalarRadioMedium model.

ApskRadio compound module

This radio model provides a hypothetical radio that simply uses one of the well-known modulations without utilizing other techiques such as forward error correction, interleaving, spreading, etc.

ApskScalarRadio compound module

This radio model provides a hypothetical radio that simply uses one of the well-known modulations without utilizing other techiques such as forward error correction, interleaving, spreading, etc. It must be used in conjunction with the ApskScalarRadioMedium model.

FlatRadioBase compound module

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

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.

Ieee80211OfdmRadio compound module (no description)
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.

Ieee80211ScalarRadio compound module

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

See also: Ieee80211ScalarRadioMedium, Ieee80211ScalarTransmitter, Ieee80211ScalarReceiver, ScalarAnalogModel.

Ieee80211UnitDiskRadio compound module

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

Ieee802154NarrowbandDimensionalRadio compound module (no description)
Ieee802154NarrowbandRadio compound module (no description)
Ieee802154NarrowbandScalarRadio compound module (no description)
Ieee802154UwbIrRadio compound module (no description)
NarrowbandRadioBase compound module

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

NoiseSource compound module (no description)
Radio compound module

The radio model describes the physical device that is capable of transmitting and receiving signals on the medium. It contains an antenna model, a transmitter model, a receiver model, and an energy consumer model.

ShortcutRadio simple module

This module implements a simple shortcut to peer radio protocol that completely bypasses the physical medium. This radio module directly sends packets to the other radio module without any physical layer processing in the radio medium. Packets received from the upper layer protocols may be lost. Physical layer overhead is simply simulated by physical header bits, preamble transmission duration and a propagation delay.

UnitDiskRadio compound module

This radio model provides a very simple but fast and predictable physical layer behavior. It must be used in conjunction with the UnitDiskRadioMedium model.

Used in compound modules

Name Type Description
AckingWirelessInterface compound module

This module implements a highly abstracted wireless network interface (NIC) that uses a trivial MAC protocol. It offers simplicity for scenarios where Layer 1 and 2 effects can be completely ignored, for example testing the basic functionality of a wireless ad-hoc routing protocol.

ExtUpperIeee80211Interface compound module

This 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

This 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.

Ieee802154NarrowbandInterface compound module

This module implements an IEEE 802.15.4 narrowband network interface.

Ieee802154UwbIrInterface compound module

This module implements an IEEE 802.15.4 UWB-IR network interface.

WirelessInterface compound module

This module implements a generic wireless network interface.

Extends

Name Type Description
IPhysicalLayer module interface

This module interface provides an abstraction for the interface of different physical layers.

Properties

Name Value Description
display i=block/fork

Signals

Name Type Unit
receptionStateChanged long
radioModeChanged long
transmissionStarted cObject
receptionEnded cObject
transmittedSignalPartChanged long
receptionStarted cObject
receivedSignalPartChanged long
radioChannelChanged long
transmissionStateChanged long
listeningChanged long
transmissionEnded cObject

Source code

//
// Module interface for radio modules. Radio modules deal with the transmission of
// frames over a wireless medium (the radio medium).
//
// <b>Transmission</b>
//
// Upper layers (wireless L2 protocols) can send frames to the radio module.
// Frames will be encapsulated into WirelessSignal messages and distributed to
// other network nodes within communication range.
//
// The global ~IRadioMedium module keeps track of node positions, and knows
// which nodes are within communication and interference distance of others
// (neighbour cache). When transmitting, the radio module obtains the neighbour
// list, and sends a copy of the WirelessSignal to each neighbour.
//
//
// <b>Reception</b>
//
// Received WirelessSignal messages get delivered to the radioIn gate of the radio
// module. If it was found to have been received correctly, it gets decapsulated
// and the frame sent to the upper layer.
//
// Note: currently the packet is also sent up if it was NOT received correctly,
// with its error flag set to true.
//
moduleinterface IRadio extends IPhysicalLayer
{
    parameters:
        @display("i=block/wrxtx");
        @signal[radioModeChanged](type=long);    // type=inet::physicallayer::RadioMode
        @signal[listeningChanged](type=long);    //TODO always emit 0
        @signal[receptionStateChanged](type=long);    // type=inet::physicallayer::ReceptionState
        @signal[transmissionStateChanged](type=long);    // type=inet::physicallayer::TransmissionState
        @signal[radioChannelChanged](type=long);    // the long is the new channel number
        @signal[receivedSignalPartChanged](type=long);    // type=IRadioSignal::SignalPart
        @signal[transmittedSignalPartChanged](type=long);    // type=IRadioSignal::SignalPart
        @signal[transmissionStarted](type=cObject);     // type=ITransmission
        @signal[transmissionEnded](type=cObject);     // type=ITransmission
        @signal[receptionStarted](type=cObject);     // type=IReception
        @signal[receptionEnded](type=cObject);     // type=IReception
    gates:
        input radioIn @labels(IWirelessSignal);
}

File: src/inet/physicallayer/wireless/common/contract/packetlevel/IRadio.ned