22 #include "ns3/simulator.h" 
   23 #include "ns3/dcf-manager.h" 
   33   void QueueTx (uint64_t txTime, uint64_t expectedGrantTime);
 
   62   virtual void DoRun (
void);
 
   72   void StartTest (uint64_t slotTime, uint64_t sifs, uint64_t eifsNoDifsNoSifs, uint32_t ackTimeoutValue = 20);
 
   77   void AddRxOkEvt (uint64_t at, uint64_t duration);
 
   80   void AddTxEvt (uint64_t at, uint64_t duration);
 
   85                          uint64_t expectedGrantTime, uint32_t from);
 
   87                                        uint64_t expectedGrantTime, uint32_t from);
 
   94                                            uint64_t expectedGrantTime, uint32_t ackDelay, uint32_t from);
 
  162                        MicroSeconds (duration));
 
  256                        MicroSeconds (duration));
 
  265                        MicroSeconds (duration));
 
  272                        MicroSeconds (duration));
 
  282                        MicroSeconds (duration));
 
  289                        MicroSeconds (duration));
 
  299                                   uint64_t expectedGrantTime, uint32_t from)
 
  305                                                 uint64_t expectedGrantTime, uint32_t from)
 
  313                                                     uint64_t expectedGrantTime, uint32_t ackDelay, uint32_t from)
 
  324   state->
QueueTx (txTime, expectedGrantTime);
 
  332                        MicroSeconds (duration));
 
  339                        MicroSeconds (duration));
 
  346                        MicroSeconds (duration));
 
void AddNavStart(uint64_t at, uint64_t duration)
 
virtual void DoNotifyCollision(void)
Called by DcfManager to notify a DcfState subclass that a normal collision occured, that is, that the medium was busy when access was requested. 
 
void AddSwitchingEvt(uint64_t at, uint64_t duration)
 
void RequestAccess(DcfState *state)
 
#define NS_ASSERT(condition)
 
static void Run(void)
Run the simulation until one of: 
 
void DoAccessRequest(uint64_t txTime, uint64_t expectedGrantTime, DcfStateTest *state)
 
void AddAckTimeoutReset(uint64_t at)
 
void SetAifsn(uint32_t aifsn)
 
static EventId Schedule(Time const &time, MEM mem_ptr, OBJ obj)
Schedule an event to expire at the relative time "time" is reached. 
 
ExpectedCollisions m_expectedCollision
 
std::list< ExpectedGrant > ExpectedGrants
 
std::pair< uint64_t, uint64_t > ExpectedGrant
 
ExpectedCollisions m_expectedInternalCollision
 
void AddAccessRequestWithAckTimeout(uint64_t at, uint64_t txTime, uint64_t expectedGrantTime, uint32_t from)
 
static DcfTestSuite g_dcfTestSuite
 
void NotifyNavResetNow(Time duration)
 
std::vector< DcfStateTest * > DcfStates
 
void NotifyRxEndOkNow(void)
Notify the DCF that a packet reception was just completed successfully. 
 
void AddRxInsideSifsEvt(uint64_t at, uint64_t duration)
 
void NotifyTxStartNow(Time duration)
 
void NotifyAckTimeoutStartNow(Time duration)
Notify that ACK timer has started for the given duration. 
 
#define NS_TEST_EXPECT_MSG_EQ(actual, limit, msg)
Test that an actual and expected (limit) value are equal and report if not. 
 
Manage a set of ns3::DcfStateHandle a set of independent ns3::DcfState, each of which represents a si...
 
void AddAccessRequestWithSuccessfullAck(uint64_t at, uint64_t txTime, uint64_t expectedGrantTime, uint32_t ackDelay, uint32_t from)
 
keep track of the state needed for a single DCF function. 
 
void AddCcaBusyEvt(uint64_t at, uint64_t duration)
 
void ExpectCollision(uint64_t time, uint32_t from, uint32_t nSlots)
 
void AddTxEvt(uint64_t at, uint64_t duration)
 
void NotifyCollision(uint32_t i)
 
static void Destroy(void)
Every event scheduled by the Simulator::insertAtDestroy method is invoked. 
 
void AddRxStartEvt(uint64_t at, uint64_t duration)
 
DcfStateTest(DcfManagerTest *test, uint32_t i)
 
void QueueTx(uint64_t txTime, uint64_t expectedGrantTime)
 
void StartBackoffNow(uint32_t nSlots)
 
uint32_t m_ackTimeoutValue
 
virtual void DoRun(void)
Implementation to actually run this TestCase. 
 
void NotifyRxEndErrorNow(void)
Notify the DCF that a packet reception was just completed unsuccessfully. 
 
virtual void DoNotifyInternalCollision(void)
Called by DcfManager to notify a DcfState subclass that an 'internal' collision occured, that is, that the backoff timer of a higher priority DcfState expired at the same time and that access was granted to this higher priority DcfState. 
 
void StartTest(uint64_t slotTime, uint64_t sifs, uint64_t eifsNoDifsNoSifs, uint32_t ackTimeoutValue=20)
 
std::list< struct ExpectedCollision > ExpectedCollisions
 
void SetEifsNoDifs(Time eifsNoDifs)
 
virtual void DoNotifyChannelSwitching(void)
Called by DcfManager to notify a DcfState subclass that a channel switching occured. 
 
static Time Now(void)
Return the "current simulation time". 
 
void AddTestCase(TestCase *testCase) NS_DEPRECATED
Add an individual child TestCase case to this TestCase. 
 
void ExpectInternalCollision(uint64_t time, uint32_t from, uint32_t nSlots)
 
void AddRxOkEvt(uint64_t at, uint64_t duration)
 
void NotifyMaybeCcaBusyStartNow(Time duration)
 
void AddDcfState(uint32_t aifsn)
 
void NotifyAccessGranted(uint32_t i)
 
void SetSlot(Time slotTime)
 
void NotifyAckTimeoutResetNow()
Notify that ACK timer has resetted. 
 
void NotifyInternalCollision(uint32_t i)
 
void NotifyNavStartNow(Time duration)
 
Time Now(void)
create an ns3::Time instance which contains the current simulation time. 
 
void NotifyChannelSwitching(uint32_t i)
 
void NotifyRxStartNow(Time duration)
 
void AddAccessRequest(uint64_t at, uint64_t txTime, uint64_t expectedGrantTime, uint32_t from)
 
ExpectedGrants m_expectedGrants
 
virtual void DoNotifyAccessGranted(void)
Called by DcfManager to notify a DcfState subclass that access to the medium is granted and can start...
 
void NotifySwitchingStartNow(Time duration)
 
void AddNavReset(uint64_t at, uint64_t duration)
 
void AddRxErrorEvt(uint64_t at, uint64_t duration)
 
DcfManager * m_dcfManager