IMacProtocol

Package: inet.linklayer.contract

module interface IMacProtocol

This interface provides an abstraction for different MAC protocols.

Usage diagram

Inheritance diagram

Implemented by

Name

Type

Description

AckingMac

compound module

Implements a trivial MAC protocol for use in AckingWirelessInterface.

BMac

compound module

Implementation of B-MAC (also called 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

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

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