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 int chooseBSS (Ieee80211Prim_ScanConfirm *resp)
 Choose one AP from the list to associate with. More...
 
virtual void dumpAPList (Ieee80211Prim_ScanConfirm *resp)
 
virtual void sendScanRequest ()
 Sending of Request primitives. More...
 
virtual void sendAuthenticateRequest (const MACAddress &address)
 
virtual void sendDeauthenticateRequest (const MACAddress &address, int reasonCode)
 
virtual void sendAssociateRequest (const MACAddress &address)
 
virtual void sendReassociateRequest (const MACAddress &address)
 
virtual void sendDisassociateRequest (const MACAddress &address, int 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)
 

Protected Attributes

InterfaceEntrymyIface = 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 default_ssid
 

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.

Author
Andras Varga

Constructor & Destructor Documentation

inet::ieee80211::Ieee80211AgentSTA::Ieee80211AgentSTA ( )
inline
62 {}

Member Function Documentation

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

Choose one AP from the list to associate with.

Referenced by processScanConfirm().

261 {
262  if (resp->getBssListArraySize() == 0)
263  return -1;
264 
265  // here, just choose the one with the greatest receive power
266  // TODO and which supports a good data rate we support
267  int bestIndex = 0;
268  for (int i = 0; i < (int)resp->getBssListArraySize(); i++)
269  if (resp->getBssList(i).getRxPower() > resp->getBssList(bestIndex).getRxPower())
270  bestIndex = i;
271 
272  return bestIndex;
273 }
void inet::ieee80211::Ieee80211AgentSTA::dumpAPList ( Ieee80211Prim_ScanConfirm resp)
protectedvirtual

Referenced by processScanConfirm().

245 {
246  EV << "Received AP list:\n";
247  for (int i = 0; i < (int)resp->getBssListArraySize(); i++) {
248  Ieee80211Prim_BSSDescription& bssDesc = resp->getBssList(i);
249  EV << " " << i << ". "
250  << " address=" << bssDesc.getBSSID()
251  << " channel=" << bssDesc.getChannelNumber()
252  << " SSID=" << bssDesc.getSSID()
253  << " beaconIntvl=" << bssDesc.getBeaconInterval()
254  << " rxPower=" << bssDesc.getRxPower()
255  << endl;
256  // later: supportedRates
257  }
258 }
void inet::ieee80211::Ieee80211AgentSTA::handleMessage ( cMessage *  msg)
overrideprotectedvirtual

Overridden cSimpleModule method.

76 {
77  if (msg->isSelfMessage())
78  handleTimer(msg);
79  else
80  handleResponse(msg);
81 }
virtual void handleTimer(cMessage *msg)
Handle timers.
Definition: Ieee80211AgentSTA.cc:83
virtual void handleResponse(cMessage *msg)
Handle responses from mgmgt.
Definition: Ieee80211AgentSTA.cc:95
void inet::ieee80211::Ieee80211AgentSTA::handleResponse ( cMessage *  msg)
protectedvirtual

Handle responses from mgmgt.

Referenced by handleMessage().

96 {
97  cObject *ctrl = msg->removeControlInfo();
98  delete msg;
99 
100  EV << "Processing confirmation from mgmt: " << ctrl->getClassName() << "\n";
101 
102  if (dynamic_cast<Ieee80211Prim_ScanConfirm *>(ctrl))
103  processScanConfirm((Ieee80211Prim_ScanConfirm *)ctrl);
104  else if (dynamic_cast<Ieee80211Prim_AuthenticateConfirm *>(ctrl))
105  processAuthenticateConfirm((Ieee80211Prim_AuthenticateConfirm *)ctrl);
106  else if (dynamic_cast<Ieee80211Prim_AssociateConfirm *>(ctrl))
107  processAssociateConfirm((Ieee80211Prim_AssociateConfirm *)ctrl);
108  else if (dynamic_cast<Ieee80211Prim_ReassociateConfirm *>(ctrl))
109  processReassociateConfirm((Ieee80211Prim_ReassociateConfirm *)ctrl);
110  else if (ctrl)
111  throw cRuntimeError("handleResponse(): unrecognized control info class `%s'", ctrl->getClassName());
112  else
113  throw cRuntimeError("handleResponse(): control info is nullptr");
114  delete ctrl;
115 }
virtual void processAuthenticateConfirm(Ieee80211Prim_AuthenticateConfirm *resp)
Definition: Ieee80211AgentSTA.cc:275
virtual void processAssociateConfirm(Ieee80211Prim_AssociateConfirm *resp)
Definition: Ieee80211AgentSTA.cc:292
virtual void processReassociateConfirm(Ieee80211Prim_ReassociateConfirm *resp)
Definition: Ieee80211AgentSTA.cc:316
virtual void processScanConfirm(Ieee80211Prim_ScanConfirm *resp)
Processing Confirm primitives.
Definition: Ieee80211AgentSTA.cc:207
void inet::ieee80211::Ieee80211AgentSTA::handleTimer ( cMessage *  msg)
protectedvirtual

