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
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;
|
|
}
|
|
|