-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathwlanscanner.cpp
More file actions
54 lines (42 loc) · 1.1 KB
/
wlanscanner.cpp
File metadata and controls
54 lines (42 loc) · 1.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/*
* Author: Floris Bos
* License: public domain / unlicense
*/
#include "wlanscanner.h"
#include "pico/stdlib.h"
WlanScanner *WlanScanner::_wlanscanner = NULL;
WlanScanner::WlanScanner()
{
}
WlanScanner *WlanScanner::instance()
{
if (!_wlanscanner)
_wlanscanner = new WlanScanner();
return _wlanscanner;
}
static int scan_result(void *env, const cyw43_ev_scan_result_t *result)
{
static_cast<WlanScanner *>(env)->addScanResult(result);
return 0;
}
void WlanScanner::startScanning()
{
cyw43_wifi_scan_options_t scan_options = {0};
cyw43_wifi_scan(&cyw43_state, &scan_options, this, scan_result);
}
void WlanScanner::addScanResult(const cyw43_ev_scan_result_t *result)
{
if (result && result->ssid && result->ssid[0])
{
std::string ssid = (char *) result->ssid;
WlanDetails details;
details.rssi = result->rssi;
details.needsUsername = false;
details.needsPassword = result->auth_mode != CYW43_AUTH_OPEN;
_ssids[ssid] = details;
}
}
std::map<std::string, WlanDetails> *WlanScanner::getSSIDs()
{
return &_ssids;
}