OriginatorQosMacDataService.ned

NED File src/inet/linklayer/ieee80211/mac/originator/OriginatorQosMacDataService.ned

Name Type Description
OriginatorQosMacDataService compound module

Implements the MAC data service for the originator (sender) side in IEEE 802.11 QoS networks. Extends the basic MAC data service with QoS capabilities including MSDU aggregation (A-MSDU) and MPDU aggregation (A-MPDU). Processes outgoing frames by assigning sequence numbers, performing aggregation, and fragmentation based on configured policies. Follows the MAC data plane architecture described in IEEE 802.11 standard.

Source code

//
// Copyright (C) 2016 OpenSim Ltd.
//
// SPDX-License-Identifier: LGPL-3.0-or-later
//


package inet.linklayer.ieee80211.mac.originator;

import inet.common.Module;
import inet.linklayer.ieee80211.mac.contract.IFragmentationPolicy;
import inet.linklayer.ieee80211.mac.contract.IMsduAggregationPolicy;
import inet.linklayer.ieee80211.mac.contract.IMpduAggregationPolicy;

//
// Implements the MAC data service for the originator (sender) side in IEEE 802.11
// QoS networks. Extends the basic MAC data service with QoS capabilities including
// MSDU aggregation (A-MSDU) and MPDU aggregation (A-MPDU). Processes outgoing
// frames by assigning sequence numbers, performing aggregation, and fragmentation
// based on configured policies. Follows the MAC data plane architecture described
// in IEEE 802.11 standard.
//
module OriginatorQosMacDataService extends Module
{
    parameters:
        @class(OriginatorQosMacDataService);
        @display("i=block/fork");
        @signal[packetFragmented](type=inet::Packet);
        @signal[packetAggregated](type=inet::Packet);
        @statistic[packetFragmented](title="packets fragmented"; record=count);
        @statistic[packetAggregated](title="packets aggregated"; record=count);
    submodules:
        msduAggregationPolicy: <default("BasicMsduAggregationPolicy")> like IMsduAggregationPolicy if typename != "" {
            parameters:
                @display("p=100,100");
        }
        mpduAggregationPolicy: <default("BasicMpduAggregationPolicy")> like IMpduAggregationPolicy if typename != "" {
            parameters:
                @display("p=100,300");
        }
        fragmentationPolicy: <default("BasicFragmentationPolicy")> like IFragmentationPolicy if typename != "" {
            parameters:
                @display("p=100,200");
        }
}