Handle timers.

Referenced by handleMessage().

84 {
85  if (msg->getKind() == MK_STARTUP) {
86  EV << "Starting up\n";
88  delete msg;
89  }
90  else {
91  throw cRuntimeError("internal error: unrecognized timer '%s'", msg->getName());
92  }
93 }
#define MK_STARTUP
Definition: Ieee80211AgentSTA.cc:30
virtual void sendScanRequest()
Sending of Request primitives.
Definition: Ieee80211AgentSTA.cc:139
void inet::ieee80211::Ieee80211AgentSTA::initialize ( int  stage)
overrideprotectedvirtual
37 {
38  cSimpleModule::initialize(stage);
39 
40  if (stage == INITSTAGE_LOCAL) {
41  // read parameters
42  activeScan = par("activeScan");
43  probeDelay = par("probeDelay");
44  minChannelTime = par("minChannelTime");
45  maxChannelTime = par("maxChannelTime");
46  authenticationTimeout = par("authenticationTimeout");
47  associationTimeout = par("associationTimeout");
48  cStringTokenizer tokenizer(par("channelsToScan"));
49  const char *token;
50  while ((token = tokenizer.nextToken()) != nullptr)
51  channelsToScan.push_back(atoi(token));
52 
53  cModule *host = getContainingNode(this);
54  host->subscribe(NF_L2_BEACON_LOST, this);
55 
56  // JcM add: get the default ssid, if there is one.
57  default_ssid = par("default_ssid").stringValue();
58 
59  // start up: send scan request
60  simtime_t startingTime = par("startingTime").doubleValue();
61  if (startingTime < SIMTIME_ZERO)
62  startingTime = uniform(SIMTIME_ZERO, maxChannelTime);
63  scheduleAt(simTime() + startingTime, new cMessage("startUp", MK_STARTUP));
64 
65  myIface = nullptr;
66  }
67  else if (stage == INITSTAGE_LINK_LAYER_2) {
68  IInterfaceTable *ift = findModuleFromPar<IInterfaceTable>(par("interfaceTableModule"), this);
69  if (ift) {
70  myIface = ift->getInterfaceByName(utils::stripnonalnum(findModuleUnderContainingNode(this)->getFullName()).c_str());
71  }
72  }
73 }
std::vector< int > channelsToScan
Definition: Ieee80211AgentSTA.h:47
simtime_t authenticationTimeout
Definition: Ieee80211AgentSTA.h:51
bool activeScan
Definition: Ieee80211AgentSTA.h:46
cModule * findModuleUnderContainingNode(const cModule *from)
Find the ancestor module under the node containing the given module.
Definition: ModuleAccess.cc:73
simtime_t probeDelay
Definition: Ieee80211AgentSTA.h:48
std::string stripnonalnum(const char *s)
Removes non-alphanumeric characters from the given string.
Definition: INETUtils.cc:56
InterfaceEntry * myIface
Definition: Ieee80211AgentSTA.h:44
simsignal_t NF_L2_BEACON_LOST
Definition: NotifierConsts.cc:35
Local initializations.
Definition: InitStages.h:35
cModule * getContainingNode(const cModule *from)
Find the node containing the given module.
Definition: ModuleAccess.cc:65
#define MK_STARTUP
Definition: Ieee80211AgentSTA.cc:30
simtime_t minChannelTime
Definition: Ieee80211AgentSTA.h:49
simtime_t maxChannelTime
Definition: Ieee80211AgentSTA.h:50
Additional link-layer initializations that depend on the previous stage.
Definition: InitStages.h:64
simtime_t associationTimeout
Definition: Ieee80211AgentSTA.h:52
std::string default_ssid
Definition: Ieee80211AgentSTA.h:54
virtual int inet::ieee80211::Ieee80211AgentSTA::numInitStages ( ) const
inlineoverrideprotectedvirtual
65 { return NUM_INIT_STAGES; }
The number of initialization stages.
Definition: InitStages.h:116
void inet::ieee80211::Ieee80211AgentSTA::processAssociateConfirm ( Ieee80211Prim_AssociateConfirm resp)
protectedvirtual

