28 #include <ns3/object.h> 29 #include <ns3/traced-callback.h> 30 #include <ns3/traced-value.h> 31 #include <ns3/mac16-address.h> 32 #include <ns3/mac64-address.h> 33 #include <ns3/sequence-number.h> 34 #include <ns3/lr-wpan-phy.h> 35 #include <ns3/lr-wpan-fields.h> 36 #include <ns3/event-id.h> 108 namespace TracedValueCallback {
MlmeSyncLossIndicationCallback m_mlmeSyncLossIndicationCallback
This callback is used to indicate the loss of synchronization with a coordinator. ...
TracedValue< LrWpanMacState > m_lrWpanMacState
The current state of the MAC layer.
void MlmePollRequest(MlmePollRequestParams params)
IEEE 802.15.4-2011, section 6.2.14.2 MLME-POLL.request Prompts the device to request data from the co...
uint16_t m_dstPanId
Destination PAN identifier.
Simulation virtual time values and global simulation resolution.
void CheckQueue(void)
Check the transmission queue.
LrWpanSyncLossReason m_lossReason
The reason for the lost of synchronization.
static const uint32_t aMaxSIFSFrameSize
The maximum size of an MPDU, in octets, that can be followed by a Short InterFrame Spacing (SIFS) per...
bool m_beaconTrackingOn
Indication of whether the current device is tracking incoming beacons.
static const uint32_t aMaxLostBeacons
The number of consecutive lost beacons that will cause the MAC sublayer of a receiving device to decl...
bool m_trackBcn
True if the mlme sync with the next beacon and attempts to track future beacons.
Class that implements the LR-WPAN MAC state machine.
void PlmeGetAttributeConfirm(LrWpanPhyEnumeration status, LrWpanPibAttributeIdentifier id, LrWpanPhyPibAttributes *attribute)
IEEE 802.15.4-2006 section 6.2.2.6 PLME-GET.confirm Get attributes per definition from Table 23 in se...
Mac16Address m_dstAddr
Destination address.
void RemoveFirstTxQElement()
Remove the tip of the transmission queue, including clean up related to the last packet transmission...
Mac64Address m_srcExtAddr
Source extended address.
TracedCallback< Ptr< const Packet > > m_macTxOkTrace
The trace source fired when packets where successfully transmitted, that is an acknowledgment was rec...
LrWpanPibAttributeIdentifier
IEEE802.15.4-2006 PHY PIB Attribute Identifiers Table 23 in section 6.4.2.
Forward calls to a chain of Callback.
bool isCoordDest(void)
Check if the packet destination is its coordinator.
McpsDataConfirmCallback m_mcpsDataConfirmCallback
This callback is used to report data transmission request status to the upper layers.
std::deque< TxQueueElement * > m_txQueue
The transmit queue used by the MAC.
Mac64Address GetExtendedAddress(void) const
Get the extended address of this MAC.
Mac16Address m_dstAddr
Destination address.
uint8_t m_dstAddrMode
Destination address mode.
Mac64Address m_dstExtAddr
Destination extended address.
LrWpanMlmePollConfirmStatus
Table 39 of IEEE 802.15.4-2011.
uint8_t m_logCh
The channel number on which to attempt coordinator synchronization.
void SetMlmeBeaconNotifyIndicationCallback(MlmeBeaconNotifyIndicationCallback c)
Set the callback for the indication of an incoming beacon packet.
static const uint32_t aNumSuperframeSlots
Number of a superframe slots per superframe.
void SetMlmeStartConfirmCallback(MlmeStartConfirmCallback c)
Set the callback for the confirmation of a data transmission request.
LrWpanAssociationStatus m_associationStatus
The current association status of the MAC layer.
bool m_battLifeExt
Flag indicating whether or not the Battery life extension (BLE) features are used.
uint8_t m_incomingFnlCapSlot
Indication of the Slot where the CAP portion of the INCOMING Superframe ends.
Mac64Address m_dstExtAddr
Destination extended address.
Mac64Address m_macCoordExtendedAddress
The extended address of the coordinator through which the device is associated.
virtual void DoDispose(void)
Destructor implementation.
TracedCallback< LrWpanMacState, LrWpanMacState > m_macStateLogger
A trace source that fires when the LrWpanMac changes states.
void SetShortAddress(Mac16Address address)
Set the short address of this MAC.
uint8_t m_incomingBeaconOrder
The beaconOrder value of the INCOMING frame.
uint8_t m_incomingSuperframeOrder
Used by all devices that have a parent.
uint32_t m_superframeDuration
Indication of the superframe duration in symbols.
SuperframeStatus
Superframe status.
IEEE802.15.4-2006 PHY PIB Attributes Table 23 in section 6.4.2.
McpsDataIndicationCallback m_mcpsDataIndicationCallback
This callback is used to notify incoming packets to the upper layers.
void SetMcpsDataConfirmCallback(McpsDataConfirmCallback c)
Set the callback for the confirmation of a data transmission request.
void AwaitBeacon(void)
Called after the end of an INCOMING superframe to start the moment a device waits for a new incoming ...
MlmeStartConfirmCallback m_mlmeStartConfirmCallback
This callback is used to report the start of a new PAN or the begin of a new superframe configuration...
void McpsDataRequest(McpsDataRequestParams params, Ptr< Packet > p)
IEEE 802.15.4-2006, section 7.1.1.1 MCPS-DATA.request Request to transfer a MSDU. ...
uint8_t m_numCsmacaRetry
The number of CSMA/CA retries used for sending the current packet.
MLME-START.request params.
void IfsWaitTimeout(Time ifsTime)
After a successful transmission of a frame (beacon, data) or an ack frame reception, the mac layer wait an Interframe Space (IFS) time and triggers this function to continue with the MAC flow.
Mac16Address m_coorShortAddr
Coordintator short address.
uint8_t m_msduHandle
MSDU handle.
uint32_t m_incomingBeaconInterval
Indication of the interval a node should receive a superframe expressed in symbols.
uint8_t m_msduHandle
MSDU handle.
EventId m_incCapEvent
Scheduler event for the end of the incoming superframe CAP.
uint16_t m_dstPanId
Destination PAN identifier.
TracedCallback< Ptr< const Packet > > m_macTxTrace
The trace source fired when packets are being sent down to L1.
Ptr< Packet > m_txPkt
The packet which is currently being sent by the MAC layer.
bool GetRxOnWhenIdle(void)
Check if the receiver will be enabled when the MAC is idle.
The Beacon transmission or reception Period.
MLME-BEACON-NOTIFY.indication params.
LrWpanAssociationStatus GetAssociationStatus(void) const
Get the current association status.
void SetLrWpanMacState(LrWpanMacState macState)
CSMA-CA algorithm calls back the MAC after executing channel assessment.
void SetMacMaxFrameRetries(uint8_t retries)
Set the macMaxFrameRetries attribute value.
void PlmeEdConfirm(LrWpanPhyEnumeration status, uint8_t energyLevel)
IEEE 802.15.4-2006 section 6.2.2.4 PLME-ED.confirm status and energy level.
uint16_t m_coorPanId
The PAN id of the coordinator to which the poll is intended.
TracedCallback< Ptr< const Packet > > m_promiscSnifferTrace
A trace source that emulates a promiscuous mode protocol sniffer connected to the device...
uint8_t m_macBeaconOrder
Used by a PAN coordinator or coordinator.
TracedCallback< Ptr< const Packet > > m_macTxEnqueueTrace
The trace source fired when packets come into the "top" of the device at the L3/L2 transition...
uint8_t m_fnlCapSlot
Indication of the Slot where the CAP portion of the OUTGOING Superframe ends.
TracedCallback< Ptr< const Packet > > m_macRxTrace
The trace source fired for packets successfully received by the device immediately before being forwa...
void MlmeStartRequest(MlmeStartRequestParams params)
IEEE 802.15.4-2006, section 7.1.14.1 MLME-START.request Request to allow a PAN coordinator to initiat...
bool m_panCoor
Indication of whether the current device is the PAN coordinator.
LrWpanAddressMode m_coorAddrMode
The addressing mode of the coordinator to which the pool is intended.
uint64_t GetTxPacketSymbols(void)
Obtain the number of symbols in the packet which is currently being sent by the MAC layer...
uint8_t m_sfrmOrd
Superframe Order, indicates the length of the CAP in time slots.
bool isTxAckReq(void)
Check if the packet to transmit requires acknowledgment.
MlmeBeaconNotifyIndicationCallback m_mlmeBeaconNotifyIndicationCallback
This callback is used to notify incoming beacon packets to the upper layers.
SuperframeType
Superframe type.
uint64_t m_macSyncSymbolOffset
Symbol boundary is same as m_macBeaconTxTime.
LrWpanMlmeStartConfirmStatus
Table 35 of IEEE 802.15.4-2011.
Ptr< Packet > txQPkt
Queued packet.
LrWpanSyncLossReason
Table 37 of IEEE 802.15.4-2011.
uint8_t m_logCh
Logical channel on which to start using the new superframe configuration.
bool PrepareRetransmission(void)
Check for remaining retransmissions for the packet currently being sent.
void PlmeCcaConfirm(LrWpanPhyEnumeration status)
IEEE 802.15.4-2006 section 6.2.2.2 PLME-CCA.confirm status.
EventId m_ackWaitTimeout
Scheduler event for the ACK timeout of the currently transmitted data packet.
TracedCallback< Ptr< const Packet > > m_macTxDropTrace
The trace source fired when packets are dropped due to missing ACKs or because of transmission failur...
EventId m_ifsEvent
Scheduler event for Interframe spacing wait time.
uint16_t GetPanId(void) const
Get the PAN id used by this MAC.
void SetMlmeSyncLossIndicationCallback(MlmeSyncLossIndicationCallback c)
Set the callback for the loss of synchronization with a coordinator.
uint32_t m_startTime
Time at which to begin transmitting beacons (Used by Coordinator not PAN Coordinators).
EventId m_setMacState
Scheduler event for a deferred MAC state change.
LrWpanMcpsDataConfirmStatus
Table 42 of 802.15.4-2006.
SuperframeField GetSuperframeField(void)
Constructs a Superframe specification field from the local information, the superframe Specification ...
PendingAddrFields GetPendingAddrFields(void)
Constructs Pending Address Fields from the local information, the Pending Address Fields are part of ...
Helper structure for managing transmission queue elements.
bool m_macRxOnWhenIdle
Indication of whether the MAC sublayer is to enable its receiver during idle periods.
Callback< void, MlmeSyncLossIndicationParams > MlmeSyncLossIndicationCallback
This callback is called to indicate the loss of synchronization with a coordinator.
void MlmeSyncRequest(MlmeSyncRequestParams params)
IEEE 802.15.4-2011, section 6.2.13.1 MLME-SYNC.request Request to synchronize with the coordinator by...
Callback< void, MlmePollConfirmParams > MlmePollConfirmCallback
This callback is called after a Mlme-Poll.Request has been called from the higher layer...
MCPS-DATA.confirm params.
void PdDataConfirm(LrWpanPhyEnumeration status)
IEEE 802.15.4-2006 section 6.2.1.2 Confirm the end of transmission of an MPDU to MAC.
uint8_t m_txOptions
Tx Options (bitfield)
Ptr< Packet > txQPkt
Queued packet.
void StartInactivePeriod(SuperframeType superframeType)
Start the Inactive Period in a beacon-enabled mode.
void PrintTransmitQueueSize(void)
Print the number of elements in the packet transmit queue.
uint32_t GetIfsSize()
Get the size of the Interframe Space according to MPDU size (m_txPkt).
void SendOneBeacon(void)
Called to send a single beacon frame.
uint32_t m_macLIFSPeriod
The minimum time forming a Long InterFrame Spacing (LIFS) period.
uint8_t m_bcnOrd
Beacon Order, Used to calculate the beacon interval, a value of 15 indicates no periodic beacons will...
uint8_t m_mpduLinkQuality
LQI value measured during reception of the MPDU.
void SetPhy(Ptr< LrWpanPhy > phy)
Set the underlying PHY for the MAC.
GtsFields GetGtsFields(void)
Constructs the Guaranteed Time Slots (GTS) Fields from local information.
Helper structure for managing indirect transmission queue elements.
MLME-START.confirm params.
void SetAssociatedCoor(Mac16Address mac)
Check if the packet destination is its coordinator.
TracedCallback< Ptr< const Packet >, uint8_t, uint8_t > m_sentPktTrace
The trace source fired when packets are considered as successfully sent or the transmission has been ...
void PdDataIndication(uint32_t psduLength, Ptr< Packet > p, uint8_t lqi)
IEEE 802.15.4-2006 section 6.2.1.3 PD-DATA.indication Indicates the transfer of an MPDU from PHY to M...
uint8_t m_srcAddrMode
Source address mode.
uint16_t m_PanId
Pan Identifier used by the device.
LrWpanMcpsDataConfirmStatus m_status
The status of the last MSDU transmission.
LrWpanAddressMode m_srcAddrMode
Source address mode.
uint8_t m_retransmission
The number of already used retransmission for the currently transmitted packet.
EventId m_trackingEvent
Scheduler event to track the incoming beacons.
Callback< void, McpsDataIndicationParams, Ptr< Packet > > McpsDataIndicationCallback
This callback is called after a Mcps has successfully received a frame and wants to deliver it to the...
static const uint32_t aBaseSlotDuration
Length of a superframe slot in symbols.
Mac64Address m_selfExt
The extended address used by this MAC.
uint64_t GetMacAckWaitDuration(void) const
Get the macAckWaitDuration attribute value.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
EventId m_cfpEvent
Scheduler event for the end of the outgoing superframe CFP.
LrWpanAddressMode m_dstAddrMode
Destination address mode.
LrWpanAddressMode
table 80 of 802.15.4
uint16_t m_macTransactionPersistanceTime
The maximum time (in superframe periods) that a transaction is stored by a coordinator and indicated ...
TracedCallback< Ptr< const Packet > > m_macRxDropTrace
The trace source fired for packets successfully received by the device but dropped before being forwa...
void StartCAP(SuperframeType superframeType)
Called to begin the Contention Access Period (CAP) in a beacon-enabled mode.
Callback< void, McpsDataConfirmParams > McpsDataConfirmCallback
This callback is called after a McpsDataRequest has been called from the higher layer.
void SetRxOnWhenIdle(bool rxOnWhenIdle)
Set if the receiver should be enabled when the MAC is idle.
uint32_t m_beaconInterval
Indication of the Interval used by the coordinator to transmit beacon frames expressed in symbols...
TracedCallback< Ptr< const Packet > > m_macPromiscRxTrace
The trace source fired for packets successfully received by the device immediately before being forwa...
bool m_macPromiscuousMode
Indicates if MAC sublayer is in receive all mode.
Mac16Address m_srcAddr
Source address.
MlmePollConfirmCallback m_mlmePollConfirmCallback
This callback is used to report the status after a device send data command request to the coordinato...
void(* SentTracedCallback)(Ptr< const Packet > packet, uint8_t retries, uint8_t backoffs)
TracedCallback signature for sent packets.
SequenceNumber8 m_macBsn
Sequence number added to transmitted beacon frame, 00-ff.
This class can contain 16 bit addresses.
Represent the Superframe Specification information field.
uint8_t m_macSuperframeOrder
Used by a PAN coordinator or coordinator.
EventId m_capEvent
Scheduler event for the end of the outgoing superframe CAP.
uint8_t m_dsn
The DSN of the received data frame.
std::deque< IndTxQueueElement * > m_indTxQueue
The indirect transmit queue used by the MAC pending messages.
Mac16Address m_macCoordShortAddress
The short address of the coordinator through which the device is associated.
LrWpanMac(void)
Default constructor.
uint8_t m_bsn
The beacon sequence number.
TracedCallback< Ptr< const Packet > > m_snifferTrace
A trace source that emulates a non-promiscuous protocol sniffer connected to the device.
void SetExtendedAddress(Mac64Address address)
Set the extended address of this MAC.
uint8_t m_macMaxFrameRetries
The maximum number of retries allowed after a transmission failure.
uint16_t m_panId
The PAN identifier with which the device lost synchronization or to which it was realigned.
uint8_t txQMsduHandle
MSDU Handle.
Contention Access Period.
static TypeId GetTypeId(void)
Get the type ID.
uint32_t m_logChPage
Logical channel page on which to start using the new superframe configuration.
uint8_t m_logCh
The channel number on which the device lost synchronization or to which it was realigned.
uint32_t m_incomingSuperframeDuration
Indication of the superframe duration in symbols (e.g.
Ptr< LrWpanPhy > m_phy
The PHY associated with this MAC.
EventId m_beaconEvent
Scheduler event for generation of one beacon.
MLME-POLL.request params.
uint32_t m_ifs
The value of the necessary InterFrame Space after the transmission of a packet.
MLME-SYNC.request params.
Time expireTime
The expiration time of the packet in the indirect transmission queue.
Time m_macBeaconRxTime
The time that the device received its last bit of the beacon frame.
void(* StateTracedCallback)(LrWpanMacState oldState, LrWpanMacState newState)
TracedCallback signature for LrWpanMacState change events.
Mac64Address m_coorExtAddr
Coordinator extended address.
SequenceNumber8 m_macDsn
Sequence number added to transmitted data or MAC command frame, 00-ff.
An identifier for simulation events.
uint64_t m_rxBeaconSymbols
The total size of the received beacon in symbols.
static const uint32_t aMinMPDUOverhead
The minimum number of octets added by the MAC sublayer to the PSDU.
bool m_macAutoRequest
Indication of whether a device automatically sends data request command if its address is listed in t...
uint32_t m_macSIFSPeriod
The minimum time forming a Short InterFrame Spacing (SIFS) period.
LrWpanTxOption
Tx options.
void ChangeMacState(LrWpanMacState newState)
Change the current MAC state to the given new state.
MLME-SYNC-LOSS.indication params.
Time m_macBeaconTxTime
The time that the device transmitted its last beacon frame.
uint8_t m_numLostBeacons
The number of consecutive loss beacons in a beacon tracking operation.
TracedCallback< Time > m_macIfsEndTrace
The trace source is fired at the end of any Interframe Space (IFS).
Ptr< LrWpanCsmaCa > m_csmaCa
The CSMA/CA implementation used by this MAC.
LrWpanMacState
MAC states.
LrWpanAssociationStatus
table 83 of 802.15.4
uint8_t GetMacMaxFrameRetries(void) const
Get the macMaxFrameRetries attribute value.
TracedCallback< Ptr< const Packet > > m_macTxDequeueTrace
The trace source fired when packets are dequeued from the L3/l2 transmission queue.
uint8_t m_deviceCapability
Indication of current device capability (FFD or RFD)
uint16_t m_macPanId
16 bits id of PAN on which this device is operating.
TracedValue< SuperframeStatus > m_incSuperframeStatus
The current period of the incoming superframe.
void StartCFP(SuperframeType superframeType)
Called to begin the Contention Free Period (CFP) in a beacon-enabled mode.
bool m_panCoor
On true this device will become coordinator.
void PlmeSetTRXStateConfirm(LrWpanPhyEnumeration status)
IEEE 802.15.4-2006 section 6.2.2.8 PLME-SET-TRX-STATE.confirm Set PHY state.
LrWpanPhyEnumeration
IEEE802.15.4-2006 PHY Emumerations Table 18 in section 6.2.3.
void SendAck(uint8_t seqno)
Send an acknowledgment packet for the given sequence number.
MCPS-DATA.request params.
A base class which provides memory management and object aggregation.
LrWpanMlmeStartConfirmStatus m_status
The status of a MLME-start.request.
void AckWaitTimeout(void)
Handle an ACK timeout with a packet retransmission, if there are retransmission left, or a packet drop.
bool m_coorRealgn
True if a realignment request command is to be transmitted prior changing the superframe.
Represent the Pending Address Specification field.
Represent the GTS information fields.
Ptr< LrWpanPhy > GetPhy(void)
Get the underlying PHY of the MAC.
Mac16Address m_shortAddress
The short address used by this MAC.
Mac16Address GetShortAddress(void) const
Get the short address of this MAC.
a unique identifier for an interface.
Callback< void, MlmeStartConfirmParams > MlmeStartConfirmCallback
This callback is called after a MlmeStartRequest has been called from the higher layer.
LrWpanMlmePollConfirmStatus m_status
The confirmation status resulting from a MLME-poll.request.
void SetCsmaCa(Ptr< LrWpanCsmaCa > csmaCa)
Set the CSMA/CA implementation to be used by the MAC.
void SetPanId(uint16_t panId)
Set the PAN id used by this MAC.
void PlmeSetAttributeConfirm(LrWpanPhyEnumeration status, LrWpanPibAttributeIdentifier id)
IEEE 802.15.4-2006 section 6.2.2.10 PLME-SET.confirm Set attributes per definition from Table 23 in s...
Inactive Period or unslotted CSMA-CA.
virtual void DoInitialize(void)
Initialize() implementation.
uint8_t txQMsduHandle
MSDU Handle.
static const uint32_t aBaseSuperframeDuration
Length of a superframe in symbols.
TracedValue< SuperframeStatus > m_outSuperframeStatus
The current period of the outgoing superframe.
MLME-START.confirm params.
uint16_t m_srcPanId
Source PAN identifier.
void BeaconSearchTimeout(void)
Called if the device is unable to locate a beacon in the time set by MLME-SYNC.request.
void SetMlmePollConfirmCallback(MlmePollConfirmCallback c)
Set the callback for the confirmation of a data transmission request.
void SetAssociationStatus(LrWpanAssociationStatus status)
Set the current association status.
MCPS-DATA.indication params.
EventId m_incCfpEvent
Scheduler event for the end of the incoming superframe CFP.
Callback< void, MlmeBeaconNotifyIndicationParams, Ptr< Packet > > MlmeBeaconNotifyIndicationCallback
This callback is called after a Mlme has successfully received a beacon frame and wants to deliver it...
void SetMcpsDataIndicationCallback(McpsDataIndicationCallback c)
Set the callback for the indication of an incoming data packet.