INET Framework for OMNeT++/OMNEST
inet::ieee80211::Ieee80211AgentSta Class Reference

Used in 802.11 infrastructure mode: in a station (STA), this module controls channel scanning, association and handovers, by sending commands (e.g. More...

#include <Ieee80211AgentSta.h>

Inheritance diagram for inet::ieee80211::Ieee80211AgentSta:

Public Member Functions

 Ieee80211AgentSta ()
 

Protected Member Functions

virtual int numInitStages () const override
 
virtual void initialize (int) override
 
virtual void handleMessage (cMessage *msg) override
 Overridden cSimpleModule method. More...
 
virtual void handleTimer (cMessage *msg)
 Handle timers. More...
 
virtual void handleResponse (cMessage *msg)
 Handle responses from mgmgt. More...
 
virtual void receiveSignal (cComponent *source, simsignal_t signalID, cObject *obj, cObject *details) override
 Redefined from cListener; called by signal handler. More...
 
virtual void sendRequest (Ieee80211PrimRequest *req)
 
virtual void sendScanRequest ()
 Sending of Request primitives. More...
 
virtual void sendAuthenticateRequest (const MacAddress &address)
 
virtual void sendDeauthenticateRequest (const MacAddress &address, Ieee80211ReasonCode reasonCode)
 
virtual void sendAssociateRequest (const MacAddress &address)
 
virtual void sendReassociateRequest (const MacAddress &address)
 
virtual void sendDisassociateRequest (const MacAddress &address, Ieee80211ReasonCode reasonCode)
 
virtual void processScanConfirm (Ieee80211Prim_ScanConfirm *resp)
 Processing Confirm primitives. More...
 
virtual void processAuthenticateConfirm (Ieee80211Prim_AuthenticateConfirm *resp)
 
virtual void processAssociateConfirm (Ieee80211Prim_AssociateConfirm *resp)
 
virtual void processReassociateConfirm (Ieee80211Prim_ReassociateConfirm *resp)
 
virtual int chooseBSS (Ieee80211Prim_ScanConfirm *resp)
 Choose one AP from the list to associate with. More...
 
virtual void dumpAPList (Ieee80211Prim_ScanConfirm *resp)
 

Protected Attributes

NetworkInterfacemyIface = nullptr
 
MacAddress prevAP
 
bool activeScan = false
 
std::vector< int > channelsToScan
 
simtime_t probeDelay
 
simtime_t minChannelTime
 
simtime_t maxChannelTime
 
simtime_t authenticationTimeout
 
simtime_t associationTimeout
 
std::string defaultSsid
 

Static Protected Attributes

static simsignal_t sentRequestSignal = registerSignal("sentRequest")
 
static simsignal_t acceptConfirmSignal = registerSignal("acceptConfirm")
 
static simsignal_t dropConfirmSignal = registerSignal("dropConfirm")
 

Detailed Description

Used in 802.11 infrastructure mode: in a station (STA), this module controls channel scanning, association and handovers, by sending commands (e.g.

Ieee80211Prim_ScanRequest) to the management module (Ieee80211MgmtSta).

See corresponding NED file for a detailed description.

Constructor & Destructor Documentation

◆ Ieee80211AgentSta()

inet::ieee80211::Ieee80211AgentSta::Ieee80211AgentSta ( )
inline
49 {}

Member Function Documentation

◆ chooseBSS()

int inet::ieee80211::Ieee80211AgentSta::chooseBSS ( Ieee80211Prim_ScanConfirm resp)
protectedvirtual

Choose one AP from the list to associate with.

253 {
254  if (resp->getBssListArraySize() == 0)
255  return -1;
256 
257  // here, just choose the one with the greatest receive power
258  // TODO and which supports a good data rate we support
259  int bestIndex = 0;
260  for (size_t i = 0; i < resp->getBssListArraySize(); i++)
261  if (resp->getBssList(i).getRxPower() > resp->getBssList(bestIndex).getRxPower())
262  bestIndex = i;
263 
264  return bestIndex;
265 }

Referenced by processScanConfirm().

◆ dumpAPList()

void inet::ieee80211::Ieee80211AgentSta::dumpAPList ( Ieee80211Prim_ScanConfirm resp)
protectedvirtual
237 {
238  EV << "Received AP list:\n";
239  for (size_t i = 0; i < resp->getBssListArraySize(); i++) {
240  const Ieee80211Prim_BssDescription& bssDesc = resp->getBssList(i);
241  EV << " " << i << ". "
242  << " address=" << bssDesc.getBSSID()
243  << " channel=" << bssDesc.getChannelNumber()
244  << " SSID=" << bssDesc.getSSID()
245  << " beaconIntvl=" << bssDesc.getBeaconInterval()
246  << " rxPower=" << bssDesc.getRxPower()
247  << endl;
248  // later: supportedRates
249  }
250 }

Referenced by processScanConfirm().

◆ handleMessage()

void inet::ieee80211::Ieee80211AgentSta::handleMessage ( cMessage *  msg)
overrideprotectedvirtual

Overridden cSimpleModule method.

67 {
68  if (msg->isSelfMessage())
69  handleTimer(msg);
70  else
71  handleResponse(msg);
72 }

◆ handleResponse()

void inet::ieee80211::Ieee80211AgentSta::handleResponse ( cMessage *  msg)
protectedvirtual

Handle responses from mgmgt.

87 {
88  cObject *ctrl = msg->removeControlInfo();
89  delete msg;
90 
91  EV << "Processing confirmation from mgmt: " << ctrl->getClassName() << "\n";
92 
93  if (auto ptr = dynamic_cast<Ieee80211Prim_ScanConfirm *>(ctrl))
94  processScanConfirm(ptr);
95  else if (auto ptr = dynamic_cast<Ieee80211Prim_AuthenticateConfirm *>(ctrl))
97  else if (auto ptr = dynamic_cast<Ieee80211Prim_AssociateConfirm *>(ctrl))
99  else if (auto ptr = dynamic_cast<Ieee80211Prim_ReassociateConfirm *>(ctrl))
101  else if (ctrl)
102  throw cRuntimeError("handleResponse(): unrecognized control info class `%s'", ctrl->getClassName());
103  else
104  throw cRuntimeError("handleResponse(): control info is nullptr");
105  delete ctrl;
106 }

Referenced by handleMessage().

◆ handleTimer()

void inet::ieee80211::Ieee80211AgentSta::handleTimer ( cMessage *  msg)
protectedvirtual

Handle timers.

75 {
76  if (msg->getKind() == MK_STARTUP) {
77  EV << "Starting up\n";
79  delete msg;
80  }
81  else {
82  throw cRuntimeError("internal error: unrecognized timer '%s'", msg->getName());
83  }
84 }

Referenced by handleMessage().

◆ initialize()

void inet::ieee80211::Ieee80211AgentSta::initialize ( int  stage)
overrideprotectedvirtual
28 {
29  cSimpleModule::initialize(stage);
30 
31  if (stage == INITSTAGE_LOCAL) {
32  // read parameters
33  activeScan = par("activeScan");
34  probeDelay = par("probeDelay");
35  minChannelTime = par("minChannelTime");
36  maxChannelTime = par("maxChannelTime");
37  authenticationTimeout = par("authenticationTimeout");
38  associationTimeout = par("associationTimeout");
39  cStringTokenizer tokenizer(par("channelsToScan"));
40  const char *token;
41  while ((token = tokenizer.nextToken()) != nullptr)
42  channelsToScan.push_back(atoi(token));
43 
44  cModule *host = getContainingNode(this);
45  host->subscribe(l2BeaconLostSignal, this);
46 
47  // JcM add: get the default ssid, if there is one.
48  defaultSsid = par("defaultSsid").stdstringValue();
49 
50  // start up: send scan request
51  simtime_t startingTime = par("startingTime");
52  if (startingTime < SIMTIME_ZERO)
53  startingTime = uniform(SIMTIME_ZERO, maxChannelTime);
54  scheduleAfter(startingTime, new cMessage("startUp", MK_STARTUP));
55 
56  myIface = nullptr;
57  }
58  else if (stage == INITSTAGE_LINK_LAYER) {
59  IInterfaceTable *ift = findModuleFromPar<IInterfaceTable>(par("interfaceTableModule"), this);
60  if (ift) {
62  }
63  }
64 }

◆ numInitStages()

virtual int inet::ieee80211::Ieee80211AgentSta::numInitStages ( ) const
inlineoverrideprotectedvirtual
52 { return NUM_INIT_STAGES; }

◆ processAssociateConfirm()

void inet::ieee80211::Ieee80211AgentSta::processAssociateConfirm ( Ieee80211Prim_AssociateConfirm resp)
protectedvirtual
285 {
286  if (resp->getResultCode() != PRC_SUCCESS) {
287  EV << "Association error\n";
289 
290  // try scanning again, maybe we'll have better luck next time, possibly with a different AP
291  EV << "Going back to scanning\n";
292  sendScanRequest();
293  }
294  else {
295  EV << "Association successful\n";
297  // we are happy!
298  getContainingNode(this)->bubble("Associated with AP");
299  if (prevAP.isUnspecified() || prevAP != resp->getAddress()) {
300  emit(l2AssociatedNewApSignal, myIface); // TODO detail: NetworkInterface?
301  prevAP = resp->getAddress();
302  }
303  else
305  }
306 }

Referenced by handleResponse().

◆ processAuthenticateConfirm()

void inet::ieee80211::Ieee80211AgentSta::processAuthenticateConfirm ( Ieee80211Prim_AuthenticateConfirm resp)
protectedvirtual
268 {
269  if (resp->getResultCode() != PRC_SUCCESS) {
270  EV << "Authentication error\n";
272 
273  // try scanning again, maybe we'll have better luck next time, possibly with a different AP
274  EV << "Going back to scanning\n";
275  sendScanRequest();
276  }
277  else {
278  EV << "Authentication successful, let's try to associate\n";
280  sendAssociateRequest(resp->getAddress());
281  }
282 }

Referenced by handleResponse().

◆ processReassociateConfirm()

void inet::ieee80211::Ieee80211AgentSta::processReassociateConfirm ( Ieee80211Prim_ReassociateConfirm resp)
protectedvirtual
309 {
310  // treat the same way as AssociateConfirm
311  if (resp->getResultCode() != PRC_SUCCESS) {
312  EV << "Reassociation error\n";
314  EV << "Going back to scanning\n";
315  sendScanRequest();
316  }
317  else {
318  EV << "Reassociation successful\n";
319  emit(l2AssociatedOldApSignal, myIface); // TODO detail: NetworkInterface?
321  // we are happy!
322  }
323 }

Referenced by handleResponse().

◆ processScanConfirm()

void inet::ieee80211::Ieee80211AgentSta::processScanConfirm ( Ieee80211Prim_ScanConfirm resp)
protectedvirtual

Processing Confirm primitives.

200 {
201  // choose best AP
202 
203  int bssIndex = -1;
204  if (this->defaultSsid == "") {
205  // no default ssid, so pick the best one
206  bssIndex = chooseBSS(resp);
207  }
208  else {
209  // search if the defaultSsid is in the list, otherwise
210  // keep searching.
211  for (size_t i = 0; i < resp->getBssListArraySize(); i++) {
212  std::string resp_ssid = resp->getBssList(i).getSSID();
213  if (resp_ssid == this->defaultSsid) {
214  EV << "found default SSID " << resp_ssid << endl;
215  bssIndex = i;
216  break;
217  }
218  }
219  }
220 
221  if (bssIndex == -1) {
222  EV << "No (suitable) AP found, continue scanning\n";
224  sendScanRequest();
225  return;
226  }
227 
228  dumpAPList(resp);
230 
231  const Ieee80211Prim_BssDescription& bssDesc = resp->getBssList(bssIndex);
232  EV << "Chosen AP address=" << bssDesc.getBSSID() << " from list, starting authentication\n";
233  sendAuthenticateRequest(bssDesc.getBSSID());
234 }

Referenced by handleResponse().

◆ receiveSignal()

void inet::ieee80211::Ieee80211AgentSta::receiveSignal ( cComponent *  source,
simsignal_t  signalID,
cObject *  obj,
cObject *  details 
)
overrideprotectedvirtual

Redefined from cListener; called by signal handler.

109 {
110  Enter_Method("%s", cComponent::getSignalName(signalID));
111 
112  printSignalBanner(signalID, obj, details);
113 
114  if (signalID == l2BeaconLostSignal) {
115  // TODO should check details if it's about this NIC
116  EV << "beacon lost, starting scanning again\n";
117  getContainingNode(this)->bubble("Beacon lost!");
118 // sendDisassociateRequest();
119  sendScanRequest();
121  }
122 }

◆ sendAssociateRequest()

void inet::ieee80211::Ieee80211AgentSta::sendAssociateRequest ( const MacAddress address)
protectedvirtual
170 {
171  EV << "Sending AssociateRequest primitive to mgmt\n";
172  Ieee80211Prim_AssociateRequest *req = new Ieee80211Prim_AssociateRequest();
173  req->setAddress(address);
174  req->setTimeout(associationTimeout);
176  sendRequest(req);
177 }

Referenced by processAuthenticateConfirm().

◆ sendAuthenticateRequest()

void inet::ieee80211::Ieee80211AgentSta::sendAuthenticateRequest ( const MacAddress address)
protectedvirtual
150 {
151  EV << "Sending AuthenticateRequest primitive to mgmt\n";
152  Ieee80211Prim_AuthenticateRequest *req = new Ieee80211Prim_AuthenticateRequest();
153  req->setAddress(address);
154  req->setTimeout(authenticationTimeout);
156  sendRequest(req);
157 }

Referenced by processScanConfirm().

◆ sendDeauthenticateRequest()

void inet::ieee80211::Ieee80211AgentSta::sendDeauthenticateRequest ( const MacAddress address,
Ieee80211ReasonCode  reasonCode 
)
protectedvirtual
160 {
161  EV << "Sending DeauthenticateRequest primitive to mgmt\n";
162  Ieee80211Prim_DeauthenticateRequest *req = new Ieee80211Prim_DeauthenticateRequest();
163  req->setAddress(address);
164  req->setReasonCode(reasonCode);
166  sendRequest(req);
167 }

◆ sendDisassociateRequest()

void inet::ieee80211::Ieee80211AgentSta::sendDisassociateRequest ( const MacAddress address,
Ieee80211ReasonCode  reasonCode 
)
protectedvirtual
190 {
191  EV << "Sending DisassociateRequest primitive to mgmt\n";
192  Ieee80211Prim_DisassociateRequest *req = new Ieee80211Prim_DisassociateRequest();
193  req->setAddress(address);
194  req->setReasonCode(reasonCode);
196  sendRequest(req);
197 }

◆ sendReassociateRequest()

void inet::ieee80211::Ieee80211AgentSta::sendReassociateRequest ( const MacAddress address)
protectedvirtual
180 {
181  EV << "Sending ReassociateRequest primitive to mgmt\n";
182  Ieee80211Prim_ReassociateRequest *req = new Ieee80211Prim_ReassociateRequest();
183  req->setAddress(address);
184  req->setTimeout(associationTimeout);
186  sendRequest(req);
187 }

◆ sendRequest()

void inet::ieee80211::Ieee80211AgentSta::sendRequest ( Ieee80211PrimRequest req)
protectedvirtual
125 {
126  cMessage *msg = new cMessage(req->getClassName());
127  msg->setControlInfo(req);
128  send(msg, "mgmtOut");
129 }

Referenced by sendAssociateRequest(), sendAuthenticateRequest(), sendDeauthenticateRequest(), sendDisassociateRequest(), sendReassociateRequest(), and sendScanRequest().

◆ sendScanRequest()

void inet::ieee80211::Ieee80211AgentSta::sendScanRequest ( )
protectedvirtual

Sending of Request primitives.

132 {
133  EV << "Sending ScanRequest primitive to mgmt\n";
134  Ieee80211Prim_ScanRequest *req = new Ieee80211Prim_ScanRequest();
135  req->setBSSType(BSSTYPE_INFRASTRUCTURE);
136  req->setActiveScan(activeScan);
137  req->setProbeDelay(probeDelay);
138  req->setMinChannelTime(minChannelTime);
139  req->setMaxChannelTime(maxChannelTime);
140  req->setChannelListArraySize(channelsToScan.size());
141  for (size_t i = 0; i < channelsToScan.size(); i++)
142  req->setChannelList(i, channelsToScan[i]);
143  // TODO BSSID, SSID are left at default ("any")
144 
146  sendRequest(req);
147 }

Referenced by handleTimer(), processAssociateConfirm(), processAuthenticateConfirm(), processReassociateConfirm(), processScanConfirm(), and receiveSignal().

Member Data Documentation

◆ acceptConfirmSignal

simsignal_t inet::ieee80211::Ieee80211AgentSta::acceptConfirmSignal = registerSignal("acceptConfirm")
staticprotected

◆ activeScan

bool inet::ieee80211::Ieee80211AgentSta::activeScan = false
protected

Referenced by initialize(), and sendScanRequest().

◆ associationTimeout

simtime_t inet::ieee80211::Ieee80211AgentSta::associationTimeout
protected

◆ authenticationTimeout

simtime_t inet::ieee80211::Ieee80211AgentSta::authenticationTimeout
protected

◆ channelsToScan

std::vector<int> inet::ieee80211::Ieee80211AgentSta::channelsToScan
protected

Referenced by initialize(), and sendScanRequest().

◆ defaultSsid

std::string inet::ieee80211::Ieee80211AgentSta::defaultSsid
protected

Referenced by initialize(), and processScanConfirm().

◆ dropConfirmSignal

simsignal_t inet::ieee80211::Ieee80211AgentSta::dropConfirmSignal = registerSignal("dropConfirm")
staticprotected

◆ maxChannelTime

simtime_t inet::ieee80211::Ieee80211AgentSta::maxChannelTime
protected

Referenced by initialize(), and sendScanRequest().

◆ minChannelTime

simtime_t inet::ieee80211::Ieee80211AgentSta::minChannelTime
protected

Referenced by initialize(), and sendScanRequest().

◆ myIface

NetworkInterface* inet::ieee80211::Ieee80211AgentSta::myIface = nullptr
protected

◆ prevAP

MacAddress inet::ieee80211::Ieee80211AgentSta::prevAP
protected

Referenced by processAssociateConfirm().

◆ probeDelay

simtime_t inet::ieee80211::Ieee80211AgentSta::probeDelay
protected

Referenced by initialize(), and sendScanRequest().

◆ sentRequestSignal

simsignal_t inet::ieee80211::Ieee80211AgentSta::sentRequestSignal = registerSignal("sentRequest")
staticprotected

The documentation for this class was generated from the following files:
inet::ieee80211::Ieee80211AgentSta::acceptConfirmSignal
static simsignal_t acceptConfirmSignal
Definition: Ieee80211AgentSta.h:45
MK_STARTUP
#define MK_STARTUP
Definition: Ieee80211AgentSta.cc:21
inet::ieee80211::Ieee80211AgentSta::processScanConfirm
virtual void processScanConfirm(Ieee80211Prim_ScanConfirm *resp)
Processing Confirm primitives.
Definition: Ieee80211AgentSta.cc:199
inet::ieee80211::Ieee80211AgentSta::chooseBSS
virtual int chooseBSS(Ieee80211Prim_ScanConfirm *resp)
Choose one AP from the list to associate with.
Definition: Ieee80211AgentSta.cc:252
inet::l2BeaconLostSignal
simsignal_t l2BeaconLostSignal
Signals for publish/subscribe mechanisms.
Definition: Simsignals.cc:14
inet::ieee80211::Ieee80211AgentSta::sendAuthenticateRequest
virtual void sendAuthenticateRequest(const MacAddress &address)
Definition: Ieee80211AgentSta.cc:149
inet::ieee80211::Ieee80211AgentSta::authenticationTimeout
simtime_t authenticationTimeout
Definition: Ieee80211AgentSta.h:38
inet::ieee80211::Ieee80211AgentSta::maxChannelTime
simtime_t maxChannelTime
Definition: Ieee80211AgentSta.h:37
inet::ieee80211::Ieee80211AgentSta::processAuthenticateConfirm
virtual void processAuthenticateConfirm(Ieee80211Prim_AuthenticateConfirm *resp)
Definition: Ieee80211AgentSta.cc:267
inet::ieee80211::Ieee80211AgentSta::minChannelTime
simtime_t minChannelTime
Definition: Ieee80211AgentSta.h:36
inet::ieee80211::Ieee80211AgentSta::myIface
NetworkInterface * myIface
Definition: Ieee80211AgentSta.h:31
inet::getContainingNode
cModule * getContainingNode(const cModule *from)
Find the node containing the given module.
Definition: ModuleAccess.cc:40
inet::ieee80211::Ieee80211AgentSta::processAssociateConfirm
virtual void processAssociateConfirm(Ieee80211Prim_AssociateConfirm *resp)
Definition: Ieee80211AgentSta.cc:284
inet::printSignalBanner
void printSignalBanner(simsignal_t signalID, const cObject *obj, const cObject *details)
Utility function.
Definition: Simsignals.cc:126
inet::ieee80211::Ieee80211AgentSta::defaultSsid
std::string defaultSsid
Definition: Ieee80211AgentSta.h:41
inet::ieee80211::PR_ASSOCIATE_REQUEST
@ PR_ASSOCIATE_REQUEST
Definition: Ieee80211Primitives_m.h:85
inet::getContainingNicModule
NetworkInterface * getContainingNicModule(const cModule *from)
Find the nic module (inside the networkNode) containing the given module.
Definition: NetworkInterface.cc:691
inet::ieee80211::Ieee80211AgentSta::sendRequest
virtual void sendRequest(Ieee80211PrimRequest *req)
Definition: Ieee80211AgentSta.cc:124
inet::ieee80211::Ieee80211AgentSta::activeScan
bool activeScan
Definition: Ieee80211AgentSta.h:33
inet::l2DisassociatedSignal
simsignal_t l2DisassociatedSignal
Definition: Simsignals.cc:18
ctrl
removed ctrl
Definition: IUdp-gates.txt:7
inet::ieee80211::Ieee80211AgentSta::dumpAPList
virtual void dumpAPList(Ieee80211Prim_ScanConfirm *resp)
Definition: Ieee80211AgentSta.cc:236
inet::ieee80211::PR_ASSOCIATE_CONFIRM
@ PR_ASSOCIATE_CONFIRM
Definition: Ieee80211Primitives_m.h:118
inet::ieee80211::Ieee80211AgentSta::handleResponse
virtual void handleResponse(cMessage *msg)
Handle responses from mgmgt.
Definition: Ieee80211AgentSta.cc:86
inet::ieee80211::PR_SCAN_REQUEST
@ PR_SCAN_REQUEST
Definition: Ieee80211Primitives_m.h:82
inet::l2AssociatedNewApSignal
simsignal_t l2AssociatedNewApSignal
Definition: Simsignals.cc:16
inet::ieee80211::Ieee80211AgentSta::sentRequestSignal
static simsignal_t sentRequestSignal
Definition: Ieee80211AgentSta.h:44
inet::l2AssociatedOldApSignal
simsignal_t l2AssociatedOldApSignal
Definition: Simsignals.cc:17
inet::ieee80211::Ieee80211AgentSta::dropConfirmSignal
static simsignal_t dropConfirmSignal
Definition: Ieee80211AgentSta.h:46
inet::INITSTAGE_LOCAL
INET_API InitStage INITSTAGE_LOCAL
Initialization of local state that don't use or affect other modules includes:
inet::ieee80211::PRC_SUCCESS
@ PRC_SUCCESS
Definition: Ieee80211Primitives_m.h:166
NUM_INIT_STAGES
#define NUM_INIT_STAGES
Definition: InitStageRegistry.h:73
inet::ieee80211::BSSTYPE_INFRASTRUCTURE
@ BSSTYPE_INFRASTRUCTURE
Definition: Ieee80211Primitives_m.h:139
inet::ieee80211::PR_AUTHENTICATE_REQUEST
@ PR_AUTHENTICATE_REQUEST
Definition: Ieee80211Primitives_m.h:83
inet::MacAddress::isUnspecified
bool isUnspecified() const
Returns true if all address bytes are zero.
Definition: MacAddress.h:136
Enter_Method
#define Enter_Method(...)
Definition: SelfDoc.h:71
inet::ieee80211::PR_SCAN_CONFIRM
@ PR_SCAN_CONFIRM
Definition: Ieee80211Primitives_m.h:115
inet::ieee80211::PR_REASSOCIATE_CONFIRM
@ PR_REASSOCIATE_CONFIRM
Definition: Ieee80211Primitives_m.h:119
inet::ieee80211::Ieee80211AgentSta::handleTimer
virtual void handleTimer(cMessage *msg)
Handle timers.
Definition: Ieee80211AgentSta.cc:74
inet::ieee80211::Ieee80211AgentSta::prevAP
MacAddress prevAP
Definition: Ieee80211AgentSta.h:32
inet::ieee80211::Ieee80211AgentSta::sendScanRequest
virtual void sendScanRequest()
Sending of Request primitives.
Definition: Ieee80211AgentSta.cc:131
inet::ieee80211::Ieee80211AgentSta::associationTimeout
simtime_t associationTimeout
Definition: Ieee80211AgentSta.h:39
inet::ieee80211::Ieee80211AgentSta::probeDelay
simtime_t probeDelay
Definition: Ieee80211AgentSta.h:35
inet::ieee80211::Ieee80211AgentSta::sendAssociateRequest
virtual void sendAssociateRequest(const MacAddress &address)
Definition: Ieee80211AgentSta.cc:169
inet::ieee80211::Ieee80211AgentSta::processReassociateConfirm
virtual void processReassociateConfirm(Ieee80211Prim_ReassociateConfirm *resp)
Definition: Ieee80211AgentSta.cc:308
inet::ieee80211::PR_AUTHENTICATE_CONFIRM
@ PR_AUTHENTICATE_CONFIRM
Definition: Ieee80211Primitives_m.h:116
inet::ieee80211::Ieee80211AgentSta::channelsToScan
std::vector< int > channelsToScan
Definition: Ieee80211AgentSta.h:34
inet::ieee80211::PR_DEAUTHENTICATE_REQUEST
@ PR_DEAUTHENTICATE_REQUEST
Definition: Ieee80211Primitives_m.h:84
inet::INITSTAGE_LINK_LAYER
INET_API InitStage INITSTAGE_LINK_LAYER
Initialization of link-layer protocols.
inet::ieee80211::PR_REASSOCIATE_REQUEST
@ PR_REASSOCIATE_REQUEST
Definition: Ieee80211Primitives_m.h:86
inet::ieee80211::PR_DISASSOCIATE_REQUEST
@ PR_DISASSOCIATE_REQUEST
Definition: Ieee80211Primitives_m.h:87