Referenced by handleResponse().

293 {
294  if (resp->getResultCode() != PRC_SUCCESS) {
295  EV << "Association error\n";
297 
298  // try scanning again, maybe we'll have better luck next time, possibly with a different AP
299  EV << "Going back to scanning\n";
300  sendScanRequest();
301  }
302  else {
303  EV << "Association successful\n";
305  // we are happy!
306  getContainingNode(this)->bubble("Associated with AP");
307  if (prevAP.isUnspecified() || prevAP != resp->getAddress()) {
308  emit(NF_L2_ASSOCIATED_NEWAP, myIface); //XXX detail: InterfaceEntry?
309  prevAP = resp->getAddress();
310  }
311  else
313  }
314 }
Definition: Ieee80211Primitives_m.h:138
MACAddress prevAP
Definition: Ieee80211AgentSTA.h:45
static simsignal_t dropConfirmSignal
Definition: Ieee80211AgentSTA.h:59
bool isUnspecified() const
Returns true if all address bytes are zero.
Definition: MACAddress.h:151
simsignal_t NF_L2_ASSOCIATED_NEWAP
Definition: NotifierConsts.cc:37
simsignal_t NF_L2_ASSOCIATED_OLDAP
Definition: NotifierConsts.cc:38
Definition: Ieee80211Primitives_m.h:94
InterfaceEntry * myIface
Definition: Ieee80211AgentSTA.h:44
cModule * getContainingNode(const cModule *from)
Find the node containing the given module.
Definition: ModuleAccess.cc:65
virtual void sendScanRequest()
Sending of Request primitives.
Definition: Ieee80211AgentSTA.cc:139
static simsignal_t acceptConfirmSignal
Definition: Ieee80211AgentSTA.h:58
void inet::ieee80211::Ieee80211AgentSTA::processAuthenticateConfirm ( Ieee80211Prim_AuthenticateConfirm resp)
protectedvirtual

Referenced by handleResponse().

276 {
277  if (resp->getResultCode() != PRC_SUCCESS) {
278  EV << "Authentication error\n";
280 
281  // try scanning again, maybe we'll have better luck next time, possibly with a different AP
282  EV << "Going back to scanning\n";
283  sendScanRequest();
284  }
285  else {
286  EV << "Authentication successful, let's try to associate\n";
288  sendAssociateRequest(resp->getAddress());
289  }
290 }
Definition: Ieee80211Primitives_m.h:138
static simsignal_t dropConfirmSignal
Definition: Ieee80211AgentSTA.h:59
virtual void sendAssociateRequest(const MACAddress &address)
Definition: Ieee80211AgentSTA.cc:177
Definition: Ieee80211Primitives_m.h:92
virtual void sendScanRequest()
Sending of Request primitives.
Definition: Ieee80211AgentSTA.cc:139
static simsignal_t acceptConfirmSignal
Definition: Ieee80211AgentSTA.h:58
void inet::ieee80211::Ieee80211AgentSTA::processReassociateConfirm ( Ieee80211Prim_ReassociateConfirm resp)
protectedvirtual

