Compound Module Ieee80211NicAP

File: NetworkInterfaces/Ieee80211/Ieee80211NicAP.ned

This NIC implements an 802.11 network interface card, in an AP, using infrastructure mode.

mgmt: Ieee80211MgmtAP mac: Ieee80211Mac radio: Ieee80211Radio

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.

Ieee80211NicAP Ieee80211Mac Ieee80211MgmtAP Ieee80211Radio WirelessAP WirelessAPWithEth

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.

Ieee80211Mac

Implementation of the 802.11b MAC protocol. This module is intended to be used in combination with the Ieee80211Radio module as the physical layer. (The SnrEval80211 and Decider80211 modules should also work if per-packet bitrate setting gets implemented.)

Ieee80211MgmtAP

Used in 802.11 infrastructure mode: handles management frames for an access point (AP). It relies on a connected Ieee80211Mac for actual reception and transmission of frames.

Ieee80211Radio

Physical layer for the IEEE 802.11 models. Its external interface (including gates and how it communicates with other modules) is the same as the Radio module's.

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.

WirelessAP

Models a 802.11 Access Point. It can be used in conjunction with WirelessHost, or any other host model containing WirelessNicSTA.

WirelessAPWithEth

Models a 802.11 Access Point with Ethernet ports. It can be used in conjunction with WirelessHost, or any other host model containing WirelessNicSTA.

Gates:

Name Direction Description
uppergateIn input

to upper layers

uppergateOut output

from upper layers

radioIn input

to receive AirFrames

Unassigned submodule parameters:

Name Type Description
mgmt.ssid string
mgmt.beaconInterval numeric const
mgmt.frameCapacity numeric const

maximum queue length

mgmt.numAuthSteps numeric const

use 2 for Open System auth, 4 for WEP dataRate: numeric; XXX TBD

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

mac.maxQueueSize numeric const

max queue length in frames; only used if queueModule==""

mac.bitrate numeric const
mac.rtsThresholdBytes numeric const

longer messages will be sent using RTS/CTS; use 2346 for default

mac.retryLimit numeric const

maximum number of retries per message, -1 means default

mac.cwMinData numeric const

contention window for normal data frames, -1 means default

mac.cwMinBroadcast numeric const

contention window for broadcast messages, -1 means default

radio.channelNumber numeric const

channel identifier

radio.transmitterPower numeric const

power used for transmission of messages (in mW)

radio.bitrate numeric const

(in bits/s)

radio.thermalNoise numeric const

base noise level (dBm)

radio.pathLossAlpha numeric const

used by the path loss calculation

radio.snirThreshold numeric const

if signal-noise ratio is below this threshold, frame is considered noise (in dB)

radio.sensitivity numeric const

received signals with power below sensitivity are ignored

Source code:

module Ieee80211NicAP
    gates:
        in: uppergateIn; // to upper layers
        out: uppergateOut; // from upper layers
        in: radioIn; // to receive AirFrames
    submodules:
        mgmt: Ieee80211MgmtAP;
            display: "p=96,69;i=block/cogwheel;q=wlanDataQueue";
        mac: Ieee80211Mac;
            parameters:
                queueModule = "mgmt";
            display: "p=96,155;i=block/layer";
        radio: Ieee80211Radio;
            display: "p=96,240;i=block/wrxtx";
    connections:
        radioIn --> radio.radioIn;
        radio.uppergateIn <-- mac.lowergateOut;
        radio.uppergateOut --> mac.lowergateIn;

        mac.uppergateOut --> mgmt.macIn;
        mac.uppergateIn <-- mgmt.macOut;

        mgmt.uppergateOut --> uppergateOut;
        mgmt.uppergateIn <-- uppergateIn;

endmodule