IRadio

Package: inet.physicallayer.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 Signal 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 Signal to each neighbour.

Reception

Received Signal 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.

IRadio

Inheritance diagram

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

Extends

Name Type Description
IPhysicalLayer module interface

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

Used in compound modules

Name Type Description
AckingWirelessInterface compound module

Highly abstracted wireless NIC that consists of a unit disk radio and 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 NIC implements an 802.11 network interface card. It can be configured via the mgmt.typename parameter to act as an AP or a STA, or for ad-hoc mode.

Ieee802154NarrowbandInterface compound module (no description)
Ieee802154UwbIrInterface compound module (no description)
WirelessInterface compound module (no description)

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 Signal 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 Signal to each neighbour.
//
//
// <b>Reception</b>
//
// Received Signal 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(ISignal);
}

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