Referenced by handleResponse().

317 {
318  // treat the same way as AssociateConfirm
319  if (resp->getResultCode() != PRC_SUCCESS) {
320  EV << "Reassociation error\n";
322  EV << "Going back to scanning\n";
323  sendScanRequest();
324  }
325  else {
326  EV << "Reassociation successful\n";
327  emit(NF_L2_ASSOCIATED_OLDAP, myIface); //XXX detail: InterfaceEntry?
329  // we are happy!
330  }
331 }
Definition: Ieee80211Primitives_m.h:138
static simsignal_t dropConfirmSignal
Definition: Ieee80211AgentSTA.h:59
simsignal_t NF_L2_ASSOCIATED_OLDAP
Definition: NotifierConsts.cc:38
InterfaceEntry * myIface
Definition: Ieee80211AgentSTA.h:44
virtual void sendScanRequest()
Sending of Request primitives.
Definition: Ieee80211AgentSTA.cc:139
Definition: Ieee80211Primitives_m.h:95
static simsignal_t acceptConfirmSignal
Definition: Ieee80211AgentSTA.h:58
void inet::ieee80211::Ieee80211AgentSTA::processScanConfirm ( Ieee80211Prim_ScanConfirm resp)
protectedvirtual

Processing Confirm primitives.

Referenced by handleResponse().

208 {
209  // choose best AP
210 
211  int bssIndex = -1;
212  if (this->default_ssid == "") {
213  // no default ssid, so pick the best one
214  bssIndex = chooseBSS(resp);
215  }
216  else {
217  // search if the default_ssid is in the list, otherwise
218  // keep searching.
219  for (int i = 0; i < (int)resp->getBssListArraySize(); i++) {
220  std::string resp_ssid = resp->getBssList(i).getSSID();
221  if (resp_ssid == this->default_ssid) {
222  EV << "found default SSID " << resp_ssid << endl;
223  bssIndex = i;
224  break;
225  }
226  }
227  }
228 
229  if (bssIndex == -1) {
230  EV << "No (suitable) AP found, continue scanning\n";
232  sendScanRequest();
233  return;
234  }
235 
236  dumpAPList(resp);
238 
239  Ieee80211Prim_BSSDescription& bssDesc = resp->getBssList(bssIndex);
240  EV << "Chosen AP address=" << bssDesc.getBSSID() << " from list, starting authentication\n";
241  sendAuthenticateRequest(bssDesc.getBSSID());
242 }
static simsignal_t dropConfirmSignal
Definition: Ieee80211AgentSTA.h:59
virtual void dumpAPList(Ieee80211Prim_ScanConfirm *resp)
Definition: Ieee80211AgentSTA.cc:244
virtual void sendAuthenticateRequest(const MACAddress &address)
Definition: Ieee80211AgentSTA.cc:157
Definition: Ieee80211Primitives_m.h:91
virtual void sendScanRequest()
Sending of Request primitives.
Definition: Ieee80211AgentSTA.cc:139
virtual int chooseBSS(Ieee80211Prim_ScanConfirm *resp)
Choose one AP from the list to associate with.
Definition: Ieee80211AgentSTA.cc:260
static simsignal_t acceptConfirmSignal
Definition: Ieee80211AgentSTA.h:58
std::string default_ssid
Definition: Ieee80211AgentSTA.h:54
void inet::ieee80211::Ieee80211AgentSTA::receiveSignal ( cComponent *  source,
simsignal_t  signalID,
cObject *  obj,
cObject *  details 
)
overrideprotectedvirtual

Redefined from cListener; called by signal handler.

