Ieee802154NarrowbandNic

Package: inet.linklayer.ieee802154

Ieee802154NarrowbandNic

compound module

(no description)

mac : Ieee802154NarrowbandMac

Source:
mac: Ieee802154NarrowbandMac {
    parameters:
        @display("p=100,150");
} radio : like IRadio

IRadio: Prototype for radio modules.

Source:
radio: <radioType> like IRadio {
    parameters:
        @display("p=100,250");
}

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.

Parameters

Name Type Default value Description
interfaceTableModule string
radioType string "Ieee802154NarrowbandScalarRadio"

Properties

Name Value Description
display i=block/ifcard

Gates

Name Direction Size Description
upperLayerIn input
upperLayerOut output
radioIn input

Unassigned submodule parameters

Name Type Default value Description
mac.interfaceTableModule string
mac.address string "auto"

MAC address as hex string (12 hex digits), or "auto". "auto" values will be replaced by a generated MAC address in init stage 0.

mac.headerLength int 72 bit

length of MAC header

mac.queueLength int 100

size of the MAC queue (maximum number of packets in Tx buffer)

mac.bitrate double 250000 bps

bit rate

mac.ccaDetectionTime double 0.000128 s

Clear Channel Assessment detection time

mac.aTurnaroundTime double 0.000192 s

Time to switch radio from Rx to Tx state

mac.macMaxFrameRetries int 3

Maximum number of frame retransmission, only used when usage of MAC acks is enabled.

mac.macAckWaitDuration double 0.00056 s

Time to wait for an acknowledgement after transmitting a unicast frame. Only used when usage of MAC acks is enabled. Value is calculated from 1+12+10+12 symbols, which is defined for nonbeacon-enabled PAN. In the non-beacon-enabled case, the receiver responds at aTurnaroundTime (i.e. the time for the sender and receiver to both be guaranteed to have switched from Tx to Rx and vice verse). This gives the value 192us + 352us = 544us (there's been some discussion about the "extra" 1 symbol == 16us) [section 7.5.6.4.2 of the specification].

mac.ackLength int 40 bit

Complete MAC ack message length (in bits) (! headerLength is not added to this), only used when usage of MAC acks is enabled.

mac.sifs double 0.000192 s

Simple interframe space (12 symbols). Time to wait between receiving a frame and acknowledging it. Should be bigger than the maximum time for switching between Tx and Rx at the receiver. Only used when usage of MAC acks is enabled.

mac.backoffMethod string "exponential"

Backoff method to use: constant, linear or exponential

mac.macMaxCSMABackoffs int 4

maximum number of extra backoffs (excluding the first unconditional one) before frame drop

mac.aUnitBackoffPeriod double 0.00032 s

base unit for all backoff calculations

mac.contentionWindow int 2

# of backoff periods of the initial contention window (for linear and constant backoff method only)

mac.macMinBE double 3

minimum backoff exponent (for exponential backoff method only)

mac.macMaxBE double 5

maximum backoff exponent (for exponential backoff method only)

mac.radioModule string "^.radio"

The path to the Radio module //FIXME remove default value

Source code

module Ieee802154NarrowbandNic like IWirelessNic
{
    parameters:
        string interfaceTableModule;
        string radioType = default("Ieee802154NarrowbandScalarRadio");
        *.interfaceTableModule = default(absPath(interfaceTableModule));
        @display("i=block/ifcard");
    gates:
        input upperLayerIn;
        output upperLayerOut;
        input radioIn @labels(IRadioFrame);
    submodules:
        mac: Ieee802154NarrowbandMac {
            parameters:
                @display("p=100,150");
        }
        radio: <radioType> like IRadio {
            parameters:
                @display("p=100,250");
        }
    connections:
        upperLayerIn --> mac.upperLayerIn;
        mac.lowerLayerOut --> radio.upperLayerIn;
        mac.upperLayerOut --> { @display("m=n"); } --> upperLayerOut;
        radioIn --> { @display("m=s"); } --> radio.radioIn;
        radio.upperLayerOut --> mac.lowerLayerIn;
}
File: src/inet/linklayer/ieee802154/Ieee802154NarrowbandNic.ned