A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
ns3::UanMacRcGw Class Reference

Gateway side of RC-MAC. More...

#include <introspected-doxygen.h>

+ Inheritance diagram for ns3::UanMacRcGw:

Classes

struct  AckData
 
struct  Request
 

Public Member Functions

int64_t AssignStreams (int64_t stream)
 
virtual void AttachPhy (Ptr< UanPhy > phy)
 
virtual void Clear (void)
 
virtual bool Enqueue (Ptr< Packet > pkt, const Address &dest, uint16_t protocolNumber)
 
virtual Address GetAddress (void)
 
virtual Address GetBroadcast (void) const
 
virtual void SetAddress (UanAddress addr)
 
virtual void SetForwardUpCb (Callback< void, Ptr< Packet >, const UanAddress & > cb)
 
- Public Member Functions inherited from ns3::Object
void AggregateObject (Ptr< Object > other)
 
void Dispose (void)
 
AggregateIterator GetAggregateIterator (void) const
 
virtual TypeId GetInstanceTypeId (void) const
 
template<typename T >
Ptr< T > GetObject (void) const
 
template<typename T >
Ptr< T > GetObject (TypeId tid) const
 
void Initialize (void)
 
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 SimpleRefCount (const SimpleRefCount &o)
 
uint32_t GetReferenceCount (void) const
 
SimpleRefCountoperator= (const SimpleRefCount &o)
 
void Ref (void) const
 
void Unref (void) const
 
- Public Member Functions inherited from ns3::ObjectBase
void GetAttribute (std::string name, AttributeValue &value) const
 
bool GetAttributeFailSafe (std::string name, AttributeValue &attribute) const
 
void SetAttribute (std::string name, const AttributeValue &value)
 
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
 
bool TraceConnect (std::string name, std::string context, const CallbackBase &cb)
 
bool TraceConnectWithoutContext (std::string name, const CallbackBase &cb)
 
bool TraceDisconnect (std::string name, std::string context, const CallbackBase &cb)
 
bool TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb)
 

Static Public Member Functions

static TypeId GetTypeId (void)
 
- Static Public Member Functions inherited from ns3::UanMac
static TypeId GetTypeId (void)
 
- Static Public Member Functions inherited from ns3::Object
static TypeId GetTypeId (void)
 
- Static Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
static void Cleanup (void)
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId (void)
 

Protected Member Functions

virtual void DoDispose ()
 
- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
 
virtual void DoInitialize (void)
 
virtual void NotifyNewAggregate (void)
 
- Protected Member Functions inherited from ns3::ObjectBase
void ConstructSelf (const AttributeConstructionList &attributes)
 
virtual void NotifyConstructionCompleted (void)
 

Private Types

enum  State { IDLE, INCYCLE, CTSING }
 

Private Member Functions

uint32_t CompExpMinIndex (uint32_t n, uint32_t k)
 
double ComputeAlpha (uint32_t totalFrames, uint32_t totalBytes, uint32_t n, uint32_t a, double deltaK)
 
double ComputeExpBOverA (uint32_t n, uint32_t a, uint32_t ldlh, std::vector< double > deltaK)
 
double ComputeExpS (uint32_t a, uint32_t ld, std::vector< double > exppdk)
 
double ComputeExpS (uint32_t a, uint32_t ld)
 
double ComputePiK (uint32_t a, uint32_t n, uint32_t k)
 
void CycleStarted (void)
 
void EndCycle (void)
 
uint32_t FindOptA (void)
 
std::vector< double > GetExpPdk (void)
 
uint64_t NchooseK (uint32_t n, uint32_t k)
 
void ReceiveError (Ptr< Packet > pkt, double sinr)
 
void ReceivePacket (Ptr< Packet > pkt, double sinr, UanTxMode mode)
 
void SendPacket (Ptr< Packet > pkt, uint32_t rate)
 
void StartCycle (void)
 

Private Attributes

std::map< UanAddress, AckDatam_ackData
 
uint32_t m_ackSize
 
UanAddress m_address
 
bool m_cleared
 
uint32_t m_ctsSizeG
 
uint32_t m_ctsSizeN
 
uint32_t m_currentRateNum
 
uint16_t m_currentRetryRate
 
TracedCallback< Time, Time,
uint32_t, uint32_t, double,
uint32_t, double > 
m_cycleLogger
 
Callback< void, Ptr< Packet >
, const UanAddress & > 
m_forwardUpCb
 
uint32_t m_frameSize
 
Time m_maxDelta
 
uint32_t m_maxRes
 
double m_minRetryRate
 
uint32_t m_numNodes
 
uint32_t m_numRates
 
uint16_t m_numRetryRates
 
Ptr< UanPhym_phy
 
std::map< UanAddress, Timem_propDelay
 
uint32_t m_rateStep
 
std::map< UanAddress, Requestm_requests
 
double m_retryRate
 
double m_retryStep
 
uint32_t m_rtsSize
 
TracedCallback< Ptr< const
Packet >, UanTxMode
m_rxLogger
 
Time m_sifs
 
