Simple Module MACProtocolBase

Package: inet.linklayer.base
File: src/inet/linklayer/base/MACProtocolBase.ned

C++ definition

Module base for different MAC protocols.

MACProtocolBase

Usage diagram:

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram.

Inheritance diagram:

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

Extends:

Name Type Description
LayeredProtocolBase simple module

Module base for different layered protocols.

Known subclasses:

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.

IdealMac simple module

Implements a trivial MAC layer for use in IdealWirelessNic.

LMacLayer simple module

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

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
packetFromLowerDropped cPacket
packetFromUpperDropped 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(INetworkDatagram/down);
        output upperLayerOut @labels(INetworkDatagram/up);
        input lowerLayerIn @labels(ILinkLayerFrame/up);
        output lowerLayerOut @labels(ILinkLayerFrame/down);
}