Edca

Package: inet.linklayer.ieee80211.mac.channelaccess

Edca

compound module

Implements EDCA (Enhanced Distributed Channel Access) for IEEE 802.11. The implementation allows for a configurable number of access categories, not just four as defined by the standard.

edcaf[numEdcafs] : Edcaf

Implements EDCAF (Enhanced Distributed Channel Access Function) for IEEE 802.11.

Source:
edcaf[numEdcafs]: Edcaf {
    parameters:
        @display("p=100,100,row,150");
} collisionController : like ICollisionController

EdcaCollisionController: A collision controller used with EDCA.

ICollisionController: Interface for collision controllers.

Source:
collisionController: <default("EdcaCollisionController")> like ICollisionController {
    parameters:
        @display("p=100,200");
} mgmtAndNonQoSRecoveryProcedure : NonQosRecoveryProcedure

Implements frame retransmission and recovery procedures for non-QoS frames in IEEE 802.11 networks.

Source:
mgmtAndNonQoSRecoveryProcedure: NonQosRecoveryProcedure {
    parameters:
        cwCalculatorModule = "^.edcaf[1]"; // Best effort
        rtsPolicyModule = "^.^.rtsPolicy";
        @display("p=400,200");
}

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.

Used in compound modules

Name Type Description
Hcf compound module

Implements the HCF (Hybrid Coordination Function) for IEEE 802.11.

Extends

Name Type Description
Module compound module

Base module for all INET compound modules.

Parameters

Name Type Default value Description
displayStringTextFormat string ""

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

numEdcafs int 4
rxModule string
rateSelectionModule string

Properties

Name Value Description
class Edca
display i=block/star

Unassigned submodule parameters

Name Type Default value Description
edcaf.inProgressFrames.displayStringTextFormat string ""

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

edcaf.inProgressFrames.pendingQueueModule string "^.pendingQueue"
edcaf.inProgressFrames.originatorMacDataServiceModule string "^.^.^.originatorMacDataService"
edcaf.inProgressFrames.ackHandlerModule string "^.ackHandler"
edcaf.ackHandler.displayStringTextFormat string ""

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

edcaf.txopProcedure.displayStringTextFormat string ""

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

edcaf.txopProcedure.txopLimit double -1s
edcaf.recoveryProcedure.displayStringTextFormat string ""

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

edcaf.recoveryProcedure.shortRetryLimit int 7
edcaf.recoveryProcedure.longRetryLimit int 4
mgmtAndNonQoSRecoveryProcedure.displayStringTextFormat string ""

Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information

mgmtAndNonQoSRecoveryProcedure.shortRetryLimit int 7
mgmtAndNonQoSRecoveryProcedure.longRetryLimit int 4

Source code

//
// Implements EDCA (Enhanced Distributed Channel Access) for IEEE 802.11.
// The implementation allows for a configurable number of access categories,
// not just four as defined by the standard.
//
module Edca extends Module
{
    parameters:
        int numEdcafs = default(4);
        string rxModule;
        string rateSelectionModule;

        *.rateSelectionModule = "^." + this.rateSelectionModule;
        *.rxModule = "^." + this.rxModule;
        *.collisionControllerModule = "^.collisionController";

        edcaf[0].accessCategory = default("AC_BK");
        edcaf[1].accessCategory = default("AC_BE");
        edcaf[2].accessCategory = default("AC_VI");
        edcaf[3].accessCategory = default("AC_VO");

        @class(Edca);
        @display("i=block/star");
    submodules:
        edcaf[numEdcafs]: Edcaf {
            parameters:
                @display("p=100,100,row,150");
        }
        collisionController: <default("EdcaCollisionController")> like ICollisionController {
            parameters:
                @display("p=100,200");
        }
        mgmtAndNonQoSRecoveryProcedure: NonQosRecoveryProcedure {
            parameters:
                cwCalculatorModule = "^.edcaf[1]"; // Best effort
                rtsPolicyModule = "^.^.rtsPolicy";
                @display("p=400,200");
        }
}

File: src/inet/linklayer/ieee80211/mac/channelaccess/Edca.ned