diff options
Diffstat (limited to 'src/tempmodule')
-rw-r--r-- | src/tempmodule/main.ino | 17 |
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) |