IMacProtocol

Package: inet.linklayer.contract

IMacProtocol

module interface

This interface provides an abstraction for different MAC protocols.

Inheritance diagram

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram.

Implemented by

Name Type Description
AckingMac compound module

This module implements a trivial MAC protocol for use in AckingWirelessInterface.

BMac compound module

Implementation of B-MAC (called also Berkeley MAC, Low Power Listening or LPL). See C++ documentation for details.

CsmaCaMac compound module

Implements an imaginary CSMA/CA-based MAC protocol with optional acknowledgements and a retry mechanism. With the appropriate settings, it can approximate basic 802.11b ad-hoc mode operation.

Ieee80211Mac compound module

Implementation of the 802.11 MAC protocol. This module is intended to be used in combination with the Ieee80211Radio module as the physical layer.

Ieee802154Mac compound module

Generic CSMA protocol supporting Mac-ACKs as well as constant, linear or exponential backoff times.

Ieee802154NarrowbandMac compound module (no description)
LMac compound module

Implementation of L-MAC (Lightweight Medium Access Protocol for Wireless Sensor Networks).

ShortcutMac simple module

This module implements a simple shortcut to peer MAC protocol that completely bypasses the physical layer. Packets received from the upper layer protocols are never lost. The MAC protocol directly sends packets to the destination MAC protocol without any physical layer processing. Physical layer overhead is simply simulated by overhead bits, overhead transmission duration and a propagation delay.

XMac compound module

Implementation of X-MAC. See C++ documentation for details.

Used in compound modules

Name Type Description
WirelessInterface compound module

This module implements a generic wireless network interface.

Known subclasses

Name Type Description
IIeee80211Mac module interface

Module interface for the IEEE 802.11 MAC module type.

Properties

Name Value Description
display i=block/rxtx

Source code

//
// This interface provides an abstraction for different MAC protocols.
//
moduleinterface IMacProtocol
{
    parameters:
        @display("i=block/rxtx");
    gates:
        input upperLayerIn @labels(INetworkHeader/down);
        output upperLayerOut @labels(INetworkHeader/up);
        input lowerLayerIn @labels(ILinkLayerFrame/up);
        output lowerLayerOut @labels(ILinkLayerFrame/down);
}

File: src/inet/linklayer/contract/IMacProtocol.ned