Ieee802154NarrowbandMac¶
Package: inet.linklayer.ieee802154
compound module Ieee802154NarrowbandMac
(no description)
Usage diagram¶
Inheritance diagram¶
Used in compound modules¶
Name |
Type |
Description |
|---|---|---|
compound module |
Implements an IEEE 802.15.4 narrowband network interface. |
Extends¶
Name |
Type |
Description |
|---|---|---|
compound module |
Generic CSMA protocol supporting Mac-ACKs as well as constant, linear or exponential backoff times. |
Parameters¶
Name |
Type |
Default value |
Description |
|---|---|---|---|
displayStringTextFormat |
string |
“{macStatus}” |
Determines the text that is written on top of the submodule, supports displaying pars, watches, and module-specific information |
interfaceTableModule |
string |
||
address |
string |
“auto” |
MAC address as a hex string (12 hex digits), or |
headerLength |
int |
72 b |
Length of MAC header |
mtu |
int |
127 Byte - 9 Byte |
|
bitrate |
double |
250000 bps |
Bit rate |
ccaDetectionTime |
double |
0.000128 s |
8 symbols |
rxSetupTime |
double |
0s |
Time to set up the radio to the reception state |
aTurnaroundTime |
double |
0.000192 s |
12 symbols |
useMACAcks |
bool |
true |
Send/Expect MAC acks for unicast traffic? |
macMaxFrameRetries |
int |
3 |
Maximum number of frame retransmissions, only used when the usage of MAC acks is enabled. |
macAckWaitDuration |
double |
0.00056 s |
Time to wait for an acknowledgement after transmitting a unicast frame. Only used when the usage of MAC acks is enabled. The 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 versa). This gives the value 192us + 352us = 544us (there has been some discussion about the “extra” 1 symbol == 16us) [section 7.5.6.4.2 of the specification]. |
ackLength |
int |
40 b |
Complete MAC ack message length (in bits) (! headerLength is not added to this), only used when the usage of MAC acks is enabled. |
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 the usage of MAC acks is enabled. |
backoffMethod |
string |
“exponential” |
Backoff method to use: constant, linear, or exponential |
macMaxCSMABackoffs |
int |
4 |
Maximum number of extra backoffs (excluding the first unconditional one) before frame drop |
aUnitBackoffPeriod |
double |
0.00032 s |
Base unit for all backoff calculations |
contentionWindow |
int |
2 |
Number of backoff periods of the initial contention window (for linear and constant backoff method only) |
macMinBE |
int |
3 |
Minimum backoff exponent (for exponential backoff method only) |
macMaxBE |
int |
5 |
Maximum backoff exponent (for exponential backoff method only) |
radioModule |
string |
“^.radio” |
The path to the Radio module //FIXME remove default value |
Properties¶
Name |
Value |
Description |
|---|---|---|
class |
Ieee802154Mac |
|
display |
i=block/rxtx |
Gates¶
Name |
Direction |
Size |
Description |
|---|---|---|---|
upperLayerIn |
input |
||
upperLayerOut |
output |
||
lowerLayerIn |
input |
||
lowerLayerOut |
output |
Signals¶
Name |
Type |
Unit |
Description |
|---|---|---|---|
linkBroken |
|||
packetDropped |
cPacket |
||
packetReceivedFromLower |
cPacket |
||
packetReceivedFromUpper |
cPacket |
||
packetSentToLower |
cPacket |
||
packetSentToUpper |
cPacket |
Statistics¶
Name |
Title |
Source |
Record |
Unit |
Interpolation Mode |
Description |
|---|---|---|---|---|---|---|
linkBroken |
link break |
linkBroken |
count |
none |
||
packetDropBackoffLimitReached |
packet drop: backoff limit reached |
packetDropReasonIsCongestion(packetDropped) |
count,sum(packetBytes),vector(packetBytes) |
none |
||
packetDropIncorrectlyReceived |
packet drop: incorrectly received |
packetDropReasonIsIncorrectlyReceived(packetDropped) |
count,sum(packetBytes),vector(packetBytes) |
none |
||
packetDropNotAddressToUs |
packet drop: not addressed to us |
packetDropReasonIsNotAddressedToUs(packetDropped) |
count,sum(packetBytes),vector(packetBytes) |
none |
||
packetDropQueueOverflow |
packet drop: queue overflow |
packetDropReasonIsQueueOverflow(packetDropped) |
count,sum(packetBytes),vector(packetBytes) |
none |
||
packetDropRetryLimitReached |
packet drop: retry limit reached |
packetDropReasonIsRetryLimitReached(packetDropped) |
count,sum(packetBytes),vector(packetBytes) |
none |
Source code¶
module Ieee802154NarrowbandMac extends Ieee802154Mac
{
parameters:
useMACAcks = true;
// Time needed to switch from sleep to rx.
// TODO This is probably wrong, since it is used to compute
// the time for the CCA (and that might follow an RX state)
rxSetupTime = 0s;
// aMaxPHYPacketSize = 127 Octets (802.15.4-2006, page 45)
// aMinMPDUOverhead = 9 Octets (802.15.4-2006, page 159)
// aMaxMACPayloadSize = aMaxPHYPacketSize - aMinMPDUOverhead (802.15.4-2006, page 159)
mtu = 127 Byte - 9 Byte;
// length of MAC header
// aMinMPDUOverhead = 9 Octets (802.15.4-2006, page 159)
headerLength = default(72 b);
// Exponential Backoff
backoffMethod = default("exponential");
// Maximum number of frame retransmission
// 802.15.4-2006, page 164
macMaxFrameRetries = default(3);
// Maximum number of extra backoffs (excluding the first unconditional one) before frame drop
// 802.15.4-2006, page 163
macMaxCSMABackoffs = default(4);
// Minimum backoff exponent
// 802.15.4-2006, page 164
macMinBE = default(3);
// Maximum backoff exponent
// 802.15.4-2006, page 163
macMaxBE = default(5);
}
File: src/inet/linklayer/ieee802154/Ieee802154NarrowbandMac.ned