Compound Module Nic80211

Package: org.mixim.modules.nic
File: src/modules/nic/Nic80211.ned

This NIC implements an 802.11 network interface card.

See also: Mac80211, Decider80211

Author: Marc Loebbers, Karl Wessel (port for MiXiM)

IWirelessMac IWirelessPhy

Usage diagram:

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram. Click here to see the full picture.

Nic80211

Inheritance diagram:

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram. Click here to see the full picture.

Nic80211 WirelessNic

Extends:

Name Type Description
WirelessNic compound module

Basic wireless nic definition

Parameters:

Name Type Default value Description
connectionManagerName string ""

name of the ConnectionManager module

phyType string "org.mixim.modules.phy.PhyLayer"
macType string "Mac80211"

Properties:

Name Value Description
display i=block/ifcard

Gates:

Name Direction Size Description
upperLayerIn input

to upper layers

upperLayerOut output

from upper layers

upperControlOut output

control information

upperControlIn input

control information

radioIn input

radioIn gate for sendDirect

Unassigned submodule parameters:

Name Type Default value Description
mac.headerLength int

length of the MAC packet header (in bits)

mac.address string

MAC address as hex string (12 hex digits), or "auto". "auto" values will be replaced by a generated MAC address in init stage 1.

phy.recordStats bool

enable/disable tracking of statistics (eg. cOutvectors)

phy.headerLength int

defines the length of the phy header (/preamble)

phy.usePropagationDelay bool

Should transmission delay be simulated?

phy.thermalNoise double

the strength of the thermal noise [dBm]

phy.useThermalNoise bool

should thermal noise be considered?

phy.analogueModels xml

Specification of the analogue models to use and their parameters

phy.decider xml

Specification of the decider to use and its parameters

phy.sensitivity double

The sensitivity of the physical layer [dBm]

phy.maxTXPower double

The maximum transimission power of the physical layer [mW]

phy.timeRXToTX double
phy.timeRXToSleep double

Elapsed time to switch from receive to sleep state

phy.timeTXToRX double

Elapsed time to switch from send to receive state

phy.timeTXToSleep double

Elapsed time to switch from send to sleep state

phy.timeSleepToRX double

Elapsed time to switch from sleep to receive state

phy.timeSleepToTX double

Elapsed time to switch from sleep to send state

phy.initialRadioState int

State the radio is initially in (0=RX, 1=TX, 2=Sleep)

phy.radioMinAtt double

radios gain factor (attenuation) while receiving

phy.radioMaxAtt double

radios gain factor (attenuation) while not receiving

phy.nbRadioChannels int

Number of available radio channels. Defaults to single channel radio.

phy.initialRadioChannel int

Initial radio channel.

Source code:

//
// This NIC implements an 802.11 network interface card.
//
// @see Mac80211, Decider80211
// @author Marc Loebbers, Karl Wessel (port for MiXiM)
//
module Nic80211 extends WirelessNic
{
    parameters:
        @display("i=block/ifcard");
        macType = "Mac80211";

        mac.queueLength = default(20);
        mac.bitrate = default(2E+6bps);
        mac.autoBitrate = default(false);
        // values if no fading is modelled, gives at most 1% packet error rate
        mac.snr2Mbit = default(1.46dB);
        mac.snr5Mbit = default(2.6dB);
        mac.snr11Mbit = default(5.68dB);
        mac.neighborhoodCacheSize = default(30);
        mac.neighborhoodCacheMaxAge = default(100s);
        mac.txPower = default(110.11mW);

        phy.headerLength = 192bit;
        phy.sensitivity = default(-119.5dBm);
        phy.decider = default(xmldoc("Nic80211_Decider.xml"));
        phy.initialRadioChannel = default(1);
        phy.nbRadioChannels = 15; //1 to 14, 0 is invalid
        //Mac80211 does not support switching times
        phy.timeRXToTX = 0s;
        phy.timeRXToSleep = 0s;
        phy.timeTXToRX = 0s;
        phy.timeTXToSleep = 0s;
        phy.timeSleepToRX = 0s;
        phy.timeSleepToTX = 0s;
}