diff --git a/examples/wifi_scan/Makefile b/examples/wifi_scan/Makefile new file mode 100644 index 0000000..a9e5a71 --- /dev/null +++ b/examples/wifi_scan/Makefile @@ -0,0 +1,4 @@ +PROGRAM = wifi_scan +#ESPBAUD = 460800 + +include ../../common.mk diff --git a/examples/wifi_scan/main.c b/examples/wifi_scan/main.c new file mode 100644 index 0000000..a180a21 --- /dev/null +++ b/examples/wifi_scan/main.c @@ -0,0 +1,72 @@ +/* + * WiFi scan + * + * Part of esp-open-rtos + * Copyright (C) 2016 Ruslan V. Uss + * BSD Licensed as described in the file LICENSE + */ +#include +#include +#include +#include +#include +#include + +static const char * const auth_modes [] = { + [AUTH_OPEN] = "Open", + [AUTH_WEP] = "WEP", + [AUTH_WPA_PSK] = "WPA/PSK", + [AUTH_WPA2_PSK] = "WPA2/PSK", + [AUTH_WPA_WPA2_PSK] = "WPA/WPA2/PSK" +}; + +static void scan_done_cb(void *arg, sdk_scan_status_t status) +{ + char ssid[33]; // max SSID length + zero byte + + if (status != SCAN_OK) + { + printf("Error: WiFi scan failed\n"); + return; + } + + struct sdk_bss_info *bss = (struct sdk_bss_info *)arg; + // first one is invalid + bss = bss->next.stqe_next; + + printf("\n----------------------------------------------------------------------------------\n"); + printf(" Wi-Fi networks\n"); + printf("----------------------------------------------------------------------------------\n"); + + while (NULL != bss) + { + size_t len = strlen((const char *)bss->ssid); + memcpy(ssid, bss->ssid, len); + ssid[len] = 0; + + printf("%32s (" MACSTR ") RSSI: %02d, security: %s\n", ssid, + MAC2STR(bss->bssid), bss->rssi, auth_modes[bss->authmode]); + + bss = bss->next.stqe_next; + } +} + +static void scan_task(void *arg) +{ + while (true) + { + sdk_wifi_station_scan(NULL, scan_done_cb); + vTaskDelay(5000 / portTICK_PERIOD_MS); + } +} + +void user_init() +{ + uart_set_baud(0, 115200); + printf("SDK version:%s\n\n", sdk_system_get_sdk_version()); + + // We can scan only in station mode + sdk_wifi_set_opmode(STATION_MODE); + + xTaskCreate(scan_task, "scan", 512, NULL, 2, NULL); +}