mirror of
https://gitlab.com/wirelos/sprocket-lib.git
synced 2025-12-15 21:18:21 +01:00
73 lines
2.1 KiB
C++
73 lines
2.1 KiB
C++
#include "WiFiNet.h"
|
|
|
|
WiFiNet::WiFiNet(
|
|
int stationMode,
|
|
const char* stationSSID,
|
|
const char* stationPassword,
|
|
const char* apSSID,
|
|
const char* apPassword,
|
|
const char* hostname,
|
|
int connectTimeout){
|
|
config.stationMode = stationMode;
|
|
config.stationSSID = String(stationSSID);
|
|
config.stationPassword = String(stationPassword);
|
|
config.apSSID = String(apSSID);
|
|
config.apPassword = String(apPassword);
|
|
config.hostname = String(hostname);
|
|
config.connectTimeout = connectTimeout;
|
|
}
|
|
|
|
int WiFiNet::connect(){
|
|
config.fromFile("/config.json");
|
|
WiFi.hostname(config.hostname);
|
|
Serial.println("Hostname: " + config.hostname);
|
|
if(!connectStation()) {
|
|
createAccessPoint();
|
|
}
|
|
startDNS();
|
|
return 1;
|
|
}
|
|
|
|
int WiFiNet::connectStation(){
|
|
if(config.stationMode == 0) return 0;
|
|
|
|
int wifiConnectStart = millis();
|
|
WiFi.mode(WIFI_STA);
|
|
WiFi.begin(config.stationSSID.c_str(), config.stationPassword.c_str());
|
|
Serial.println("connect to " + config.stationSSID);
|
|
|
|
// TODO use tasks
|
|
while (WiFi.status() != WL_CONNECTED) {
|
|
delay(500);
|
|
Serial.print(".");
|
|
if(millis() - wifiConnectStart >= (uint)config.connectTimeout) {
|
|
Serial.println("wifi connect timeout");
|
|
return 0;
|
|
}
|
|
}
|
|
Serial.println("IP address: " + WiFi.localIP().toString());
|
|
Serial.println(WiFi.localIP().toString());
|
|
return 1;
|
|
}
|
|
|
|
int WiFiNet::createAccessPoint(){
|
|
Serial.println("Starting SoftAP: " + String(config.apSSID));
|
|
WiFi.disconnect();
|
|
WiFi.mode(WIFI_AP);
|
|
WiFi.softAP(config.apSSID.c_str(), config.apPassword.c_str());
|
|
String softApPrt = "SoftAP IP: " + WiFi.softAPIP().toString();
|
|
Serial.println(softApPrt.c_str());
|
|
return 1;
|
|
}
|
|
|
|
// TODO make user configurable services
|
|
int WiFiNet::startDNS() {
|
|
if (!MDNS.begin(config.hostname.c_str())) {
|
|
Serial.println("Error setting up MDNS responder!");
|
|
return 0;
|
|
} else {
|
|
Serial.println("mDNS responder started");
|
|
MDNS.addService("http", "tcp", 80);
|
|
}
|
|
return 1;
|
|
} |