|
|
| 24 |
#include "ns3/log.h" |
24 |
#include "ns3/log.h" |
| 25 |
#include "ns3/node.h" |
25 |
#include "ns3/node.h" |
| 26 |
#include "ns3/uinteger.h" |
26 |
#include "ns3/uinteger.h" |
|
|
27 |
#include "ns3/trace-source-accessor.h" |
| 27 |
|
28 |
|
| 28 |
#include "nqsta-wifi-mac.h" |
29 |
#include "nqsta-wifi-mac.h" |
| 29 |
#include "wifi-mac-header.h" |
30 |
#include "wifi-mac-header.h" |
|
|
| 83 |
BooleanValue (false), |
84 |
BooleanValue (false), |
| 84 |
MakeBooleanAccessor (&NqstaWifiMac::SetActiveProbing), |
85 |
MakeBooleanAccessor (&NqstaWifiMac::SetActiveProbing), |
| 85 |
MakeBooleanChecker ()) |
86 |
MakeBooleanChecker ()) |
|
|
87 |
.AddTraceSource ("Assoc", "Associated with an access point.", |
| 88 |
MakeTraceSourceAccessor (&NqstaWifiMac::m_assocLogger)) |
| 89 |
.AddTraceSource ("DeAssoc", "Association with an access point lost.", |
| 90 |
MakeTraceSourceAccessor (&NqstaWifiMac::m_deAssocLogger)) |
| 86 |
; |
91 |
; |
| 87 |
return tid; |
92 |
return tid; |
| 88 |
} |
93 |
} |
|
|
| 374 |
* We try to initiate a probe request now. |
379 |
* We try to initiate a probe request now. |
| 375 |
*/ |
380 |
*/ |
| 376 |
m_linkDown (); |
381 |
m_linkDown (); |
| 377 |
m_state = WAIT_PROBE_RESP; |
382 |
SetState(WAIT_PROBE_RESP); |
| 378 |
SendProbeRequest (); |
383 |
SendProbeRequest (); |
| 379 |
break; |
384 |
break; |
| 380 |
case WAIT_ASSOC_RESP: |
385 |
case WAIT_ASSOC_RESP: |
|
|
| 397 |
NqstaWifiMac::AssocRequestTimeout (void) |
402 |
NqstaWifiMac::AssocRequestTimeout (void) |
| 398 |
{ |
403 |
{ |
| 399 |
NS_LOG_FUNCTION (this); |
404 |
NS_LOG_FUNCTION (this); |
| 400 |
m_state = WAIT_ASSOC_RESP; |
405 |
SetState(WAIT_ASSOC_RESP); |
| 401 |
SendAssociationRequest (); |
406 |
SendAssociationRequest (); |
| 402 |
} |
407 |
} |
| 403 |
void |
408 |
void |
| 404 |
NqstaWifiMac::ProbeRequestTimeout (void) |
409 |
NqstaWifiMac::ProbeRequestTimeout (void) |
| 405 |
{ |
410 |
{ |
| 406 |
NS_LOG_FUNCTION (this); |
411 |
NS_LOG_FUNCTION (this); |
| 407 |
m_state = WAIT_PROBE_RESP; |
412 |
SetState(WAIT_PROBE_RESP); |
| 408 |
SendProbeRequest (); |
413 |
SendProbeRequest (); |
| 409 |
} |
414 |
} |
| 410 |
void |
415 |
void |
|
|
| 418 |
return; |
423 |
return; |
| 419 |
} |
424 |
} |
| 420 |
NS_LOG_DEBUG ("beacon missed"); |
425 |
NS_LOG_DEBUG ("beacon missed"); |
| 421 |
m_state = BEACON_MISSED; |
426 |
SetState(BEACON_MISSED); |
| 422 |
TryToEnsureAssociated (); |
427 |
TryToEnsureAssociated (); |
| 423 |
} |
428 |
} |
| 424 |
void |
429 |
void |
|
|
| 532 |
} |
537 |
} |
| 533 |
if (goodBeacon && m_state == BEACON_MISSED) |
538 |
if (goodBeacon && m_state == BEACON_MISSED) |
| 534 |
{ |
539 |
{ |
| 535 |
m_state = WAIT_ASSOC_RESP; |
540 |
SetState(WAIT_ASSOC_RESP); |
| 536 |
SendAssociationRequest (); |
541 |
SendAssociationRequest (); |
| 537 |
} |
542 |
} |
| 538 |
} |
543 |
} |
|
|
| 554 |
{ |
559 |
{ |
| 555 |
m_probeRequestEvent.Cancel (); |
560 |
m_probeRequestEvent.Cancel (); |
| 556 |
} |
561 |
} |
| 557 |
m_state = WAIT_ASSOC_RESP; |
562 |
SetState(WAIT_ASSOC_RESP); |
| 558 |
SendAssociationRequest (); |
563 |
SendAssociationRequest (); |
| 559 |
} |
564 |
} |
| 560 |
} |
565 |
} |
|
|
| 570 |
} |
575 |
} |
| 571 |
if (assocResp.GetStatusCode ().IsSuccess ()) |
576 |
if (assocResp.GetStatusCode ().IsSuccess ()) |
| 572 |
{ |
577 |
{ |
| 573 |
m_state = ASSOCIATED; |
578 |
SetState(ASSOCIATED); |
| 574 |
NS_LOG_DEBUG ("assoc completed"); |
579 |
NS_LOG_DEBUG ("assoc completed"); |
| 575 |
SupportedRates rates = assocResp.GetSupportedRates (); |
580 |
SupportedRates rates = assocResp.GetSupportedRates (); |
| 576 |
WifiRemoteStation *ap = m_stationManager->Lookup (hdr->GetAddr2 ()); |
581 |
WifiRemoteStation *ap = m_stationManager->Lookup (hdr->GetAddr2 ()); |
|
|
| 594 |
else |
599 |
else |
| 595 |
{ |
600 |
{ |
| 596 |
NS_LOG_DEBUG ("assoc refused"); |
601 |
NS_LOG_DEBUG ("assoc refused"); |
| 597 |
m_state = REFUSED; |
602 |
SetState(REFUSED); |
| 598 |
} |
603 |
} |
| 599 |
} |
604 |
} |
| 600 |
} |
605 |
} |
|
|
| 612 |
return rates; |
617 |
return rates; |
| 613 |
} |
618 |
} |
| 614 |
|
619 |
|
|
|
620 |
void |
| 621 |
NqstaWifiMac::SetState(MacState value) |
| 622 |
{ |
| 623 |
if(value==ASSOCIATED && m_state!=ASSOCIATED) m_assocLogger(GetBssid()); |
| 624 |
else if(value!=ASSOCIATED && m_state==ASSOCIATED) m_deAssocLogger(GetBssid()); |
| 625 |
m_state=value; |
| 626 |
} |
| 627 |
|
| 615 |
} // namespace ns3 |
628 |
} // namespace ns3 |