std::set< std::pair< Time,
UanAddress > > 
m_sortedRes
 
State m_state
 
uint32_t m_totalRate
 

Detailed Description

Gateway side of RC-MAC.

Config Paths

ns3::UanMacRcGw is accessible through the following paths with Config::Set and Config::Connect:

  • /NodeList/[i]/DeviceList/[i]/$ns3::UanNetDevice/Mac/$ns3::UanMacRcGw

Attributes

  • MaxReservations: Maximum number of reservations to accept per cycle
  • NumberOfRates: Number of rates per Phy layer
  • RetryRate: Number of retry rates per second at non-gateway nodes
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 0.1
    • Flags: construct write read
  • MaxPropDelay: Maximum propagation delay between gateway and non-gateway nodes
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: +2000000000.0ns
    • Flags: construct write read
  • SIFS: Spacing between frames to account for timing error and processing delay
    • Set with class: TimeValue
    • Underlying type: Time
    • Initial value: +200000000.0ns
    • Flags: construct write read
  • NumberOfNodes: Number of non-gateway nodes in this gateway's neighborhood
  • MinRetryRate: Smallest allowed RTS retry rate
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 0.01
    • Flags: construct write read
  • RetryStep: Retry rate increment
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 0.01
    • Flags: construct write read
  • NumberOfRetryRates: Number of retry rates
  • TotalRate: Total available channel rate in bps (for a single channel, without splitting reservation channel)
  • RateStep: Increments available for rate assignment in bps
  • FrameSize: Size of data frames in bytes

TraceSources

  • RX: A packet was destined for and received at this MAC layer
  • Cycle: Trace cycle statistics

This MAC protocol assumes a network topology where all traffic is destined for a set of GW nodes which are connected via some out of band (RF?) means. UanMacRcGw is the protocol which runs on the gateway nodes.

This particular implementation assumes that there is only a single gateway.

For more information on class operation email lentr.nosp@m.acy@.nosp@m.u.was.nosp@m.hing.nosp@m.ton.e.nosp@m.du (This work is, as of yet, unpublished)

Definition at line 60 of file uan-mac-rc-gw.h.

Member Function Documentation

int64_t ns3::UanMacRcGw::AssignStreams ( int64_t  stream)
virtual

Assign a fixed random variable stream number to the random variables used by this model. Return the number of streams (possibly zero) that have been assigned.

Parameters
streamfirst stream index to use
Returns
the number of stream indices assigned by this model

Implements ns3::UanMac.

Definition at line 737 of file uan-mac-rc-gw.cc.

References NS_LOG_FUNCTION.

void ns3::UanMacRcGw::AttachPhy ( Ptr< UanPhy phy)
virtual

Attach PHY layer to this MAC. Some MACs may be designed to work with multiple PHY layers. Others may only work with one.

Parameters
phyPhy layer to attach to this MAC

Implements ns3::UanMac.

Definition at line 212 of file uan-mac-rc-gw.cc.

References ns3::MakeCallback().

void ns3::UanMacRcGw::Clear ( void  )
virtual

Clears all pointer references

Implements ns3::UanMac.

Definition at line 79 of file uan-mac-rc-gw.cc.

void ns3::UanMacRcGw::DoDispose ( void  )
protectedvirtual

This method is called by Object::Dispose or by the object's destructor, whichever comes first.

Subclasses are expected to implement their real destruction code in an overriden version of this method and chain up to their parent's implementation once they are done. i.e., for simplicity, the destructor of every subclass should be empty and its content should be moved to the associated DoDispose method.

It is safe to call GetObject from within this method.

Reimplemented from ns3::Object.

Definition at line 103 of file uan-mac-rc-gw.cc.

bool ns3::UanMacRcGw::Enqueue ( Ptr< Packet pkt,
const Address dest,
uint16_t  protocolNumber 
)
virtual

Enqueue packet to be transmitted

Parameters
pktPacket to be transmitted
destDestination address
protocolNumberProtocol #. Usage varies by MAC

Implements ns3::UanMac.

Definition at line 199 of file uan-mac-rc-gw.cc.

References NS_LOG_WARN.

Address ns3::UanMacRcGw::GetAddress ( void  )
virtual
Returns
MAC Address

Implements ns3::UanMac.

Definition at line 187 of file uan-mac-rc-gw.cc.

Address ns3::UanMacRcGw::GetBroadcast ( void  ) const
virtual
Returns
Broadcast address

Implements ns3::UanMac.

Definition at line 225 of file uan-mac-rc-gw.cc.

void ns3::UanMacRcGw::SetAddress ( UanAddress  addr)
virtual
Parameters
addrUanAddress for this MAC

Implements ns3::UanMac.

Definition at line 193 of file uan-mac-rc-gw.cc.

void ns3::UanMacRcGw::SetForwardUpCb ( Callback< void, Ptr< Packet >, const UanAddress & >  cb)
virtual
Parameters
cbCallback to be called when a packet is forwarded up to higher layer

Implements ns3::UanMac.

Definition at line 206 of file uan-mac-rc-gw.cc.


The documentation for this class was generated from the following files: