esp8266-ws2801d/src/wlan.cpp

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();
*/
}