MacProtocolBase

Package: inet.linklayer.base

MacProtocolBase

simple module

Module base for different MAC protocols.

Inheritance diagram

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

Known subclasses

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.

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.

Extends

Name Type Description
LayeredProtocolBase simple module

Module base for different layered protocols.

Parameters

Name Type Default value Description
interfaceTableModule string

Properties

Name Value Description
display i=block/rxtx

Gates

Name Direction Size Description
upperLayerIn input
upperLayerOut output
lowerLayerIn input
lowerLayerOut output

Signals

Name Type Unit
packetReceivedFromUpper cPacket
packetReceivedFromLower cPacket
packetDropped cPacket
packetSentToLower cPacket
packetSentToUpper cPacket

Source code

//
// Module base for different MAC protocols.
//
simple MacProtocolBase extends LayeredProtocolBase
{
    parameters:
        string interfaceTableModule;
        @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/base/MacProtocolBase.ned