Ieee80211LayeredOFDMTransmitter

Package: inet.physicallayer.ieee80211.bitlevel

Ieee80211LayeredOFDMTransmitter

compound module

The level of detail parameter determines which submodules of the transmitter will be used:

Level (domain)| Submodules ====================================================================== PACKET |-


BIT | signal encoder, data encoder
SYMBOL | signal modulator, data modulator + bit level modules
SAMPLE | pulse shaper + bit, symbol level modules + (digital/ | analog converter)

Important: We have no default module implementation for sample level features.

Note that if a digital/analog converter is provided for the transmitter then it will be only used at sample level, otherwise, since analog representation is obligatory, a simplified, built-in (scalar) analog model is used at all levels.

Note that in non-compliant mode, whatever the level of detail is, you must always set all submodules. If the current level of detail does not demand a specific submodule it is necessary and sufficient to implement those methods of that submodule which provide metadata about its settings.

For example, if the level of detail is bit level, you don't have to implement a complete modulator, it is enough to implement a dummy modulator that can give information about its subcarrier modulation (e.g. BPSK).

signalEncoder : like IEncoder

Source:
signalEncoder: <signalEncoderType> like IEncoder if signalEncoderType != "" {
    @display("p=100,50");
} dataEncoder : like IEncoder

Source:
dataEncoder: <dataEncoderType> like IEncoder if dataEncoderType != "" {
    @display("p=226,50");
} dataModulator : like IModulator

Source:
dataModulator: <dataModulatorType> like IModulator if dataModulatorType != "" {
    @display("p=100,150");
} signalModulator : like IModulator

Source:
signalModulator: <signalModulatorType> like IModulator if signalModulatorType != "" {
    @display("p=226,150");
} pulseShaper : like IPulseShaper

Source:
pulseShaper: <pulseShaperType> like IPulseShaper if pulseShaperType != "" {
    @display("p=100,250");
} digitalAnalogConverter : like IDigitalAnalogConverter

Source:
digitalAnalogConverter: <digitalAnalogConverterType> like IDigitalAnalogConverter if digitalAnalogConverterType != "" {
    @display("p=100,350");
}

Usage diagram

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.

Inheritance diagram

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

Parameters

Name Type Default value Description
isCompliant bool true
levelOfDetail string "symbol"
signalEncoderType string ""
dataEncoderType string ""
signalModulatorType string ""
dataModulatorType string ""
pulseShaperType string ""
digitalAnalogConverterType string ""
channelSpacing double 0Hz/0
power double
carrierFrequency double
bandwidth double

Properties

Name Value Description
class Ieee80211LayeredOFDMTransmitter
display i=block/tx

Source code

// The level of detail parameter determines which submodules of
// the transmitter will be used:
//
// Level (domain)|                        Submodules
// ======================================================================
//    PACKET     |-
//               --------------------------------------------------------
//    BIT        | signal encoder, data encoder
//               --------------------------------------------------------
//    SYMBOL     | signal modulator, data modulator + bit level modules
//               --------------------------------------------------------
//    SAMPLE     | pulse shaper + bit, symbol level modules + (digital/
//               | analog converter)
//               --------------------------------------------------------
//
// Important: We have no default module implementation for sample level
// features.
//
// Note that if a digital/analog converter is provided for the
// transmitter then it will be only used at sample level, otherwise,
// since analog representation is obligatory, a simplified, built-in
// (scalar) analog model is used at all levels.
//
// Note that in non-compliant mode, whatever the level of detail is,
// you must always set all submodules. If the current level of detail
// does not demand a specific submodule it is necessary and sufficient
// to implement those methods of that submodule which provide metadata
// about its settings.
//
// For example, if the level of detail is bit level, you don't have to
// implement a complete modulator, it is enough to implement a dummy
// modulator that can give information about its subcarrier modulation
// (e.g. BPSK).
//
//
module Ieee80211LayeredOFDMTransmitter like ITransmitter
{
    parameters:
        bool isCompliant = default(true);
        string levelOfDetail @enum("packet","bit","symbol","sample") = default("symbol");
        string signalEncoderType = default("");
        string dataEncoderType = default("");
        string signalModulatorType = default("");
        string dataModulatorType = default("");
        string pulseShaperType = default("");
        string digitalAnalogConverterType = default("");
        double channelSpacing @unit(Hz) = default(0Hz/0);
        double power @unit(W);
        double carrierFrequency @unit(Hz);
        double bandwidth @unit(Hz);
        @class(Ieee80211LayeredOFDMTransmitter);

        @display("i=block/tx");
    submodules:
        signalEncoder: <signalEncoderType> like IEncoder if signalEncoderType != "" {
            @display("p=100,50");
        }
        dataEncoder: <dataEncoderType> like IEncoder if dataEncoderType != "" {
            @display("p=226,50");
        }
        dataModulator: <dataModulatorType> like IModulator if dataModulatorType != "" {
            @display("p=100,150");
        }
        signalModulator: <signalModulatorType> like IModulator if signalModulatorType != "" {
            @display("p=226,150");
        }
        pulseShaper: <pulseShaperType> like IPulseShaper if pulseShaperType != "" {
            @display("p=100,250");
        }
        digitalAnalogConverter: <digitalAnalogConverterType> like IDigitalAnalogConverter if digitalAnalogConverterType != "" {
            @display("p=100,350");
        }
}
File: src/inet/physicallayer/ieee80211/bitlevel/Ieee80211LayeredOFDMTransmitter.ned