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

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.

Used in compound modules

Name Type Description
Hcf compound module

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

Parameters

Name Type Default value Description
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.pendingQueueModule string "^.pendingQueue"
edcaf.inProgressFrames.originatorMacDataServiceModule string "^.^.^.originatorMacDataService"
edcaf.inProgressFrames.ackHandlerModule string "^.ackHandler"
edcaf.txopProcedure.txopLimit double -1s
edcaf.recoveryProcedure.shortRetryLimit int 7
edcaf.recoveryProcedure.longRetryLimit int 4
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
{
    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