fix AP+DHCP mode

This commit is contained in:
Kevin Matz 2020-12-16 15:58:57 -05:00
parent 685c266e9d
commit 7b5807fba8

View File

@ -50,6 +50,7 @@ struct config_ {
String pwd; String pwd;
wifi_mode_t mode; wifi_mode_t mode;
bool dhcp;
String ip; String ip;
String subnet; String subnet;
String gateway; String gateway;
@ -138,6 +139,7 @@ bool loadConfig() {
config.mode = (wifi_mode_t)prefs.getChar("wifi_mode", WIFI_AP); config.mode = (wifi_mode_t)prefs.getChar("wifi_mode", WIFI_AP);
config.hostname = prefs.getString("hostname", "WiFlash"); config.hostname = prefs.getString("hostname", "WiFlash");
config.dhcp = prefs.getBool("dhcp", true);
config.ip = prefs.getString("ip", "192.168.1.1"); config.ip = prefs.getString("ip", "192.168.1.1");
config.subnet = prefs.getString("subnet", "255.255.255.0"); config.subnet = prefs.getString("subnet", "255.255.255.0");
config.gateway = prefs.getString("gateway", ""); config.gateway = prefs.getString("gateway", "");
@ -215,14 +217,24 @@ void setup() {
//// start WiFi: //// start WiFi:
// set IPv4 // set IPv4
Serial.println("Starting WiFi."); Serial.println("Starting WiFi.");
WiFi.mode(WIFI_STA);
WiFi.setHostname(config.hostname.c_str()); WiFi.setHostname(config.hostname.c_str());
IPAddress ip_, gateway_, subnet_; WiFi.mode(config.mode);
ip_.fromString(config.ip); if (!config.dhcp) {
gateway_.fromString(config.gateway); IPAddress ip_, gateway_, subnet_;
subnet_.fromString(config.subnet); ip_.fromString(config.ip);
WiFi.config(ip_, gateway_, subnet_); gateway_.fromString(config.gateway);
WiFi.begin(config.ssid.c_str(), config.pwd.c_str()); subnet_.fromString(config.subnet);
WiFi.config(ip_, gateway_, subnet_);
}
switch (config.mode) {
case WIFI_AP:
WiFi.softAP(config.ssid.c_str(), config.pwd.c_str());
break;
case WIFI_STA:
WiFi.begin(config.ssid.c_str(), config.pwd.c_str());
break;
}
Serial.println("Disabling Bluetooth."); Serial.println("Disabling Bluetooth.");
btStop(); btStop();
@ -233,7 +245,6 @@ void setup() {
Serial.println("Starting HTTP interface."); Serial.println("Starting HTTP interface.");
startHTTPD(); startHTTPD();
//// start fixtures hardware: //// start fixtures hardware:
// battery monitor // battery monitor
pinMode(battery_sense, INPUT); pinMode(battery_sense, INPUT);
@ -278,7 +289,8 @@ void setup() {
Arduino process loop Arduino process loop
*/ */
void loop() { void loop() {
if (WiFi.status() != WL_CONNECTED) { if (config.mode == WIFI_STA &&
WiFi.status() != WL_CONNECTED) {
Serial.println("Waiting for WiFi..."); Serial.println("Waiting for WiFi...");
delay(1000); delay(1000);
return; return;