Compound Module PhyMacNic

Package: org.mixim.examples.multiConnectionManager
File: examples/multiConnectionManager/PhyMacNic.ned

(no description)

PhyLayer CSMAMacLayer

Usage diagram:

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram. Click here to see the full picture.

Inheritance diagram:

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram. Click here to see the full picture.

Used in compound modules:

If a module type shows up more than once, that means it has been defined in more than one NED file.

PhyMacHost (compound module) (no description)

Parameters:

Name Type Default value Description
connectionManagerName string

name of the ConnectionManager module

Properties:

Name Value Description
display bgb=101,200,white,,;bgp=10,10

Gates:

Name Direction Size Description
upperGateIn input
upperGateOut output
upperControlIn input
upperControlOut output
radioIn input

radioIn gate for sendDirect

Unassigned submodule parameters:

Name Type Default value Description
phy.coreDebug bool

debug switch for core framework

phy.recordStats bool false

enable/disable tracking of statistics (eg. cOutvectors)

phy.headerLength int 0

defines the length of the phy header (/preamble)

phy.usePropagationDelay bool

Should transmission delay be simulated?

phy.thermalNoise double

the strength of the thermal noise [dBm]

phy.useThermalNoise bool

should thermal noise be considered?

phy.analogueModels xml

Specification of the analogue models to use and their parameters

phy.decider xml

Specification of the decider to use and its parameters

phy.sensitivity double

The sensitivity of the physical layer [dBm]

phy.maxTXPower double

The maximum transimission power of the physical layer [mW]

phy.timeRXToTX double 0

switchTimes [s]:

phy.timeRXToSleep double 0
phy.timeTXToRX double 0
phy.timeTXToSleep double 0
phy.timeSleepToRX double 0
phy.timeSleepToTX double 0
phy.initialRadioState int 0

state the radio is initially in

phy.radioMinAtt double 1.0

radios gain factor (attenuation) while receiving

phy.radioMaxAtt double 0.0

radios gain factor (attenuation) while not receiving

phy.nbRadioChannels int 1

Number of available radio channels. Defaults to single channel radio.

phy.initialRadioChannel int 0

Initial radio channel.

mac.notAffectedByHostState bool false
mac.coreDebug bool

debug switch

mac.headerLength double

length of the MAC packet header (in bits)

mac.debug bool false

enable debugging for this module

mac.slotDuration double

how long is a slot? [s]

mac.difs double

maximum time between a packet and its ack [s]

mac.maxTxAttempts double

maximum number of transmission attempts

mac.queueLength int

length of the MAC queue

mac.defaultChannel double

default channel

mac.bitrate double

bit rate [bps]

mac.txPower double

tx power [mW]

mac.contentionWindow double

contention window

Source code:

module PhyMacNic
{
    parameters:
        string connectionManagerName; 	//name of the ConnectionManager module

        @display("bgb=101,200,white,,;bgp=10,10");
    gates:
        input upperGateIn;
        output upperGateOut;
        input upperControlIn;
        output upperControlOut;
        input radioIn; // radioIn gate for sendDirect

    submodules:
        phy: PhyLayer {
            parameters:
                @display("p=60,170;b=80,30,rect,white,,");
        }
        mac: CSMAMacLayer {
            parameters:
                @display("p=60,100;b=80,30,rect,white,,");
        }

    connections:
        mac.upperGateOut --> { @display("ls=black;m=m,25,50,25,0"); } --> upperGateOut;
        mac.upperGateIn <-- { @display("ls=black;m=m,15,50,15,0"); } <-- upperGateIn;
        mac.upperControlOut --> { @display("ls=red;m=m,75,50,75,0"); } --> upperControlOut;
        mac.upperControlIn <-- { @display("ls=red;m=m,85,0,85,0"); } <-- upperControlIn;

        phy.upperGateOut --> { @display("ls=black;m=m,25,50,25,0"); } --> mac.lowerGateIn;
        phy.upperGateIn <-- { @display("ls=black;m=m,15,50,15,0"); } <-- mac.lowerGateOut;
        phy.upperControlOut --> { @display("ls=red;m=m,75,50,75,0"); } --> mac.lowerControlIn;
        phy.upperControlIn <-- { @display("ls=red;m=m,85,0,85,0"); } <-- mac.lowerControlOut;

        radioIn --> phy.radioIn;

}