Compound Module Nic80211

File: contrib/nic/Nic80211.ned

This NIC implements an 802.11 network interface card.

See also: Mac80211, Decider80211, SnrEval80211

Author: Marc Loebbers

mac: Mac80211 decider: Decider80211 snrEval: SnrEval80211 radio: SingleChannelRadio

Usage diagram:

The following diagram shows usage relationships between modules, networks and channels. Unresolved module (and channel) types are missing from the diagram. Click here to see the full picture.

Contains the following modules:

If a module type shows up more than once, that means it has been defined in more than one NED file.

Decider80211

Decider module of the 802.11 modules

Mac80211

Implementation of the 802.11b MAC protocol. This module is intended to be used in combination with the SnrEval80211 and Decider80211 modules as physical layer.

SingleChannelRadio (no description)
SnrEval80211 (no description)

Used in compound modules:

If a module type shows up more than once, that means it has been defined in more than one NED file.

Host (no description)

Gates:

Name Direction Description
uppergateIn input

to upper layers

uppergateOut output

from upper layers

upperControlOut output

control information

radioIn input

radioIn gate for sendDirect

Unassigned submodule parameters:

Name Type Description
mac.debug bool

debug switch

mac.queueLength numeric const
mac.rtsCtsThreshold numeric const
mac.bitrate numeric const
mac.defaultChannel numeric const

minimum channel support

mac.autoBitrate bool

auto bit rate selection support: specify borders at which to change modulation.

mac.snr2Mbit numeric const

threshold to use 2Mbit (in dB)

mac.snr5Mbit numeric const

threshold to use 5.5Mbit (in dB)

mac.snr11Mbit numeric const

threshold to use 11Mbit (in dB)

mac.neighborhoodCacheSize numeric const

keep information on neighborhood

mac.neighborhoodCacheMaxAge numeric const

consider information in cache outdate if older than

decider.debug bool

debug switch

decider.snirThreshold numeric const
snrEval.debug bool

debug switch

snrEval.headerLength numeric const

ignored

snrEval.transmitterPower numeric const
snrEval.carrierFrequency numeric const
snrEval.thermalNoise numeric const
snrEval.pathLossAlpha numeric const
snrEval.publishRSSIAlways bool
snrEval.sensitivity numeric const
radio.debug bool
radio.swSleep numeric const

time parameters, how long does it take to switch to sleep mode

radio.swSend numeric const

switch to send mode

radio.swRecv numeric const

switch to recv mode

Source code:

module Nic80211
    gates:
        in: uppergateIn; // to upper layers
        out: uppergateOut, // from upper layers
             upperControlOut; // control information 
	in: radioIn; // radioIn gate for sendDirect

    submodules:
        mac: Mac80211;
            display: "p=96,87;i=block/layer";
        decider: Decider80211;
            display: "p=106,157;i=block/process_s";
        snrEval: SnrEval80211;
            display: "p=96,236;i=block/wrxtx";
	radio: SingleChannelRadio;
	    // display: "p=200,30;b=30,25";

    connections:
        radioIn --> snrEval.radioIn;
        snrEval.uppergateIn <-- mac.lowergateOut display "m=m,25,0,25,0";
        snrEval.uppergateOut --> decider.lowergateIn display "m=m,73,0,50,50";
        snrEval.upperControlOut --> decider.lowerControlIn;
        decider.uppergateOut --> mac.lowergateIn display "m=m,50,50,75,0";
        decider.upperControlOut --> mac.lowerControlIn;

        mac.uppergateOut --> uppergateOut;
	mac.upperControlOut --> upperControlOut;
        mac.uppergateIn <-- uppergateIn;
endmodule