Compound Module Nic802154_TI_CC1100

Package: org.mixim.modules.nic
File: modules/nic/Nic802154_TI_CC1100.ned

This NIC implements a TI CC1100 network interface card using the CSMA protocol as specified in IEEE 802.15.4-2006.

Note: To be able to use this Nic in your simulation you have to copy the file "Nic802154_TI_CC2420_Decider.xml" from "modules/nic/" to your simulation directory.

Author: Jerome Rousselot

PhyLayerBattery CSMA802154

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.

Parameters:

Name Type Default value Description
connectionManagerName string ""

name of the ConnectionManager module

sleepCurrent double 0.02mA

power consumption from boards (at 3V)

rxCurrent double 16.4 mA
decodingCurrentDelta double 0 mA
txCurrent double 17 mA
setupRxCurrent double 8.2mA
setupTxCurrent double 8.2mA
rxTxCurrent double 17 mA
txRxCurrent double 17 mA

Gates:

Name Direction Size Description
upperGateIn input

from upper layers

radioIn input

to receive AirFrames

upperGateOut output

to upper layers

upperControlOut output

control connection

upperControlIn input

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.usePropagationDelay bool

Should transmission delay be simulated?

phy.useThermalNoise bool

should thermal noise be considered?

phy.analogueModels xml xmldoc("config.xml")

Specification of the analogue models to use and their parameters

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.

phy.numActivities int 5

the number of different power consuming activities the phy layer has change this parameter if your decider or physical layer uses more than the default 5 activities (sleep, rx, tx, switching, decoding)

mac.notAffectedByHostState bool false
mac.coreDebug bool

debug switch

mac.debug bool false

debug switch

mac.stats bool true
mac.trace bool false
mac.queueLength double 100

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

mac.txPower double

tx power [mW]

mac.useMACAcks bool true

Send/Expect MAC acks for unicast traffic?

mac.macMaxFrameRetries double 3

maximum number of frame retransmission only used when usage of MAC acks is enabled

mac.macMaxCSMABackoffs double 4

maximum backoffs

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)

Source code:

//
// This NIC implements a TI CC1100 network interface card
// using the CSMA protocol as specified in IEEE 802.15.4-2006.
//
// Note: To be able to use this Nic in your simulation you have to copy the file 
// "Nic802154_TI_CC2420_Decider.xml" from "modules/nic/" to your simulation directory.
// @author Jerome Rousselot
//
module Nic802154_TI_CC1100 like INic
{
    parameters:
        string connectionManagerName = default("");   //name of the ConnectionManager module
        // power consumption from boards (at 3V)
        double sleepCurrent @unit(mA) = 0.02mA; // 20 µA
        double rxCurrent @unit(mA) = 16.4 mA;
        double decodingCurrentDelta @unit(mA) = 0 mA;
        double txCurrent @unit(mA) = 17 mA;
        double setupRxCurrent @unit(mA) = 8.2mA;
        double setupTxCurrent @unit(mA) = 8.2mA;
        double rxTxCurrent @unit(mA) = 17 mA;
        double txRxCurrent @unit(mA) = 17 mA;

    gates:
        input upperGateIn; // from upper layers
        input radioIn; // to receive AirFrames
        output upperGateOut; // to upper layers
        output upperControlOut; // control connection
        input upperControlIn;

    submodules:
        phy: PhyLayerBattery {
            parameters:
                decider = xmldoc("Nic802154_TI_CC1100_Decider.xml");
                analogueModels = default(xmldoc("config.xml"));
                //publishRSSIAlways = false;
                sensitivity = -100 dBm;
                headerLength = 48 bit; // ieee 802.15.4
                thermalNoise = -110 dBm;
                maxTXPower = 1 mW;
                initialRadioState = 0;
                // From TI CC1100 datasheet rev. C
                timeSleepToRX = 0.00108 s;
                timeSleepToTX = 0.00108 s;
                timeRXToTX = 0.000010 s;
                timeTXToRX = 0.000022 s;
                timeRXToSleep = 0 s;
                timeTXToSleep = 0 s;
                @display("p=96,236;i=block/wrxtx");

        }
        mac: CSMA802154 {
            parameters:
                rxSetupTime = 0.00108 s;

                @display("p=96,87;i=block/layer");

        }

    connections:

        radioIn --> phy.radioIn;

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

        mac.upperGateOut --> upperGateOut;
        mac.upperControlOut --> upperControlOut;
        mac.upperGateIn <-- upperGateIn;
        mac.upperControlIn <-- upperControlIn;
}