Package: inet.linklayer.ieee80211.mac.channelaccess
Edcaf
compound moduleIEEE 802.11 Enhanced Distributed Channel Access Function
Usage diagram
The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.
Used in compound modules
| Name | Type | Description |
|---|---|---|
| Edca | compound module | (no description) |
Parameters
| Name | Type | Default value | Description |
|---|---|---|---|
| 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 |
|---|---|---|
| packetSentToPeer | inet::Packet | |
| channelOwnershipChanged | bool |
Statistics
| Name | Title | Source | Record | Unit | Interpolation Mode |
|---|---|---|---|---|---|
| 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.pendingQueueModule | string | "^.pendingQueue" | |
| inProgressFrames.originatorMacDataServiceModule | string | "^.^.^.originatorMacDataService" | |
| inProgressFrames.ackHandlerModule | string | "^.ackHandler" | |
| txopProcedure.txopLimit | double | -1s | |
| recoveryProcedure.shortRetryLimit | int | 7 | |
| recoveryProcedure.longRetryLimit | int | 4 |
Source code
// // IEEE 802.11 Enhanced Distributed Channel Access Function // module Edcaf { 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, because 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, because 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