Merge pull request #3472 from cesanta/wifi

update WiFi security definitions
This commit is contained in:
Sergio R. Caprile authored and GitHub committed 2026-03-20 17:19:25 -03:00
commit ec91eaf0f3
5 files changed
+29 -21

No files matched your search

+6 -9
View File
@@ -26733,14 +26733,11 @@ static void st67w6_handle_scan_result(char *data, size_t len) {
!mg_str_to_num(fields[0], 10, &val, 1))
return;
bss.security =
(val == 0)
? MG_WIFI_SECURITY_OPEN
: MG_WIFI_SECURITY_WEP |
((val == 2 || val == 4 || val == 5) ? MG_WIFI_SECURITY_WPA
: 0) |
((val == 3 || val == 4 || val == 7) ? MG_WIFI_SECURITY_WPA2
: 0) |
((val == 6 || val == 7) ? MG_WIFI_SECURITY_WPA3 : 0);
(val == 0) ? MG_WIFI_SECURITY_OPEN : (uint8_t) MG_WIFI_SECURITY_WEP;
if (val == 2 || val == 4) bss.security |= MG_WIFI_SECURITY_WPA;
if (val == 3 || val == 4 || val == 7) bss.security |= MG_WIFI_SECURITY_WPA2;
if (val == 6 || val == 7) bss.security |= MG_WIFI_SECURITY_WPA3;
if (val == 5) bss.security |= MG_WIFI_SECURITY_WPA_ENTERPRISE;
if (!mg_span(fields[1], &fields[0], &fields[1], ',')) return;
bss.SSID.buf = fields[0].buf + 1, bss.SSID.len = fields[0].len - 2;
if (!mg_span(fields[1], &fields[0], &fields[1], ',')) return;
@@ -26770,7 +26767,7 @@ static void st67w6_handle_scan_result(char *data, size_t len) {
!mg_str_to_num(fields[0], 10, &val, 1))
return;
bss.has_n = (val & 4) != 0;
// bss.has_ax = (val & 8) != 0;
bss.has_ax = (val & 8) != 0;
bss.band = MG_WIFI_BAND_2G; // NOT INFORMED with default options, no docs
MG_VERBOSE(("BSS: %.*s (%u) (%M) %d dBm %u", bss.SSID.len, bss.SSID.buf,
bss.channel, mg_print_mac, bss.BSSID, (int) bss.RSSI,
+5
View File
@@ -3164,11 +3164,16 @@ struct mg_wifi_scan_bss_data {
#define MG_WIFI_SECURITY_WPA MG_BIT(1)
#define MG_WIFI_SECURITY_WPA2 MG_BIT(2)
#define MG_WIFI_SECURITY_WPA3 MG_BIT(3)
#define MG_WIFI_SECURITY_WPA_ENTERPRISE MG_BIT(4)
#define MG_WIFI_SECURITY_WPA2_ENTERPRISE MG_BIT(5)
#define MG_WIFI_SECURITY_WPA3_ENTERPRISE MG_BIT(6)
uint8_t channel;
unsigned band : 2;
#define MG_WIFI_BAND_2G 0
#define MG_WIFI_BAND_5G 1
unsigned has_n : 1;
unsigned has_ac : 1;
unsigned has_ax : 1;
};
bool mg_wifi_scan(void);
+6 -9
View File
@@ -274,14 +274,11 @@ static void st67w6_handle_scan_result(char *data, size_t len) {
!mg_str_to_num(fields[0], 10, &val, 1))
return;
bss.security =
(val == 0)
? MG_WIFI_SECURITY_OPEN
: MG_WIFI_SECURITY_WEP |
((val == 2 || val == 4 || val == 5) ? MG_WIFI_SECURITY_WPA
: 0) |
((val == 3 || val == 4 || val == 7) ? MG_WIFI_SECURITY_WPA2
: 0) |
((val == 6 || val == 7) ? MG_WIFI_SECURITY_WPA3 : 0);
(val == 0) ? MG_WIFI_SECURITY_OPEN : (uint8_t) MG_WIFI_SECURITY_WEP;
if (val == 2 || val == 4) bss.security |= MG_WIFI_SECURITY_WPA;
if (val == 3 || val == 4 || val == 7) bss.security |= MG_WIFI_SECURITY_WPA2;
if (val == 6 || val == 7) bss.security |= MG_WIFI_SECURITY_WPA3;
if (val == 5) bss.security |= MG_WIFI_SECURITY_WPA_ENTERPRISE;
if (!mg_span(fields[1], &fields[0], &fields[1], ',')) return;
bss.SSID.buf = fields[0].buf + 1, bss.SSID.len = fields[0].len - 2;
if (!mg_span(fields[1], &fields[0], &fields[1], ',')) return;
@@ -311,7 +308,7 @@ static void st67w6_handle_scan_result(char *data, size_t len) {
!mg_str_to_num(fields[0], 10, &val, 1))
return;
bss.has_n = (val & 4) != 0;
// bss.has_ax = (val & 8) != 0;
bss.has_ax = (val & 8) != 0;
bss.band = MG_WIFI_BAND_2G; // NOT INFORMED with default options, no docs
MG_VERBOSE(("BSS: %.*s (%u) (%M) %d dBm %u", bss.SSID.len, bss.SSID.buf,
bss.channel, mg_print_mac, bss.BSSID, (int) bss.RSSI,
+5
View File
@@ -24,11 +24,16 @@ struct mg_wifi_scan_bss_data {
#define MG_WIFI_SECURITY_WPA MG_BIT(1)
#define MG_WIFI_SECURITY_WPA2 MG_BIT(2)
#define MG_WIFI_SECURITY_WPA3 MG_BIT(3)
#define MG_WIFI_SECURITY_WPA_ENTERPRISE MG_BIT(4)
#define MG_WIFI_SECURITY_WPA2_ENTERPRISE MG_BIT(5)
#define MG_WIFI_SECURITY_WPA3_ENTERPRISE MG_BIT(6)
uint8_t channel;
unsigned band : 2;
#define MG_WIFI_BAND_2G 0
#define MG_WIFI_BAND_5G 1
unsigned has_n : 1;
unsigned has_ac : 1;
unsigned has_ax : 1;
};
bool mg_wifi_scan(void);
@@ -471,13 +471,17 @@ static void handle_scan_result(unsigned int i, mg_tcpip_event_handler_t evcb) {
mg_mprintf(bssid, "%M", print_mac, r.bssid);
bss.BSSID = bssid;
bss.RSSI = (int8_t) -r.rssi;
bss.has_n = r.dot11n; // TODO(scaprile): add 11ac, 11ax, etc
bss.has_n = r.dot11n;
bss.has_ac = r.dot11ac;
bss.has_ax = r.dot11ax;
bss.channel = r.channel;
bss.band = r.channel <= MAX_CHANNELS_BG ? MG_WIFI_BAND_2G : MG_WIFI_BAND_5G;
bss.security = r.wep ? MG_WIFI_SECURITY_WEP : MG_WIFI_SECURITY_OPEN;
if (r.wpa) bss.security |= MG_WIFI_SECURITY_WPA;
if (r.wpa2) bss.security |= MG_WIFI_SECURITY_WPA2;
// TODO(scaprile): add WPA3, enterprise
if (r.wpa2 || r.wpa2_sha256) bss.security |= MG_WIFI_SECURITY_WPA2;
if (r.wpa3_sae) bss.security |= MG_WIFI_SECURITY_WPA3;
if (r.wpa2_entp || r.wpa2_entp_sha256) bss.security |= MG_WIFI_SECURITY_WPA2_ENTERPRISE;
if (r.wpa3_1x_sha256 || r.wpa3_1x_sha384) bss.security |= MG_WIFI_SECURITY_WPA3_ENTERPRISE;
MG_VERBOSE(("BSS: %.*s (%u) (%M) %d dBm %u", bss.SSID.len, bss.SSID.buf,
bss.channel, mg_print_mac, bss.BSSID, (int) bss.RSSI,
bss.security));