You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

65 lines
1.7 KiB

#include <WiFi.h>
#include <WiFiMulti.h>
#include <Preferences.h>
#include "hardware.h"
#include "wifi.h"
using namespace std;
Wifi::Wifi() {}
void Wifi::reconnectTask(void* parameters) {
while(true) {
if(wifiMulti.run() != WL_CONNECTED) {
Serial.println("WiFi not connected!");
}
vTaskDelay(3000 / portTICK_PERIOD_MS);
}
Serial.println("WiFi disconnecting!");
WiFi.disconnect();
vTaskDelete(NULL);
}
void Wifi::cTaskWrapper(void* parameters) {
static_cast<Wifi*>(parameters)->reconnectTask(NULL);
}
void Wifi::connect() {
wifiMulti.addAP(WIFI_SSID, WIFI_PASSWORD);
Serial.println("Connecting to WiFi network");
if(wifiMulti.run() == WL_CONNECTED) {
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
xTaskCreate(
&cTaskWrapper, /* Task function. */
"wifiReconnectTask", /* String with name of task. */
1024, /* Stack size in words. */
this, /* Parameter passed as input of the task */
1, /* Priority of the task. */
&wifiTaskHandle); /* Task handle. */
}
void Wifi::disconnect() {
}
size_t Wifi::getStoredPassword(const char* ssid, char* value) {
Preferences preferences;
preferences.begin("wifi-pwd", false);
size_t len = preferences.getString(ssid, value, 64);
preferences.end();
return len;
}
size_t Wifi::setStoredPassword(const char* ssid, char* value) {
Preferences preferences;
preferences.begin("wifi-pwd", false);
size_t len = preferences.putString(ssid, value);
preferences.end();
return len;
}