| 2863 | } |
| 2864 | |
| 2865 | void AmsWebServer::wifiScan() { |
| 2866 | if(!checkSecurity(1)) |
| 2867 | return; |
| 2868 | |
| 2869 | int16_t count = WiFi.scanNetworks(); |
| 2870 | int pos = snprintf_P(buf, BufferSize, PSTR("{\"c\":%d,\"n\":["), count); |
| 2871 | count = min(count, (int16_t) 25); // Max 25 so that we don't overflow the buffer size |
| 2872 | for (int16_t i = 0; i < count; i++) { |
| 2873 | uint8_t* bssid = WiFi.BSSID(i); |
| 2874 | String ssid = WiFi.SSID(i); |
| 2875 | int32_t rssi = WiFi.RSSI(i); |
| 2876 | int32_t chan = WiFi.channel(i); |
| 2877 | #if defined(ESP32) |
| 2878 | wifi_auth_mode_t enc = WiFi.encryptionType(i); |
| 2879 | String encStr; |
| 2880 | switch (enc) { |
| 2881 | case WIFI_AUTH_OPEN: encStr = "open"; break; |
| 2882 | case WIFI_AUTH_WEP: encStr = "WEP"; break; |
| 2883 | case WIFI_AUTH_WPA_PSK: encStr = "WPA"; break; |
| 2884 | case WIFI_AUTH_WPA2_PSK: encStr = "WPA2"; break; |
| 2885 | case WIFI_AUTH_WPA_WPA2_PSK: encStr = "WPA+WPA2"; break; |
| 2886 | case WIFI_AUTH_WPA2_ENTERPRISE: encStr = "WPA2-EAP"; break; |
| 2887 | case WIFI_AUTH_WPA3_PSK: encStr = "WPA3"; break; |
| 2888 | case WIFI_AUTH_WPA2_WPA3_PSK: encStr = "WPA2+WPA3"; break; |
| 2889 | case WIFI_AUTH_WAPI_PSK: encStr = "WAPI"; break; |
| 2890 | default: encStr = "unknown"; |
| 2891 | } |
| 2892 | #else |
| 2893 | uint8_t enc = WiFi.encryptionType(i); |
| 2894 | String encStr; |
| 2895 | switch (enc) { |
| 2896 | case ENC_TYPE_WEP: encStr = "WEP"; break; |
| 2897 | case ENC_TYPE_TKIP: encStr = "WPA"; break; |
| 2898 | case ENC_TYPE_CCMP: encStr = "WPA2"; break; |
| 2899 | case ENC_TYPE_NONE: encStr = "open"; break; |
| 2900 | default: encStr = "unknown"; |
| 2901 | } |
| 2902 | #endif |
| 2903 | |
| 2904 | char bssidStr[18] = { 0 }; |
| 2905 | sprintf(bssidStr, "%02X:%02X:%02X:%02X:%02X:%02X", bssid[0], bssid[1], bssid[2], bssid[3], bssid[4], bssid[5]); |
| 2906 | pos += snprintf_P(buf+pos, BufferSize-pos, PSTR("{\"b\":\"%s\",\"s\":\"%s\",\"r\":%d,\"c\":%d,\"e\":\"%s\"}%s"), bssidStr, ssid.c_str(), rssi, chan, encStr, i == count-1 ? "" : ","); |
| 2907 | } |
| 2908 | pos += snprintf_P(buf+pos, BufferSize-pos, PSTR("]}")); |
| 2909 | WiFi.scanDelete(); |
| 2910 | |
| 2911 | server.sendHeader(HEADER_CACHE_CONTROL, CACHE_CONTROL_NO_CACHE); |
| 2912 | server.sendHeader(HEADER_PRAGMA, PRAGMA_NO_CACHE); |
| 2913 | server.sendHeader(HEADER_EXPIRES, EXPIRES_OFF); |
| 2914 | |
| 2915 | server.setContentLength(strlen(buf)); |
| 2916 | server.send(200, MIME_JSON, buf); |
| 2917 | } |
| 2918 | |
| 2919 | void AmsWebServer::wifiTestStart() { |
| 2920 | if(!checkSecurity(1)) |
nothing calls this directly
no outgoing calls
no test coverage detected