summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/tempmodule/main.ino17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/tempmodule/main.ino b/src/tempmodule/main.ino
index d5f6758..83c3d6f 100644
--- a/src/tempmodule/main.ino
+++ b/src/tempmodule/main.ino
@@ -44,7 +44,7 @@ static void sleep(void);
static void udp_init_packet(IPAddress ip, const int port);
static void udp_push(const void * const data, const size_t size);
static int udp_flush(void);
-static void wifi_connect(const char * const ssid, const char * const password, const char doblink, const int ledpin);
+static int wifi_connect(const char * const ssid, const char * const password, const char doblink, const int ledpin);
static void wifi_disconnect(void);
static void blink_led(const int pin, const int ontime, const int offtime);
static void discover_client(void);
@@ -72,9 +72,10 @@ void loop(void)
udp_init_packet(ip, port);
if (wifidesired && !wifistate) {
- wifi_connect(ssid, password, 1, iled);
- Udp.begin(port);
- discover_client();
+ if (!wifi_connect(ssid, password, 1, iled)) {
+ Udp.begin(port);
+ discover_client();
+ }
}
if (!wifidesired && wifistate) {
@@ -130,7 +131,7 @@ static int udp_flush(void)
return Udp.endPacket();
}
-static void wifi_connect(const char * const ssid, const char * const password, const char doblink, const int ledpin)
+static int wifi_connect(const char * const ssid, const char * const password, const char doblink, const int ledpin)
{
wifiled_toggle();
@@ -143,9 +144,15 @@ static void wifi_connect(const char * const ssid, const char * const password, c
} else {
delay (500);
}
+ /* in case the wifi off interrupt gets triggered while trying to connect */
+ if (!wifidesired) {
+ wifi_disconnect();
+ return 1;
+ }
} while (WiFi.status() != WL_CONNECTED);
wifistate = 1;
+ return 0;
}
static void wifi_disconnect(void)