Simple Module CSMAMacLayer

File: contrib/nic/macLayer/CSMAMacLayer.ned

C++ definition: click here

CSMA MAC protocol

Usage diagram:

The following diagram shows usage relationships between modules, networks and channels. Unresolved module (and channel) 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.

NicCsma (no description)
GENic (no description)

Parameters:

Name Type Description
debug bool

debug switch

busyRSSI numeric const

level at which we consider medium busy

slotDuration numeric const

how long is a slot?

difs numeric const

maximum time between a packet and its ack

maxTxAttempts numeric const

maximum number of transmission attempts

headerLength numeric const

length of MAC header

queueLength numeric const

length of the MAC queue

defaultChannel numeric const

default channel

bitrate numeric const

bit rate

contentionWindow numeric const

contention window

Gates:

Name Direction Description
uppergateIn input
uppergateOut output
lowergateIn input
lowergateOut output
upperControlOut output

for control messages to upper layer

lowerControlIn input

for control messages from phy layer

Source code:

simple CSMAMacLayer
    parameters:
        debug: bool, // debug switch
        // level at which we consider medium busy
	busyRSSI: numeric const, 
	// how long is a slot?
	slotDuration: numeric const, 
	// maximum time between a packet and its ack
	difs: numeric const, 
	// maximum number of transmission attempts
	maxTxAttempts: numeric const, 
	// length of MAC header
        headerLength: numeric const,
	// length of the MAC queue
        queueLength: numeric const,
	// default channel 
        defaultChannel : numeric const,
	// bit rate 
	bitrate : numeric const,
	// contention window
	contentionWindow : numeric const;

    gates:
        in: uppergateIn;
        out: uppergateOut;
        in: lowergateIn;
        out: lowergateOut;
	out: upperControlOut; // for control messages to upper layer
	in: lowerControlIn;   // for control messages from phy layer
endsimple