|
Lines 30-36
class DcfStateTest : public DcfState
|
Link Here
|
|---|
|
| 30 |
{ |
30 |
{ |
| 31 |
public: |
31 |
public: |
| 32 |
DcfStateTest (DcfManagerTest *test, uint32_t i); |
32 |
DcfStateTest (DcfManagerTest *test, uint32_t i); |
| 33 |
void QueueTx (uint64_t txTime, uint64_t expectedGrantTime); |
33 |
void QueueTx (uint64_t txTime, uint64_t expectedGrantTime, uint32_t nBackoffSlots); |
| 34 |
private: |
34 |
private: |
| 35 |
friend class DcfManagerTest; |
35 |
friend class DcfManagerTest; |
| 36 |
virtual void DoNotifyAccessGranted (void); |
36 |
virtual void DoNotifyAccessGranted (void); |
|
|
| 38 |
virtual void DoNotifyCollision (void); |
38 |
virtual void DoNotifyCollision (void); |
| 39 |
virtual void DoNotifyChannelSwitching (void); |
39 |
virtual void DoNotifyChannelSwitching (void); |
| 40 |
|
40 |
|
| 41 |
typedef std::pair<uint64_t,uint64_t> ExpectedGrant; |
41 |
struct ExpectedGrant { |
| 42 |
typedef std::list<ExpectedGrant> ExpectedGrants; |
42 |
uint64_t m_txTime; |
|
|
43 |
uint64_t m_expectedGrantTime; |
| 44 |
uint32_t m_nBackoffSlots; |
| 45 |
}; |
| 46 |
typedef std::list<struct ExpectedGrant> ExpectedGrants; |
| 47 |
|
| 43 |
struct ExpectedCollision { |
48 |
struct ExpectedCollision { |
| 44 |
uint64_t at; |
49 |
uint64_t at; |
| 45 |
uint32_t nSlots; |
50 |
uint32_t nSlots; |
|
|
| 80 |
void AddNavReset (uint64_t at, uint64_t duration); |
85 |
void AddNavReset (uint64_t at, uint64_t duration); |
| 81 |
void AddNavStart (uint64_t at, uint64_t duration); |
86 |
void AddNavStart (uint64_t at, uint64_t duration); |
| 82 |
void AddAckTimeoutReset (uint64_t at); |
87 |
void AddAckTimeoutReset (uint64_t at); |
| 83 |
void AddAccessRequest (uint64_t at, uint64_t txTime, |
88 |
void AddAccessRequest (uint64_t at, uint64_t txTime, uint64_t expectedGrantTime, |
| 84 |
uint64_t expectedGrantTime, uint32_t from); |
89 |
uint32_t nBackoffSlots, uint32_t from); |
| 85 |
void AddAccessRequestWithAckTimeout (uint64_t at, uint64_t txTime, |
90 |
void AddAccessRequestWithAckTimeout (uint64_t at, uint64_t txTime, uint64_t expectedGrantTime, |
| 86 |
uint64_t expectedGrantTime, uint32_t from); |
91 |
uint32_t nBackoffSlots, uint32_t from); |
| 87 |
///\param ackDelay is delay of the ack after txEnd |
92 |
///\param ackDelay is delay of the ack after txEnd |
| 88 |
void AddAccessRequestWithSuccessfullAck (uint64_t at, uint64_t txTime, |
93 |
void AddAccessRequestWithSuccessfullAck (uint64_t at, uint64_t txTime, uint64_t expectedGrantTime, |
| 89 |
uint64_t expectedGrantTime, uint32_t ackDelay, uint32_t from); |
94 |
uint32_t nBackoffSlots, uint32_t ackDelay, uint32_t from); |
| 90 |
void DoAccessRequest (uint64_t txTime, uint64_t expectedGrantTime, DcfStateTest *state); |
95 |
void DoAccessRequest (uint64_t txTime, uint64_t expectedGrantTime, uint32_t nBackoffSlots, DcfStateTest *state); |
| 91 |
void AddCcaBusyEvt (uint64_t at, uint64_t duration); |
96 |
void AddCcaBusyEvt (uint64_t at, uint64_t duration); |
| 92 |
void AddSwitchingEvt (uint64_t at, uint64_t duration); |
97 |
void AddSwitchingEvt (uint64_t at, uint64_t duration); |
| 93 |
void AddRxStartEvt (uint64_t at, uint64_t duration); |
98 |
void AddRxStartEvt (uint64_t at, uint64_t duration); |
|
Lines 105-113
DcfStateTest::DcfStateTest (DcfManagerTe
|
Link Here
|
|---|
|
| 105 |
: m_test (test), m_i(i) |
110 |
: m_test (test), m_i(i) |
| 106 |
{} |
111 |
{} |
| 107 |
void |
112 |
void |
| 108 |
DcfStateTest::QueueTx (uint64_t txTime, uint64_t expectedGrantTime) |
113 |
DcfStateTest::QueueTx (uint64_t txTime, uint64_t expectedGrantTime, uint32_t nBackoffSlots) |
| 109 |
{ |
114 |
{ |
| 110 |
m_expectedGrants.push_back (std::make_pair (txTime, expectedGrantTime)); |
115 |
struct ExpectedGrant grant; |
|
|
116 |
grant.m_txTime = txTime; |
| 117 |
grant.m_expectedGrantTime = expectedGrantTime; |
| 118 |
grant.m_nBackoffSlots = nBackoffSlots; |
| 119 |
m_expectedGrants.push_back (grant); |
| 111 |
} |
120 |
} |
| 112 |
void |
121 |
void |
| 113 |
DcfStateTest::DoNotifyAccessGranted (void) |
122 |
DcfStateTest::DoNotifyAccessGranted (void) |
|
Lines 140-150
DcfManagerTest::NotifyAccessGranted (uin
|
Link Here
|
|---|
|
| 140 |
{ |
149 |
{ |
| 141 |
DcfStateTest *state = m_dcfStates[i]; |
150 |
DcfStateTest *state = m_dcfStates[i]; |
| 142 |
NS_TEST_EXPECT_MSG_EQ (state->m_expectedGrants.empty (), false, "Have expected grants"); |
151 |
NS_TEST_EXPECT_MSG_EQ (state->m_expectedGrants.empty (), false, "Have expected grants"); |
| 143 |
std::pair<uint64_t, uint64_t> expected = state->m_expectedGrants.front (); |
152 |
struct DcfStateTest::ExpectedGrant expected = state->m_expectedGrants.front (); |
| 144 |
state->m_expectedGrants.pop_front (); |
153 |
state->m_expectedGrants.pop_front (); |
| 145 |
NS_TEST_EXPECT_MSG_EQ (Simulator::Now (), MicroSeconds (expected.second), "Expected access grant is now"); |
154 |
NS_TEST_EXPECT_MSG_EQ (Simulator::Now (), MicroSeconds (expected.m_expectedGrantTime), "Expected access grant is now"); |
| 146 |
m_dcfManager->NotifyTxStartNow (MicroSeconds (expected.first)); |
155 |
m_dcfManager->NotifyTxStartNow (MicroSeconds (expected.m_txTime)); |
| 147 |
m_dcfManager->NotifyAckTimeoutStartNow (MicroSeconds (m_ackTimeoutValue + expected.first)); |
156 |
state->StartBackoffNow (expected.m_nBackoffSlots); |
|
|
157 |
m_dcfManager->NotifyAckTimeoutStartNow (MicroSeconds (m_ackTimeoutValue + expected.m_txTime)); |
| 148 |
} |
158 |
} |
| 149 |
void |
159 |
void |
| 150 |
DcfManagerTest::AddTxEvt (uint64_t at, uint64_t duration) |
160 |
DcfManagerTest::AddTxEvt (uint64_t at, uint64_t duration) |
|
Lines 179-187
DcfManagerTest::NotifyChannelSwitching (
|
Link Here
|
|---|
|
| 179 |
DcfStateTest *state = m_dcfStates[i]; |
189 |
DcfStateTest *state = m_dcfStates[i]; |
| 180 |
if (!state->m_expectedGrants.empty ()) |
190 |
if (!state->m_expectedGrants.empty ()) |
| 181 |
{ |
191 |
{ |
| 182 |
std::pair<uint64_t, uint64_t> expected = state->m_expectedGrants.front (); |
192 |
struct DcfStateTest::ExpectedGrant expected = state->m_expectedGrants.front (); |
| 183 |
state->m_expectedGrants.pop_front (); |
193 |
state->m_expectedGrants.pop_front (); |
| 184 |
NS_TEST_EXPECT_MSG_EQ (Simulator::Now (), MicroSeconds (expected.second), "Expected grant is now"); |
194 |
NS_TEST_EXPECT_MSG_EQ (Simulator::Now (), MicroSeconds (expected.m_expectedGrantTime), "Expected grant is now"); |
| 185 |
} |
195 |
} |
| 186 |
} |
196 |
} |
| 187 |
|
197 |
|
|
Lines 287-319
DcfManagerTest::AddAckTimeoutReset (uint
|
Link Here
|
|---|
|
| 287 |
&DcfManager::NotifyAckTimeoutResetNow, m_dcfManager); |
297 |
&DcfManager::NotifyAckTimeoutResetNow, m_dcfManager); |
| 288 |
} |
298 |
} |
| 289 |
void |
299 |
void |
| 290 |
DcfManagerTest::AddAccessRequest (uint64_t at, uint64_t txTime, |
300 |
DcfManagerTest::AddAccessRequest (uint64_t at, uint64_t txTime, |
| 291 |
uint64_t expectedGrantTime, uint32_t from) |
301 |
uint64_t expectedGrantTime, uint32_t nBackoffSlots, |
|
|
302 |
uint32_t from) |
| 292 |
{ |
303 |
{ |
| 293 |
AddAccessRequestWithSuccessfullAck (at, txTime, expectedGrantTime, 0, from); |
304 |
AddAccessRequestWithSuccessfullAck (at, txTime, expectedGrantTime, 0, nBackoffSlots, from); |
| 294 |
} |
305 |
} |
| 295 |
void |
306 |
void |
| 296 |
DcfManagerTest::AddAccessRequestWithAckTimeout (uint64_t at, uint64_t txTime, |
307 |
DcfManagerTest::AddAccessRequestWithAckTimeout (uint64_t at, uint64_t txTime, uint64_t expectedGrantTime, |
| 297 |
uint64_t expectedGrantTime, uint32_t from) |
308 |
uint32_t nBackoffSlots, uint32_t from) |
| 298 |
{ |
309 |
{ |
| 299 |
Simulator::Schedule (MicroSeconds (at) - Now (), |
310 |
Simulator::Schedule (MicroSeconds (at) - Now (), |
| 300 |
&DcfManagerTest::DoAccessRequest, this, |
311 |
&DcfManagerTest::DoAccessRequest, this, |
| 301 |
txTime, expectedGrantTime, m_dcfStates[from]); |
312 |
txTime, expectedGrantTime, nBackoffSlots, m_dcfStates[from]); |
| 302 |
} |
313 |
} |
| 303 |
void |
314 |
void |
| 304 |
DcfManagerTest::AddAccessRequestWithSuccessfullAck (uint64_t at, uint64_t txTime, |
315 |
DcfManagerTest::AddAccessRequestWithSuccessfullAck (uint64_t at, uint64_t txTime, uint64_t expectedGrantTime, |
| 305 |
uint64_t expectedGrantTime, uint32_t ackDelay, uint32_t from) |
316 |
uint32_t ackDelay, uint32_t nBackoffSlots, uint32_t from) |
| 306 |
{ |
317 |
{ |
| 307 |
NS_ASSERT(ackDelay < m_ackTimeoutValue); |
318 |
NS_ASSERT(ackDelay < m_ackTimeoutValue); |
| 308 |
Simulator::Schedule (MicroSeconds (at) - Now (), |
319 |
Simulator::Schedule (MicroSeconds (at) - Now (), |
| 309 |
&DcfManagerTest::DoAccessRequest, this, |
320 |
&DcfManagerTest::DoAccessRequest, this, |
| 310 |
txTime, expectedGrantTime, m_dcfStates[from]); |
321 |
txTime, expectedGrantTime, nBackoffSlots, m_dcfStates[from]); |
| 311 |
AddAckTimeoutReset (expectedGrantTime + txTime + ackDelay); |
322 |
AddAckTimeoutReset (expectedGrantTime + txTime + ackDelay); |
| 312 |
} |
323 |
} |
| 313 |
void |
324 |
void |
| 314 |
DcfManagerTest::DoAccessRequest (uint64_t txTime, uint64_t expectedGrantTime, DcfStateTest *state) |
325 |
DcfManagerTest::DoAccessRequest (uint64_t txTime, uint64_t expectedGrantTime, uint32_t nBackoffSlots, |
|
|
326 |
DcfStateTest *state) |
| 315 |
{ |
327 |
{ |
| 316 |
state->QueueTx (txTime, expectedGrantTime); |
328 |
state->QueueTx (txTime, expectedGrantTime, nBackoffSlots); |
| 317 |
m_dcfManager->RequestAccess (state); |
329 |
m_dcfManager->RequestAccess (state); |
| 318 |
} |
330 |
} |
| 319 |
void |
331 |
void |
|
Lines 348-355
DcfManagerTest::DoRun (void)
|
Link Here
|
|---|
|
| 348 |
// |
360 |
// |
| 349 |
StartTest (1, 3, 10); |
361 |
StartTest (1, 3, 10); |
| 350 |
AddDcfState (1); |
362 |
AddDcfState (1); |
| 351 |
AddAccessRequest (1, 1, 4, 0); |
363 |
AddAccessRequest (1, 1, 4, 1, 0); |
| 352 |
AddAccessRequest (10, 2, 10, 0); |
364 |
AddAccessRequest (10, 2, 10, 0, 0); |
| 353 |
EndTest (); |
365 |
EndTest (); |
| 354 |
// Check that receiving inside SIFS shall be cancelled properly: |
366 |
// Check that receiving inside SIFS shall be cancelled properly: |
| 355 |
// 0 3 4 5 8 9 12 13 14 |
367 |
// 0 3 4 5 8 9 12 13 14 |
|
Lines 357-366
DcfManagerTest::DoRun (void)
|
Link Here
|
|---|
|
| 357 |
// |
369 |
// |
| 358 |
StartTest (1, 3, 10); |
370 |
StartTest (1, 3, 10); |
| 359 |
AddDcfState (1); |
371 |
AddDcfState (1); |
| 360 |
AddAccessRequest (1, 1, 4, 0); |
372 |
AddAccessRequest (1, 1, 4, 1, 0); |
| 361 |
AddRxInsideSifsEvt (6, 10); |
373 |
AddRxInsideSifsEvt (6, 10); |
| 362 |
AddTxEvt(8, 1); |
374 |
AddTxEvt(8, 1); |
| 363 |
AddAccessRequest (14, 2, 14, 0); |
375 |
AddAccessRequest (14, 2, 14, 0, 0); |
| 364 |
EndTest (); |
376 |
EndTest (); |
| 365 |
|
377 |
|
| 366 |
|
378 |
|
|
Lines 377-383
DcfManagerTest::DoRun (void)
|
Link Here
|
|---|
|
| 377 |
AddDcfState (1); |
389 |
AddDcfState (1); |
| 378 |
AddRxOkEvt (20, 40); |
390 |
AddRxOkEvt (20, 40); |
| 379 |
AddRxOkEvt (80, 20); |
391 |
AddRxOkEvt (80, 20); |
| 380 |
AddAccessRequest (30, 2, 118, 0); |
392 |
AddAccessRequest (30, 2, 118, 4, 0); |
| 381 |
ExpectCollision (30, 4, 0); // backoff: 4 slots |
393 |
ExpectCollision (30, 4, 0); // backoff: 4 slots |
| 382 |
EndTest (); |
394 |
EndTest (); |
| 383 |
|
395 |
|
|
Lines 390-398
DcfManagerTest::DoRun (void)
|
Link Here
|
|---|
|
| 390 |
StartTest (4, 6 , 10); |
402 |
StartTest (4, 6 , 10); |
| 391 |
AddDcfState (1); |
403 |
AddDcfState (1); |
| 392 |
AddRxOkEvt (20, 40); |
404 |
AddRxOkEvt (20, 40); |
| 393 |
AddAccessRequest (30, 2, 70, 0); |
405 |
AddAccessRequest (30, 2, 70, 0, 0); |
| 394 |
ExpectCollision (30, 0, 0); // backoff: 0 slots |
406 |
ExpectCollision (30, 0, 0); // backoff: 0 slots |
| 395 |
EndTest (); |
407 |
EndTest (); |
|
|
408 |
|
| 396 |
// Test shows when two frames are received without interval between |
409 |
// Test shows when two frames are received without interval between |
| 397 |
// them: |
410 |
// them: |
| 398 |
// 20 60 100 106 110 112 |
411 |
// 20 60 100 106 110 112 |
|
Lines 404-414
DcfManagerTest::DoRun (void)
|
Link Here
|
|---|
|
| 404 |
AddDcfState (1); |
417 |
AddDcfState (1); |
| 405 |
AddRxOkEvt (20, 40); |
418 |
AddRxOkEvt (20, 40); |
| 406 |
AddRxOkEvt (60, 40); |
419 |
AddRxOkEvt (60, 40); |
| 407 |
AddAccessRequest (30, 2, 110, 0); |
420 |
AddAccessRequest (30, 2, 110, 0, 0); |
| 408 |
ExpectCollision (30, 0, 0); // backoff: 0 slots |
421 |
ExpectCollision (30, 0, 0); // backoff: 0 slots |
| 409 |
EndTest (); |
422 |
EndTest (); |
| 410 |
|
423 |
|
| 411 |
|
424 |
|
|
|
425 |
// Test case where two packets are queued at DcaTxop, the first send starts |
| 426 |
// immediately and the second is also immediately indicated but has to wait |
| 427 |
// for its backoff. |
| 428 |
// |
| 429 |
// 20 60 66 70 80 |
| 430 |
// | tx | sifs | aifs | tx | |
| 431 |
// |20: request access for both packets |
| 432 |
StartTest (4, 6 , 10); |
| 433 |
AddDcfState (1); |
| 434 |
AddAccessRequest (20, 40, 20, 0, 0); |
| 435 |
AddAccessRequest (20, 10, 70, 0, 0); |
| 436 |
EndTest (); |
| 437 |
|
| 438 |
// Test case where two packets are queued at DcaTxop, the first send starts |
| 439 |
// immediately and the second is also immediately indicated but has to wait |
| 440 |
// for its backoff. |
| 441 |
// |
| 442 |
// 20 60 66 70 78 88 |
| 443 |
// | tx | sifs | aifs | backoff | tx | |
| 444 |
// |20: request access for both packets |
| 445 |
StartTest (4, 6 , 10); |
| 446 |
AddDcfState (1); |
| 447 |
AddAccessRequest (20, 40, 20, 2, 0); |
| 448 |
AddAccessRequest (20, 10, 78, 0, 0); |
| 449 |
EndTest (); |
| 450 |
|
| 412 |
// The test below is subject to some discussion because I am |
451 |
// The test below is subject to some discussion because I am |
| 413 |
// not sure I understand the intent of the spec here. |
452 |
// not sure I understand the intent of the spec here. |
| 414 |
// i.e., what happens if you make a request to get access |
453 |
// i.e., what happens if you make a request to get access |
|
Lines 425-431
DcfManagerTest::DoRun (void)
|
Link Here
|
|---|
|
| 425 |
StartTest (4, 6 , 10); |
464 |
StartTest (4, 6 , 10); |
| 426 |
AddDcfState (1); |
465 |
AddDcfState (1); |
| 427 |
AddRxOkEvt (20, 40); |
466 |
AddRxOkEvt (20, 40); |
| 428 |
AddAccessRequest (62, 2, 70, 0); |
467 |
AddAccessRequest (62, 2, 70, 0, 0); |
| 429 |
EndTest (); |
468 |
EndTest (); |
| 430 |
|
469 |
|
| 431 |
|
470 |
|
|
Lines 438-444
DcfManagerTest::DoRun (void)
|
Link Here
|
|---|
|
| 438 |
StartTest (4, 6, 10); |
477 |
StartTest (4, 6, 10); |
| 439 |
AddDcfState (1); |
478 |
AddDcfState (1); |
| 440 |
AddRxErrorEvt (20, 40); |
479 |
AddRxErrorEvt (20, 40); |
| 441 |
AddAccessRequest (30, 2, 96, 0); |
480 |
AddAccessRequest (30, 2, 96, 4, 0); |
| 442 |
ExpectCollision (30, 4, 0); // backoff: 4 slots |
481 |
ExpectCollision (30, 4, 0); // backoff: 4 slots |
| 443 |
EndTest (); |
482 |
EndTest (); |
| 444 |
|
483 |
|
|
Lines 451-457
DcfManagerTest::DoRun (void)
|
Link Here
|
|---|
|
| 451 |
StartTest (4, 6, 10); |
490 |
StartTest (4, 6, 10); |
| 452 |
AddDcfState (1); |
491 |
AddDcfState (1); |
| 453 |
AddRxErrorEvt (20, 40); |
492 |
AddRxErrorEvt (20, 40); |
| 454 |
AddAccessRequest (30, 2, 101, 0); |
493 |
AddAccessRequest (30, 2, 101, 4, 0); |
| 455 |
ExpectCollision (30, 4, 0); // backoff: 4 slots |
494 |
ExpectCollision (30, 4, 0); // backoff: 4 slots |
| 456 |
AddRxOkEvt (69, 6); |
495 |
AddRxOkEvt (69, 6); |
| 457 |
EndTest (); |
496 |
EndTest (); |
|
Lines 468-477
DcfManagerTest::DoRun (void)
|
Link Here
|
|---|
|
| 468 |
AddDcfState (1); // high priority DCF |
507 |
AddDcfState (1); // high priority DCF |
| 469 |
AddDcfState (3); // low priority DCF |
508 |
AddDcfState (3); // low priority DCF |
| 470 |
AddRxOkEvt (20, 40); |
509 |
AddRxOkEvt (20, 40); |
| 471 |
AddAccessRequest (30, 10, 78, 0); |
510 |
AddAccessRequest (30, 10, 78, 2, 0); |
| 472 |
ExpectCollision (30, 2, 0); // backoff: 2 slot |
511 |
ExpectCollision (30, 2, 0); // backoff: 2 slot |
| 473 |
|
512 |
|
| 474 |
AddAccessRequest (40, 2, 110, 1); |
513 |
AddAccessRequest (40, 2, 110, 0, 1); |
| 475 |
ExpectCollision (40, 0, 1); // backoff: 0 slot |
514 |
ExpectCollision (40, 0, 1); // backoff: 0 slot |
| 476 |
ExpectInternalCollision (78, 1, 1); // backoff: 1 slot |
515 |
ExpectInternalCollision (78, 1, 1); // backoff: 1 slot |
| 477 |
EndTest (); |
516 |
EndTest (); |
|
Lines 486-493
DcfManagerTest::DoRun (void)
|
Link Here
|
|---|
|
| 486 |
StartTest (4, 6, 10); |
525 |
StartTest (4, 6, 10); |
| 487 |
AddDcfState (2); // high priority DCF |
526 |
AddDcfState (2); // high priority DCF |
| 488 |
AddDcfState (0); // low priority DCF |
527 |
AddDcfState (0); // low priority DCF |
| 489 |
AddAccessRequestWithAckTimeout (20, 20, 20, 0); |
528 |
AddAccessRequestWithAckTimeout (20, 20, 20, 0, 0); |
| 490 |
AddAccessRequest (50, 10, 66, 1); |
529 |
AddAccessRequest (50, 10, 66, 0, 1); |
| 491 |
EndTest (); |
530 |
EndTest (); |
| 492 |
|
531 |
|
| 493 |
// Test of AckTimeout handling: |
532 |
// Test of AckTimeout handling: |
|
Lines 502-509
DcfManagerTest::DoRun (void)
|
Link Here
|
|---|
|
| 502 |
StartTest (4, 6, 10); |
541 |
StartTest (4, 6, 10); |
| 503 |
AddDcfState (2); // high priority DCF |
542 |
AddDcfState (2); // high priority DCF |
| 504 |
AddDcfState (0); // low priority DCF |
543 |
AddDcfState (0); // low priority DCF |
| 505 |
AddAccessRequestWithSuccessfullAck (20, 20, 20, 2, 0); |
544 |
AddAccessRequestWithSuccessfullAck (20, 20, 20, 2, 0, 0); |
| 506 |
AddAccessRequest (41, 10, 48, 1); |
545 |
AddAccessRequest (41, 10, 48, 0, 1); |
| 507 |
EndTest (); |
546 |
EndTest (); |
| 508 |
|
547 |
|
| 509 |
//Repeat the same but with one queue: |
548 |
//Repeat the same but with one queue: |
|
Lines 512-519
DcfManagerTest::DoRun (void)
|
Link Here
|
|---|
|
| 512 |
// ^ request access |
551 |
// ^ request access |
| 513 |
StartTest (4, 6, 10); |
552 |
StartTest (4, 6, 10); |
| 514 |
AddDcfState (2); |
553 |
AddDcfState (2); |
| 515 |
AddAccessRequestWithSuccessfullAck (20, 20, 20, 2, 0); |
554 |
AddAccessRequestWithSuccessfullAck (20, 20, 20, 2, 0, 0); |
| 516 |
AddAccessRequest (41, 10, 56, 0); |
555 |
AddAccessRequest (41, 10, 56, 0, 0); |
| 517 |
EndTest (); |
556 |
EndTest (); |
| 518 |
|
557 |
|
| 519 |
//Repeat the same when ack was delayed: |
558 |
//Repeat the same when ack was delayed: |
|
Lines 523-531
DcfManagerTest::DoRun (void)
|
Link Here
|
|---|
|
| 523 |
// ^ request access |
562 |
// ^ request access |
| 524 |
StartTest (4, 6, 10); |
563 |
StartTest (4, 6, 10); |
| 525 |
AddDcfState (2); |
564 |
AddDcfState (2); |
| 526 |
AddAccessRequestWithSuccessfullAck (20, 20, 20, 2, 0); |
565 |
AddAccessRequestWithSuccessfullAck (20, 20, 20, 2, 2, 0); |
| 527 |
AddAccessRequest (39, 10, 64, 0); |
566 |
AddAccessRequest (39, 10, 64, 0, 0); |
| 528 |
ExpectCollision (39, 2, 0); // backoff: 2 slot |
567 |
// this situation is not supposed to fire an internal or external collison. |
|
|
568 |
// ExpectCollision (39, 2, 0); // backoff: 2 slot |
| 529 |
EndTest (); |
569 |
EndTest (); |
| 530 |
|
570 |
|
| 531 |
// |
571 |
// |
|
Lines 539-545
DcfManagerTest::DoRun (void)
|
Link Here
|
|---|
|
| 539 |
AddNavStart (60, 15); |
579 |
AddNavStart (60, 15); |
| 540 |
AddRxOkEvt (66, 5); |
580 |
AddRxOkEvt (66, 5); |
| 541 |
AddNavStart (71, 0); |
581 |
AddNavStart (71, 0); |
| 542 |
AddAccessRequest (30, 10, 93, 0); |
582 |
AddAccessRequest (30, 10, 93, 0, 0); |
| 543 |
ExpectCollision (30, 2, 0); // backoff: 2 slot |
583 |
ExpectCollision (30, 2, 0); // backoff: 2 slot |
| 544 |
EndTest (); |
584 |
EndTest (); |
| 545 |
|
585 |
|
|
Lines 554-560
DcfManagerTest::DoRun (void)
|
Link Here
|
|---|
|
| 554 |
AddNavStart (60, 15); |
594 |
AddNavStart (60, 15); |
| 555 |
AddRxOkEvt (66, 5); |
595 |
AddRxOkEvt (66, 5); |
| 556 |
AddNavReset (71, 2); |
596 |
AddNavReset (71, 2); |
| 557 |
AddAccessRequest (30, 10, 91, 0); |
597 |
AddAccessRequest (30, 10, 91, 0, 0); |
| 558 |
ExpectCollision (30, 2, 0); // backoff: 2 slot |
598 |
ExpectCollision (30, 2, 0); // backoff: 2 slot |
| 559 |
EndTest (); |
599 |
EndTest (); |
| 560 |
|
600 |
|
|
Lines 562-568
DcfManagerTest::DoRun (void)
|
Link Here
|
|---|
|
| 562 |
StartTest (4, 6, 10); |
602 |
StartTest (4, 6, 10); |
| 563 |
AddDcfState (2); |
603 |
AddDcfState (2); |
| 564 |
AddRxOkEvt (20, 40); |
604 |
AddRxOkEvt (20, 40); |
| 565 |
AddAccessRequest (80, 10, 80, 0); |
605 |
AddAccessRequest (80, 10, 80, 0, 0); |
| 566 |
EndTest (); |
606 |
EndTest (); |
| 567 |
|
607 |
|
| 568 |
|
608 |
|
|
Lines 570-576
DcfManagerTest::DoRun (void)
|
Link Here
|
|---|
|
| 570 |
AddDcfState (2); |
610 |
AddDcfState (2); |
| 571 |
AddRxOkEvt (20, 40); |
611 |
AddRxOkEvt (20, 40); |
| 572 |
AddRxOkEvt (78, 8); |
612 |
AddRxOkEvt (78, 8); |
| 573 |
AddAccessRequest (30, 50, 108, 0); |
613 |
AddAccessRequest (30, 50, 108, 0, 0); |
| 574 |
ExpectCollision (30, 3, 0); // backoff: 3 slots |
614 |
ExpectCollision (30, 3, 0); // backoff: 3 slots |
| 575 |
EndTest (); |
615 |
EndTest (); |
| 576 |
|
616 |
|
|
Lines 584-590
DcfManagerTest::DoRun (void)
|
Link Here
|
|---|
|
| 584 |
StartTest (1, 3, 10); |
624 |
StartTest (1, 3, 10); |
| 585 |
AddDcfState (1); |
625 |
AddDcfState (1); |
| 586 |
AddSwitchingEvt(0,20); |
626 |
AddSwitchingEvt(0,20); |
| 587 |
AddAccessRequest (21, 1, 24, 0); |
627 |
AddAccessRequest (21, 1, 24, 0, 0); |
| 588 |
EndTest (); |
628 |
EndTest (); |
| 589 |
|
629 |
|
| 590 |
// 20 40 50 53 54 55 |
630 |
// 20 40 50 53 54 55 |
|
Lines 596-602
DcfManagerTest::DoRun (void)
|
Link Here
|
|---|
|
| 596 |
AddDcfState (1); |
636 |
AddDcfState (1); |
| 597 |
AddSwitchingEvt(20,20); |
637 |
AddSwitchingEvt(20,20); |
| 598 |
AddCcaBusyEvt(30,20); |
638 |
AddCcaBusyEvt(30,20); |
| 599 |
AddAccessRequest (45, 1, 54, 0); |
639 |
AddAccessRequest (45, 1, 54, 0, 0); |
| 600 |
EndTest (); |
640 |
EndTest (); |
| 601 |
|
641 |
|
| 602 |
// 20 30 50 53 54 55 |
642 |
// 20 30 50 53 54 55 |
|
Lines 608-614
DcfManagerTest::DoRun (void)
|
Link Here
|
|---|
|
| 608 |
AddDcfState (1); |
648 |
AddDcfState (1); |
| 609 |
AddRxStartEvt (20,40); |
649 |
AddRxStartEvt (20,40); |
| 610 |
AddSwitchingEvt(30,20); |
650 |
AddSwitchingEvt(30,20); |
| 611 |
AddAccessRequest (51, 1, 54, 0); |
651 |
AddAccessRequest (51, 1, 54, 0, 0); |
| 612 |
EndTest (); |
652 |
EndTest (); |
| 613 |
|
653 |
|
| 614 |
// 20 30 50 53 54 55 |
654 |
// 20 30 50 53 54 55 |
|
Lines 620-626
DcfManagerTest::DoRun (void)
|
Link Here
|
|---|
|
| 620 |
AddDcfState (1); |
660 |
AddDcfState (1); |
| 621 |
AddCcaBusyEvt (20,40); |
661 |
AddCcaBusyEvt (20,40); |
| 622 |
AddSwitchingEvt(30,20); |
662 |
AddSwitchingEvt(30,20); |
| 623 |
AddAccessRequest (51, 1, 54, 0); |
663 |
AddAccessRequest (51, 1, 54, 0, 0); |
| 624 |
EndTest (); |
664 |
EndTest (); |
| 625 |
|
665 |
|
| 626 |
// 20 30 50 53 54 55 |
666 |
// 20 30 50 53 54 55 |
|
Lines 632-638
DcfManagerTest::DoRun (void)
|
Link Here
|
|---|
|
| 632 |
AddDcfState (1); |
672 |
AddDcfState (1); |
| 633 |
AddNavStart (20,40); |
673 |
AddNavStart (20,40); |
| 634 |
AddSwitchingEvt(30,20); |
674 |
AddSwitchingEvt(30,20); |
| 635 |
AddAccessRequest (51, 1, 54, 0); |
675 |
AddAccessRequest (51, 1, 54, 0, 0); |
| 636 |
EndTest (); |
676 |
EndTest (); |
| 637 |
|
677 |
|
| 638 |
// 20 40 50 55 58 59 60 |
678 |
// 20 40 50 55 58 59 60 |
|
Lines 642-651
DcfManagerTest::DoRun (void)
|
Link Here
|
|---|
|
| 642 |
// |
682 |
// |
| 643 |
StartTest (1, 3, 10); |
683 |
StartTest (1, 3, 10); |
| 644 |
AddDcfState (1); |
684 |
AddDcfState (1); |
| 645 |
AddAccessRequestWithAckTimeout (20, 20, 20, 0); |
685 |
AddAccessRequestWithAckTimeout (20, 20, 20, 0, 0); |
| 646 |
AddAccessRequest (45, 1, 50, 0); |
686 |
AddAccessRequest (45, 1, 50, 0, 0); |
| 647 |
AddSwitchingEvt(50,5); |
687 |
AddSwitchingEvt(50,5); |
| 648 |
AddAccessRequest (56, 1, 59, 0); |
688 |
AddAccessRequest (56, 1, 59, 0, 0); |
| 649 |
EndTest (); |
689 |
EndTest (); |
| 650 |
|
690 |
|
| 651 |
// 20 60 66 70 74 78 80 100 106 110 112 |
691 |
// 20 60 66 70 74 78 80 100 106 110 112 |
|
Lines 656-667
DcfManagerTest::DoRun (void)
|
Link Here
|
|---|
|
| 656 |
StartTest (4, 6, 10); |
696 |
StartTest (4, 6, 10); |
| 657 |
AddDcfState (1); |
697 |
AddDcfState (1); |
| 658 |
AddRxOkEvt(20,40); |
698 |
AddRxOkEvt(20,40); |
| 659 |
AddAccessRequest (30, 2, 80, 0); |
699 |
AddAccessRequest (30, 2, 80, 4, 0); |
| 660 |
ExpectCollision(30, 4, 0); // backoff: 4 slots |
700 |
ExpectCollision(30, 4, 0); // backoff: 4 slots |
| 661 |
AddSwitchingEvt(80,20); |
701 |
AddSwitchingEvt(80,20); |
| 662 |
AddAccessRequest (101, 2, 110, 0); |
702 |
AddAccessRequest (101, 2, 110, 0, 0); |
| 663 |
EndTest (); |
703 |
EndTest (); |
| 664 |
|
704 |
|
| 665 |
return GetErrorStatus (); |
705 |
return GetErrorStatus (); |
| 666 |
} |
706 |
} |
| 667 |
|
707 |
|