118 {
119  Enter_Method_Silent();
120  printNotificationBanner(signalID, obj);
121 
122  if (signalID == NF_L2_BEACON_LOST) {
123  //XXX should check details if it's about this NIC
124  EV << "beacon lost, starting scanning again\n";
125  getContainingNode(this)->bubble("Beacon lost!");
126  //sendDisassociateRequest();
127  sendScanRequest();
129  }
130 }
simsignal_t NF_L2_DISASSOCIATED
Definition: NotifierConsts.cc:39
InterfaceEntry * myIface
Definition: Ieee80211AgentSTA.h:44
simsignal_t NF_L2_BEACON_LOST
Definition: NotifierConsts.cc:35
cModule * getContainingNode(const cModule *from)
Find the node containing the given module.
Definition: ModuleAccess.cc:65
void printNotificationBanner(simsignal_t signalID, const cObject *obj)
Utility function.
Definition: NotifierConsts.cc:109
virtual void sendScanRequest()
Sending of Request primitives.
Definition: Ieee80211AgentSTA.cc:139
void inet::ieee80211::Ieee80211AgentSTA::sendAssociateRequest ( const MACAddress address)
protectedvirtual

Referenced by processAuthenticateConfirm().

178 {
179  EV << "Sending AssociateRequest primitive to mgmt\n";
180  Ieee80211Prim_AssociateRequest *req = new Ieee80211Prim_AssociateRequest();
181  req->setAddress(address);
182  req->setTimeout(associationTimeout);
184  sendRequest(req);
185 }
virtual void sendRequest(Ieee80211PrimRequest *req)
Definition: Ieee80211AgentSTA.cc:132
Definition: Ieee80211Primitives_m.h:63
static simsignal_t sentRequestSignal
Definition: Ieee80211AgentSTA.h:57
simtime_t associationTimeout
Definition: Ieee80211AgentSTA.h:52
void inet::ieee80211::Ieee80211AgentSTA::sendAuthenticateRequest ( const MACAddress address)
protectedvirtual

Referenced by processScanConfirm().

158 {
159  EV << "Sending AuthenticateRequest primitive to mgmt\n";
160  Ieee80211Prim_AuthenticateRequest *req = new Ieee80211Prim_AuthenticateRequest();
161  req->setAddress(address);
162  req->setTimeout(authenticationTimeout);
164  sendRequest(req);
165 }
simtime_t authenticationTimeout
Definition: Ieee80211AgentSTA.h:51
virtual void sendRequest(Ieee80211PrimRequest *req)
Definition: Ieee80211AgentSTA.cc:132
Definition: Ieee80211Primitives_m.h:61
static simsignal_t sentRequestSignal
Definition: Ieee80211AgentSTA.h:57
void inet::ieee80211::Ieee80211AgentSTA::sendDeauthenticateRequest ( const MACAddress address,
int  reasonCode 
)
protectedvirtual
168 {
169  EV << "Sending DeauthenticateRequest primitive to mgmt\n";
170  Ieee80211Prim_DeauthenticateRequest *req = new Ieee80211Prim_DeauthenticateRequest();
171  req->setAddress(address);
172  req->setReasonCode(reasonCode);
174  sendRequest(req);
175 }
virtual void sendRequest(Ieee80211PrimRequest *req)
Definition: Ieee80211AgentSTA.cc:132
Definition: Ieee80211Primitives_m.h:62
static simsignal_t sentRequestSignal
Definition: Ieee80211AgentSTA.h:57
void inet::ieee80211::Ieee80211AgentSTA::sendDisassociateRequest ( const MACAddress address,
int  reasonCode 
)
protectedvirtual
198 {
199  EV << "Sending DisassociateRequest primitive to mgmt\n";
200  Ieee80211Prim_DisassociateRequest *req = new Ieee80211Prim_DisassociateRequest();
201  req->setAddress(address);
202  req->setReasonCode(reasonCode);
204  sendRequest(req);
205 }
virtual void sendRequest(Ieee80211PrimRequest *req)
Definition: Ieee80211AgentSTA.cc:132
Definition: Ieee80211Primitives_m.h:65
static simsignal_t sentRequestSignal
Definition: Ieee80211AgentSTA.h:57
void inet::ieee80211::Ieee80211AgentSTA::sendReassociateRequest ( const MACAddress address)
protectedvirtual
188 {
189  EV << "Sending ReassociateRequest primitive to mgmt\n";
190  Ieee80211Prim_ReassociateRequest *req = new Ieee80211Prim_ReassociateRequest();
191  req->setAddress(address);
192  req->setTimeout(associationTimeout);
194  sendRequest(req);
195 }
virtual void sendRequest(Ieee80211PrimRequest *req)
Definition: Ieee80211AgentSTA.cc:132
Definition: Ieee80211Primitives_m.h:64
static simsignal_t sentRequestSignal
Definition: Ieee80211AgentSTA.h:57
simtime_t associationTimeout
Definition: Ieee80211AgentSTA.h:52
void inet::ieee80211::Ieee80211AgentSTA::sendRequest ( Ieee80211PrimRequest req)
protectedvirtual

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

