Dcf

Package: inet.linklayer.ieee80211.mac.coordinationfunction

Dcf

compound module

IEEE 802.11 Distributed Coordination Function

Dcaf OriginatorMacDataService RecipientMacDataService RateSelection IRateControl NonQosRecoveryProcedure OriginatorProtectionMechanism OriginatorAckPolicy RecipientAckPolicy RtsPolicy CtsPolicy

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
maxQueueSize int 100 -1 means unlimited
rxModule string
txModule string
prioritizeMulticast bool false

if true, prioritize multicast frames (9.3.2.1 Fundamental access)

Properties

Name Value Description
class Dcf
display i=block/queue

Signals

Name Type Unit
packetDropped inet::Packet
linkBroken inet::Packet

Unassigned submodule parameters

Name Type Default value Description
rateSelection.multicastFrameBitrate double -1bps
rateSelection.responseAckFrameBitrate double -1bps
rateSelection.responseCtsFrameBitrate double -1bps
rateSelection.dataFrameBitrate double -1bps

fastest

rateSelection.dataFrameBandwidth double nan Hz

unspecified by default

rateSelection.dataFrameNumSpatialStreams int -1

unspecified by default

rateSelection.mgmtFrameBitrate double -1bps

fastest

rateSelection.controlFrameBitrate double -1bps
recoveryProcedure.shortRetryLimit int 7
recoveryProcedure.longRetryLimit int 4
originatorProtectionMechanism.rateSelectionModule string
originatorAckPolicy.rateSelectionModule string
originatorAckPolicy.ackTimeout double -1s
recipientAckPolicy.rateSelectionModule string
rtsPolicy.rateSelectionModule string
rtsPolicy.ctsTimeout double -1s
rtsPolicy.rtsThreshold int 2346B
ctsPolicy.rxModule string
ctsPolicy.rateSelectionModule string

Source code

//
// IEEE 802.11 Distributed Coordination Function
//
module Dcf like IDcf
{
    parameters:
        int maxQueueSize = default(100); // -1 means unlimited

        string rxModule;
        string txModule;
        bool prioritizeMulticast = default(false); // if true, prioritize multicast frames (9.3.2.1 Fundamental access)

        *.rateSelectionModule = "^.rateSelection";
        *.rxModule = "^." + rxModule;

        @class(Dcf);
        @display("i=block/queue");
        @signal[linkBroken](type=inet::Packet);
        @signal[packetDropped](type=inet::Packet);

    submodules:
        channelAccess: Dcaf {
            parameters:
                @display("p=150,100");
        }
        originatorMacDataService: OriginatorMacDataService {
            parameters:
                @display("p=150,200");
        }
        recipientMacDataService: RecipientMacDataService {
            parameters:
                @display("p=150,300");
        }
        rateSelection: RateSelection {
            parameters:
                rateControlModule = "^.rateControl";
                @display("p=350,100");
        }
        rateControl: <default("")> like IRateControl if typename != "" {
            parameters:
                @display("p=350,200");
        }
        recoveryProcedure: NonQosRecoveryProcedure {
            parameters:
                cwCalculatorModule = "^.channelAccess";
                rtsPolicyModule = "^.rtsPolicy";
                @display("p=350,300");
        }
        originatorProtectionMechanism: OriginatorProtectionMechanism {
            parameters:
                @display("p=350,400");
        }
        originatorAckPolicy: OriginatorAckPolicy {
            parameters:
                @display("p=550,100");
        }
        recipientAckPolicy: RecipientAckPolicy {
            parameters:
                @display("p=550,200");
        }
        rtsPolicy: RtsPolicy {
            parameters:
                @display("p=550,300");
        }
        ctsPolicy: CtsPolicy {
            parameters:
                @display("p=550,400");
        }
}

File: src/inet/linklayer/ieee80211/mac/coordinationfunction/Dcf.ned