24 #include "ns3/uan-mac.h"
25 #include "ns3/nstime.h"
26 #include "ns3/simulator.h"
27 #include "ns3/uan-phy.h"
28 #include "ns3/uan-tx-mode.h"
29 #include "ns3/uan-address.h"
30 #include "ns3/random-variable-stream.h"
65 virtual void SetCw (uint32_t cw);
77 virtual uint32_t
GetCw (
void);
92 virtual void Clear (
void);
CW-MAC protocol, similar in idea to the 802.11 DCF with constant backoff window.
keep track of time values and allow control of global simulation resolution
virtual Address GetAddress()
Get the MAC Address.
State m_state
Current state.
void SendPacket(void)
Send packet on PHY.
uint16_t m_pktTxProt
Next packet protocol number (usage varies by MAC).
forward calls to a chain of CallbackAn ns3::TracedCallback has almost exactly the same API as a norma...
static TypeId GetTypeId(void)
Register this type.
virtual void SetSlotTime(Time duration)
Set the slot time duration.
virtual void AttachPhy(Ptr< UanPhy > phy)
Attach PHY layer to this MAC.
bool m_cleared
Flag when we've been cleared.
TracedCallback< Ptr< const Packet >, uint16_t > m_enqueueLogger
A packet arrived at the MAC for transmission.
virtual void Clear(void)
Clears all pointer references.
virtual Address GetBroadcast(void) const
Get the broadcast address.
Time m_savedDelayS
Remaining delay until next send.
virtual void NotifyRxEndError(void)
Called when UanPhy finishes receiving packet in error.
a polymophic address class
virtual void SetAddress(UanAddress addr)
Set the address.
virtual bool Enqueue(Ptr< Packet > pkt, const Address &dest, uint16_t protocolNumber)
Enqueue packet to be transmitted.
Virtual base class for all UAN MAC protocols.
TracedCallback< Ptr< const Packet >, UanTxMode > m_rxLogger
A packet destined for this MAC was received.
A class used for addressing UAN MAC's.
virtual void SetCw(uint32_t cw)
Set the contention window size.
virtual void NotifyRxStart(void)
Called when UanPhy begins receiving packet.
void EndTx(void)
End TX state.
Abstraction of packet modulation information.
UanMacCw()
Default constructor.
Ptr< UniformRandomVariable > m_rv
Provides uniform random variable for contention window.
Callback< void, Ptr< Packet >, const UanAddress & > m_forwardUpCb
Forwarding up callback.
virtual void NotifyRxEndOk(void)
Called when UanPhy finishes receiving packet without error.
void SaveTimer(void)
Cancel SendEvent and save remaining delay.
virtual ~UanMacCw()
Dummy destructor, DoDispose.
virtual void NotifyCcaStart(void)
Called when UanPhy begins sensing channel is busy.
Interface for PHY event listener.
virtual Time GetSlotTime(void)
Get the slot time duration.
virtual void NotifyTxStart(Time duration)
Called when transmission starts from Phy object.
virtual void DoDispose()
This method is called by Object::Dispose or by the object's destructor, whichever comes first...
EventId m_sendEvent
Scheduled SendPacket event.
EventId m_txEndEvent
Scheduled EndTx event.
State
Enum defining possible Phy states.
virtual uint32_t GetCw(void)
Get the contention window size.
Time m_sendTime
Time to send next packet.
Ptr< UanPhy > m_phy
PHY layer attached to this MAC.
an identifier for simulation events.
int64_t AssignStreams(int64_t stream)
Assign a fixed random variable stream number to the random variables used by this model...
Time m_slotTime
Slot time duration.
virtual void SetForwardUpCb(Callback< void, Ptr< Packet >, const UanAddress & > cb)
Set the callback to forward packets up to higher layers.
void PhyRxPacketGood(Ptr< Packet > packet, double sinr, UanTxMode mode)
Receive packet from lower layer (passed to PHY as callback).
Ptr< Packet > m_pktTx
Next packet to send.
UanAddress m_address
The MAC address.
void StartTimer(void)
Schedule SendPacket after delay.
TracedCallback< Ptr< const Packet >, uint16_t > m_dequeueLogger
A packet was passed down to the PHY from the MAC.
void PhyRxPacketError(Ptr< Packet > packet, double sinr)
Packet received at lower layer in error.
a unique identifier for an interface.
uint32_t m_cw
Contention window size.
virtual void NotifyCcaEnd(void)
Called when UanPhy stops sensing channel is busy.