133 {
134  cMessage *msg = new cMessage(req->getClassName());
135  msg->setControlInfo(req);
136  send(msg, "mgmtOut");
137 }
void inet::ieee80211::Ieee80211AgentSTA::sendScanRequest ( )
protectedvirtual

Sending of Request primitives.

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

140 {
141  EV << "Sending ScanRequest primitive to mgmt\n";
142  Ieee80211Prim_ScanRequest *req = new Ieee80211Prim_ScanRequest();
143  req->setBSSType(BSSTYPE_INFRASTRUCTURE);
144  req->setActiveScan(activeScan);
145  req->setProbeDelay(probeDelay);
146  req->setMinChannelTime(minChannelTime);
147  req->setMaxChannelTime(maxChannelTime);
148  req->setChannelListArraySize(channelsToScan.size());
149  for (int i = 0; i < (int)channelsToScan.size(); i++)
150  req->setChannelList(i, channelsToScan[i]);
151  //XXX BSSID, SSID are left at default ("any")
152 
154  sendRequest(req);
155 }
std::vector< int > channelsToScan
Definition: Ieee80211AgentSTA.h:47
Definition: Ieee80211Primitives_m.h:60
virtual void sendRequest(Ieee80211PrimRequest *req)
Definition: Ieee80211AgentSTA.cc:132
bool activeScan
Definition: Ieee80211AgentSTA.h:46
Definition: Ieee80211Primitives_m.h:113
simtime_t probeDelay
Definition: Ieee80211AgentSTA.h:48
simtime_t minChannelTime
Definition: Ieee80211AgentSTA.h:49
simtime_t maxChannelTime
Definition: Ieee80211AgentSTA.h:50
static simsignal_t sentRequestSignal
Definition: Ieee80211AgentSTA.h:57

Member Data Documentation

simsignal_t inet::ieee80211::Ieee80211AgentSTA::acceptConfirmSignal = registerSignal("acceptConfirm")
staticprotected
bool inet::ieee80211::Ieee80211AgentSTA::activeScan = false
protected

Referenced by initialize(), and sendScanRequest().

simtime_t inet::ieee80211::Ieee80211AgentSTA::associationTimeout
protected
simtime_t inet::ieee80211::Ieee80211AgentSTA::authenticationTimeout
protected
std::vector<int> inet::ieee80211::Ieee80211AgentSTA::channelsToScan
protected

Referenced by initialize(), and sendScanRequest().

std::string inet::ieee80211::Ieee80211AgentSTA::default_ssid
protected

Referenced by initialize(), and processScanConfirm().

simsignal_t inet::ieee80211::Ieee80211AgentSTA::dropConfirmSignal = registerSignal("dropConfirm")
staticprotected
simtime_t inet::ieee80211::Ieee80211AgentSTA::maxChannelTime
protected

Referenced by initialize(), and sendScanRequest().

simtime_t inet::ieee80211::Ieee80211AgentSTA::minChannelTime
protected

Referenced by initialize(), and sendScanRequest().

InterfaceEntry* inet::ieee80211::Ieee80211AgentSTA::myIface = nullptr
protected
MACAddress inet::ieee80211::Ieee80211AgentSTA::prevAP
protected

Referenced by processAssociateConfirm().

simtime_t inet::ieee80211::Ieee80211AgentSTA::probeDelay
protected

Referenced by initialize(), and sendScanRequest().

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

The documentation for this class was generated from the following files: