diff --git a/Caracal_Firmware.ino b/Caracal_Firmware.ino
index 9a3ebc0..6a1ab92 100644
--- a/Caracal_Firmware.ino
+++ b/Caracal_Firmware.ino
@@ -74,15 +74,17 @@ enum UpdateStatus {
#define PIN_CONFIG 0
#endif
-#define WIFI_TIMEOUT 10000
#define UPDATE_START_DELAY 3000
-#define EEPROM_SIZE 128
+#define EEPROM_SIZE 129
+
+#define DEFAULT_HOSTNAME "xatLabs-WiFi-Module"
+#define DEFAULT_STA_TIMEOUT 10
/*
GLOBAL VARIABLES
*/
-unsigned long FW_VERSION = 1907010001; // Changes with each release; must always increase
+unsigned long FW_VERSION = 2011110001; // Changes with each release; must always increase
unsigned long SP_VERSION = 0; // Loaded from SPIFFS; changed with each SPIFFS build; must always increase (uses timestamp as version)
// FW & SPIFFS update settings
@@ -111,6 +113,7 @@ String STA_PASS;
String STA_HOSTNAME;
char STA_HOSTNAME_CHAR[33];
bool STA_SETUP = false;
+unsigned char STA_TIMEOUT = DEFAULT_STA_TIMEOUT;
// Variables for Access Point WiFi
String AP_SSID = "xatLabs WiFi Module";
@@ -208,8 +211,9 @@ bool loadConfig() {
STA_HOSTNAME += curChar;
hostnameSetup = true;
}
- if (STA_HOSTNAME == "") STA_HOSTNAME = "xatLabs-WiFi-Module";
+ if (STA_HOSTNAME == "") STA_HOSTNAME = DEFAULT_HOSTNAME;
STA_HOSTNAME.toCharArray(STA_HOSTNAME_CHAR, 32);
+ STA_TIMEOUT = EEPROM.read(128);
STA_SETUP = (ssidSetup && passSetup);
return true;
@@ -236,6 +240,7 @@ bool saveConfig() {
for (byte i = 0; i < STA_HOSTNAME.length(); i++) {
EEPROM.write(i + 96, STA_HOSTNAME.charAt(i));
}
+ EEPROM.write(128, STA_TIMEOUT);
EEPROM.commit();
return true;
@@ -357,6 +362,9 @@ void handleRoot() {
c += "
";
c += "";
@@ -388,6 +396,9 @@ void handleRoot() {
void handle_wifi_setup() {
STA_SSID = server.arg("ssid");
STA_PASS = server.arg("password");
+ String timeoutStr = server.arg("timeout");
+ unsigned int timeout = atoi(timeoutStr.c_str());
+ STA_TIMEOUT = (timeout >= 5 && timeout <= 254) ? timeout : STA_TIMEOUT;
STA_SETUP = true;
saveConfig();
server.sendHeader("Location", "/", true);
@@ -545,10 +556,11 @@ void printIPAddress() {
IBIS_GSP(1, "WLAN-Modul", IP_ADDRESS);
}
-void resetWiFiCredentials() {
+void resetWiFiSettings() {
STA_SSID = "";
STA_PASS = "";
- STA_HOSTNAME = "xatLabs-WiFi-Module";
+ STA_HOSTNAME = DEFAULT_HOSTNAME;
+ STA_TIMEOUT = DEFAULT_STA_TIMEOUT;
STA_SETUP = false;
saveConfig();
ESP.restart();
@@ -729,13 +741,19 @@ void setup() {
pinMode(PIN_CONFIG, INPUT_PULLUP);
//attachInterrupt(digitalPinToInterrupt(PIN_CONFIG), ISR_config, CHANGE);
- EEPROM.begin(EEPROM_SIZE); // 32 for SSID, 64 for PSK, 32 for hostname
+ EEPROM.begin(EEPROM_SIZE); // 32 for SSID, 64 for PSK, 32 for hostname, 1 for timeout
// Reset hostname area of EEPROM if required
if (EEPROM.read(96) == 0xff) {
reset_EEPROM(96, 128);
}
+ // Reset timeout byte of EEPROM if required
+ if (EEPROM.read(128) == 0xff) {
+ EEPROM.write(128, STA_TIMEOUT);
+ EEPROM.commit();
+ }
+
#ifdef INIT_EEPROM
reset_EEPROM();
#endif
@@ -755,7 +773,7 @@ void setup() {
WiFi.begin(STA_SSID.c_str(), STA_PASS.c_str());
wifiTimer = millis();
while (WiFi.status() != WL_CONNECTED) {
- if ((millis() - wifiTimer) > WIFI_TIMEOUT) {
+ if ((millis() - wifiTimer) > STA_TIMEOUT * 1000) {
wifiTimedOut = true;
break;
}
@@ -920,7 +938,7 @@ void loop() {
}
case 10: {
// Reset WiFi Credentials
- resetWiFiCredentials();
+ resetWiFiSettings();
break;
}
default: {
@@ -929,4 +947,3 @@ void loop() {
}
}
}
-
diff --git a/firmware1.bin b/firmware1.bin
index f77aae3..fdb4541 100644
Binary files a/firmware1.bin and b/firmware1.bin differ
diff --git a/firmware1.version b/firmware1.version
index 6fbb61b..d44bc74 100644
--- a/firmware1.version
+++ b/firmware1.version
@@ -1 +1 @@
-1907010001
\ No newline at end of file
+2011110001
\ No newline at end of file
diff --git a/firmware2.bin b/firmware2.bin
index 6956825..c464bfd 100644
Binary files a/firmware2.bin and b/firmware2.bin differ
diff --git a/firmware2.version b/firmware2.version
index 6fbb61b..d44bc74 100644
--- a/firmware2.version
+++ b/firmware2.version
@@ -1 +1 @@
-1907010001
\ No newline at end of file
+2011110001
\ No newline at end of file