Package: inet.linklayer.ieee80211.mac.channelaccess
Edcaf
compound moduleImplements EDCAF (Enhanced Distributed Channel Access Function) for IEEE 802.11. EDCAF represents one access category within EDCA.
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 |
|---|---|---|
| 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. |
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 |
| rxModule | string | ||
| collisionControllerModule | string | ||
| originatorMacDataServiceModule | string | ||
| accessCategory | string | ||
| aifsn | int | -1 | |
| cwMin | int | -1 | |
| cwMax | int | -1 |
Properties
| Name | Value | Description |
|---|---|---|
| class | Edcaf | |
| display | i=block/queue |
Signals
| Name | Type | Unit | Description |
|---|---|---|---|
| packetSentToPeer | inet::Packet | ||
| channelOwnershipChanged | bool |
Statistics
| Name | Title | Source | Record | Unit | Interpolation Mode | Description |
|---|---|---|---|---|---|---|
| packetSentToPeerWithRetry | packets sent: with retry | ieee80211Retry(packetSentToPeer) | count, sum(packetBytes), vector(packetBytes) | none | ||
| packetSentToPeerBroadcast | packets sent: broadcast | ieee80211Broadcast(packetSentToPeer) | count, sum(packetBytes), vector(packetBytes) | none | ||
| packetSentToPeerWithoutRetry | packets sent: without retry | ieee80211NotRetry(packetSentToPeer) | count, sum(packetBytes), vector(packetBytes) | none | ||
| packetSentToPeer | packets sent | count, sum(packetBytes), vector(packetBytes) | none | |||
| packetSentToPeerUnicast | packets sent: unicast | ieee80211Unicast(packetSentToPeer) | count, sum(packetBytes), vector(packetBytes) | none | ||
| channelOwnershipChanged | channel ownership | count, vector? | sample-hold | |||
| packetSentToPeerMulticast | packets sent: multicast | ieee80211Multicast(packetSentToPeer) | count, sum(packetBytes), vector(packetBytes) | none |
Unassigned submodule parameters
| Name | Type | Default value | Description |
|---|---|---|---|
| inProgressFrames.displayStringTextFormat | string | "" |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
| inProgressFrames.pendingQueueModule | string | "^.pendingQueue" | |
| inProgressFrames.originatorMacDataServiceModule | string | "^.^.^.originatorMacDataService" | |
| inProgressFrames.ackHandlerModule | string | "^.ackHandler" | |
| ackHandler.displayStringTextFormat | string | "" |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
| txopProcedure.displayStringTextFormat | string | "" |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
| txopProcedure.txopLimit | double | -1s | |
| recoveryProcedure.displayStringTextFormat | string | "" |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
| recoveryProcedure.shortRetryLimit | int | 7 | |
| recoveryProcedure.longRetryLimit | int | 4 |
Source code
// // Implements EDCAF (Enhanced Distributed Channel Access Function) for IEEE 802.11. // EDCAF represents one access category within EDCA. // module Edcaf extends Module { parameters: string rxModule; string collisionControllerModule; string originatorMacDataServiceModule; string accessCategory @enum("AC_BK","AC_BE","AC_VI","AC_VO"); int aifsn = default(-1); int cwMin = default(-1); int cwMax = default(-1); @class(Edcaf); @display("i=block/queue"); @signal[packetSentToPeer](type=inet::Packet); @signal[channelOwnershipChanged](type=bool); @statistic[packetSentToPeer](title="packets sent"; record=count,sum(packetBytes),vector(packetBytes); interpolationmode=none); @statistic[packetSentToPeerUnicast](title="packets sent: unicast"; source=ieee80211Unicast(packetSentToPeer); record=count,sum(packetBytes),vector(packetBytes); interpolationmode=none); @statistic[packetSentToPeerMulticast](title="packets sent: multicast"; source=ieee80211Multicast(packetSentToPeer); record=count,sum(packetBytes),vector(packetBytes); interpolationmode=none); @statistic[packetSentToPeerBroadcast](title="packets sent: broadcast "; source=ieee80211Broadcast(packetSentToPeer); record=count,sum(packetBytes),vector(packetBytes); interpolationmode=none); @statistic[packetSentToPeerWithRetry](title="packets sent: with retry"; source=ieee80211Retry(packetSentToPeer); record=count,sum(packetBytes),vector(packetBytes); interpolationmode=none); @statistic[packetSentToPeerWithoutRetry](title="packets sent: without retry"; source=ieee80211NotRetry(packetSentToPeer); record=count,sum(packetBytes),vector(packetBytes); interpolationmode=none); @statistic[channelOwnershipChanged](title="channel ownership"; record=count,vector?; interpolationmode=sample-hold); submodules: pendingQueue: <default("PendingQueue")> like IPacketQueue { parameters: @display("p=100,100"); } inProgressFrames: InProgressFrames { parameters: pendingQueueModule = default("^.pendingQueue"); originatorMacDataServiceModule = default("^.^.^.originatorMacDataService"); ackHandlerModule = default("^.ackHandler"); @display("p=100,200"); } contention: <default("Contention")> like IContention { parameters: @display("p=100,300"); } // TODO consider moving QosRecoveryProcedure and QosAckHandler from Edcaf to Hcf, as they seem to be prepared to handle all ACs? ackHandler: QosAckHandler { parameters: @display("p=100,400"); } txopProcedure: TxopProcedure { parameters: @display("p=100,500"); } // TODO consider moving QosRecoveryProcedure and QosAckHandler from Edcaf to Hcf, as they seem to be prepared to handle all ACs? recoveryProcedure: QosRecoveryProcedure { parameters: cwCalculatorModule = "^"; rtsPolicyModule = "^.^.^.rtsPolicy"; @display("p=100,600"); } }File: src/inet/linklayer/ieee80211/mac/channelaccess/Edcaf.ned