Non-gateway node MAC for reservation channel MAC protocol. More...
#include <introspected-doxygen.h>
Public Types | |
enum | { TYPE_DATA, TYPE_GWPING, TYPE_RTS, TYPE_CTS, TYPE_ACK } |
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 |
SimpleRefCount & | operator= (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 | |
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 { UNASSOCIATED, GWPSENT, IDLE, RTSSENT, DATATX } |
Private Member Functions | |
void | Associate (void) |
void | AssociateTimeout (void) |
void | BlockRtsing (void) |
UanHeaderRcRts | CreateRtsHeader (const Reservation &res) |
bool | IsPhy1Ok (void) |
void | ProcessAck (Ptr< Packet > ack) |
void | ReceiveOkFromPhy (Ptr< Packet >, double sinr, UanTxMode mode) |
void | RtsTimeout (void) |
void | ScheduleData (const UanHeaderRcCts &ctsh, const UanHeaderRcCtsGlobal &ctsg, uint32_t ctsBytes) |
void | SendPacket (Ptr< Packet > pkt, uint32_t rate) |
void | SendRts (void) |
Private Attributes | |
UanAddress | m_address |
UanAddress | m_assocAddr |
bool | m_cleared |
uint32_t | m_ctsSizeG |
uint32_t | m_ctsSizeN |
uint32_t | m_currentRate |
TracedCallback< Ptr< const Packet >, uint16_t > | m_dequeueLogger |
TracedCallback< Ptr< const Packet >, uint16_t > | m_enqueueLogger |
Ptr< ExponentialRandomVariable > | m_ev |
Provides exponential random variables. | |
Callback< void, Ptr< Packet > , const UanAddress & > | m_forwardUpCb |
uint8_t | m_frameNo |
Time | m_learnedProp |
uint32_t | m_maxFrames |
double | m_minRetryRate |
uint32_t | m_numRates |
uint16_t | m_numRetryRates |
Ptr< UanPhy > | m_phy |
std::list< std::pair< Ptr < Packet >, UanAddress > > | m_pktQueue |
uint32_t | m_queueLimit |
std::list< Reservation > | m_resList |
double | m_retryRate |
double | m_retryStep |
bool | m_rtsBlocked |
EventId | m_rtsEvent |
TracedCallback< Ptr< const Packet >, UanTxMode > | m_rxLogger |
Time | m_sifs |
EventId | m_startAgain |
State | m_state |
Static Private Attributes | |
static uint32_t | m_cntrlSends = 0 |
Non-gateway node MAC for reservation channel MAC protocol.
ns3::UanMacRc is accessible through the following paths with Config::Set and Config::Connect:
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. This particular implementation assumes that there is only a single gateway.
For more information on class operation email lentr (This work is, as of yet, unpublished) acy@ u.was hing ton.e du
Definition at line 137 of file uan-mac-rc.h.
|
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.
stream | first stream index to use |
Implements ns3::UanMac.
Definition at line 271 of file uan-mac-rc.cc.
References m_ev, and NS_LOG_FUNCTION.
Attach PHY layer to this MAC. Some MACs may be designed to work with multiple PHY layers. Others may only work with one.
phy | Phy layer to attach to this MAC |
Implements ns3::UanMac.
Definition at line 333 of file uan-mac-rc.cc.
References ns3::MakeCallback().
|
virtual |
Clears all pointer references
Implements ns3::UanMac.
Definition at line 176 of file uan-mac-rc.cc.
References ns3::EventId::Cancel().
Referenced by DoDispose().
|
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 200 of file uan-mac-rc.cc.
References Clear(), and ns3::Object::DoDispose().
|
virtual |
Enqueue packet to be transmitted
pkt | Packet to be transmitted |
dest | Destination address |
protocolNumber | Protocol #. Usage varies by MAC |
Implements ns3::UanMac.
Definition at line 291 of file uan-mac-rc.cc.
References ns3::UanAddress::ConvertFrom(), ns3::EventId::IsRunning(), and NS_LOG_WARN.
|
virtual |
|
virtual |
Implements ns3::UanMac.
Definition at line 340 of file uan-mac-rc.cc.
References ns3::UanAddress::GetBroadcast().
|
virtual |
addr | UanAddress for this MAC |
Implements ns3::UanMac.
Definition at line 285 of file uan-mac-rc.cc.
|
virtual |
cb | Callback to be called when a packet is forwarded up to higher layer |
Implements ns3::UanMac.
Definition at line 327 of file uan-mac-rc.cc.