114 lines
2.1 KiB
C++
114 lines
2.1 KiB
C++
#include <Arduino.h>
|
|
#include <ESP8266WiFi.h>
|
|
|
|
void wlan_reset(void)
|
|
{
|
|
// Set WiFi to station mode and disconnect from an AP if it was previously connected
|
|
WiFi.mode(WIFI_STA);
|
|
WiFi.disconnect();
|
|
delay(100);
|
|
}
|
|
|
|
int wlan_connectto(const char *ssid, const char *passwd)
|
|
{
|
|
int timeout = 60; // half-seconds
|
|
|
|
Serial.print("WLAN: connecting to ");
|
|
Serial.print(ssid);
|
|
|
|
if(passwd) {
|
|
WiFi.begin(ssid, passwd);
|
|
} else {
|
|
WiFi.begin(ssid);
|
|
}
|
|
|
|
while(WiFi.status() != WL_CONNECTED) {
|
|
Serial.print(".");
|
|
delay(500);
|
|
|
|
if(--timeout == 0) {
|
|
Serial.println(" timeout :-(");
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
Serial.println(" connected.");
|
|
|
|
Serial.print("WLAN: IP address: ");
|
|
Serial.println(WiFi.localIP());
|
|
|
|
return 0;
|
|
}
|
|
|
|
int wlan_connect_any_open(void)
|
|
{
|
|
Serial.println("WLAN: scan start");
|
|
|
|
// WiFi.scanNetworks will return the number of networks found
|
|
int n = WiFi.scanNetworks();
|
|
Serial.println("WLAN: scan done");
|
|
Serial.print("WLAN: ");
|
|
Serial.print(n);
|
|
Serial.println(" networks found");
|
|
|
|
String ssid = "";
|
|
for(int i = 0; i < n; i++)
|
|
{
|
|
if(WiFi.encryptionType(i) == ENC_TYPE_NONE) {
|
|
if(wlan_connectto(ssid.c_str(), NULL) == 0) {
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
if(ssid == "") {
|
|
Serial.println("WLAN: No open networks found to connect to.");
|
|
|
|
return -2;
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
|
|
void wlan_print_conninfo(void)
|
|
{
|
|
// print your WiFi shield's IP address:
|
|
IPAddress ip = WiFi.localIP();
|
|
Serial.print("IP Address: ");
|
|
Serial.println(ip);
|
|
|
|
// print your MAC address:
|
|
byte mac[6];
|
|
WiFi.macAddress(mac);
|
|
Serial.print("MAC address: ");
|
|
for(int i = 5; i > 0; i--) {
|
|
Serial.print(mac[i],HEX);
|
|
Serial.print(":");
|
|
}
|
|
Serial.println(mac[0],HEX);
|
|
|
|
// BSSID
|
|
byte *bssid = WiFi.BSSID();
|
|
Serial.print("BSSID: ");
|
|
for(int i = 5; i > 0; i--) {
|
|
Serial.print(bssid[i],HEX);
|
|
Serial.print(":");
|
|
}
|
|
Serial.println(bssid[0],HEX);
|
|
|
|
// SSID
|
|
Serial.print("SSID: ");
|
|
Serial.println(WiFi.SSID());
|
|
|
|
// print the received signal strength:
|
|
Serial.print("RSSI: ");
|
|
Serial.println(WiFi.RSSI());
|
|
|
|
/*
|
|
// print the encryption type:
|
|
Serial.print("Encryption: ");
|
|
Serial.println(WiFi.encryptionType(),HEX);
|
|
Serial.println();
|
|
*/
|
|
}
|