diff options
Diffstat (limited to 'src/tempmodule')
-rw-r--r-- | src/tempmodule/main.ino | 37 |
1 files changed, 28 insertions, 9 deletions
diff --git a/src/tempmodule/main.ino b/src/tempmodule/main.ino index 4bb3ad9..29ebc11 100644 --- a/src/tempmodule/main.ino +++ b/src/tempmodule/main.ino @@ -53,7 +53,8 @@ static void discover_client(void); static void get_data(short int * const data); static short int smooth_temp(short int temp); void toggle_wifi(void); -void wifiled_toggle(void); +void wifiled_on(void); +void wifiled_off(void); void setup(void) { @@ -70,7 +71,10 @@ void setup(void) indicator_init(0, NULL); + WiFi.mode(WIFI_OFF); WiFi.forceSleepBegin(); + yield(); + indicator_update(3450, 1); delay(1000); indicator_update(3350, 1); @@ -149,12 +153,18 @@ static int udp_flush(void) static int wifi_connect(const char * const ssid, const char * const password, const char doblink, const int ledpin) { + size_t i = 30; + if (wifistate) { return 1; } - wifiled_toggle(); + wifistate = 1; + wifiled_on(); WiFi.forceSleepWake(); + yield(); + WiFi.persistent(0); + WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); do { @@ -164,13 +174,13 @@ static int wifi_connect(const char * const ssid, const char * const password, co delay (500); } /* in case the wifi off interrupt gets triggered while trying to connect */ - if (!wifidesired) { + if (!wifidesired || !(--i)) { + wifidesired = 0; wifi_disconnect(); return 1; } } while (WiFi.status() != WL_CONNECTED); - wifistate = 1; return 0; } @@ -180,10 +190,12 @@ static void wifi_disconnect(void) return; } - wifiled_toggle(); + wifiled_off(); Udp.stop(); WiFi.disconnect(1); + WiFi.mode(WIFI_OFF); WiFi.forceSleepBegin(); + yield(); wifistate = 0; } @@ -289,13 +301,20 @@ void toggle_wifi(void) wifidesired = !wifidesired; } -void wifiled_toggle(void) +void wifiled_on(void) +{ + if (!wifiledstate) { + digitalWrite(wifiled, HIGH); + } + + wifiledstate = 1; +} + +void wifiled_off(void) { if (wifiledstate) { digitalWrite(wifiled, LOW); - } else { - digitalWrite(wifiled, HIGH); } - wifiledstate = !wifiledstate; + wifiledstate = 0; } |