summaryrefslogtreecommitdiffstats
path: root/src/tempmodule/main.ino
diff options
context:
space:
mode:
authorGravatar Gediminas Jakutis <gediminas@varciai.lt> 2018-02-15 10:59:34 +0200
committerGravatar Gediminas Jakutis <gediminas@varciai.lt> 2018-02-15 10:59:34 +0200
commit64d6165f21664ec9bd73853a2fe631cd08a06925 (patch)
tree94afeace8bcae0002249ffb595c3bffd538be2bd /src/tempmodule/main.ino
parent94b1a01f13b23b4dbc3885f5619a76b09603645a (diff)
downloadcoffeetemp-64d6165f21664ec9bd73853a2fe631cd08a06925.tar.gz
coffeetemp-64d6165f21664ec9bd73853a2fe631cd08a06925.tar.bz2
coffeetemp-64d6165f21664ec9bd73853a2fe631cd08a06925.zip
tempmodule: allow interrupting a WiFi connect attempt.
Diffstat (limited to 'src/tempmodule/main.ino')
-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)