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
The following diagram shows usage relationships between types. Unresolved types are missing from the diagram. Click here to see the full picture.
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram. Click here to see the full picture.
| 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 |
| 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 |
| 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) |
// // 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; }