IMACProtocol

Package: inet.linklayer.contract

IMACProtocol

module interface

This interface provides an abstraction for different network protocols.

Inheritance diagram

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

Implemented by

Name Type Description
BMacLayer simple module

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

CSMA simple module

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

CsmaCaMac simple 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.

Ieee80211CompatibleMac compound module

Delegate some upperMac parameters to Ieee80211Mac, to be more compatible with the old MAC. NOTE: NOT ALL PARAMETERS OF THE OLD MAC CAN BE MAPPED.

Ieee80211Mac compound module

Implementation of the 802.11b MAC protocol. This module is intended to be used in combination with the Ieee80211Radio module as the physical layer. (The SnrEval80211 and Decider80211 modules should also work if per-packet bitrate setting gets implemented.)

Ieee802154NarrowbandMac simple module (no description)
LMacLayer simple module

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

XMacLayer simple module

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

Used in compound modules

Name Type Description
WirelessNic compound module (no description)

Known subclasses

Name Type Description
IIeee80211Mac module interface

Module interface for all ieee802.11 mac modul

Properties

Name Value Description
display i=block/rxtx

Source code

//
// This interface provides an abstraction for different network protocols.
//
moduleinterface IMACProtocol
{
    parameters:
        @display("i=block/rxtx");
    gates:
        input upperLayerIn @labels(INetworkDatagram/down);
        output upperLayerOut @labels(INetworkDatagram/up);
        input lowerLayerIn @labels(ILinkLayerFrame/up);
        output lowerLayerOut @labels(ILinkLayerFrame/down);
}
File: src/inet/linklayer/contract/IMACProtocol.ned