summaryrefslogtreecommitdiffstats
path: root/src/tempmodule
diff options
context:
space:
mode:
authorGravatar Gediminas Jakutis <gediminas@varciai.lt> 2018-05-02 16:57:21 +0300
committerGravatar Gediminas Jakutis <gediminas@varciai.lt> 2018-05-02 16:57:21 +0300
commitf6acbbc474e956c46ef09f85f74e964c773cc754 (patch)
treea14b3022861f6bf0586f4ebcd46c45b0106540eb /src/tempmodule
parentd5ac1ee5534710e105b699d2069b6b6f9b6869d3 (diff)
downloadcoffeetemp-f6acbbc474e956c46ef09f85f74e964c773cc754.tar.gz
coffeetemp-f6acbbc474e956c46ef09f85f74e964c773cc754.tar.bz2
coffeetemp-f6acbbc474e956c46ef09f85f74e964c773cc754.zip
tempmodule: wifi logic improvements.
Diffstat (limited to 'src/tempmodule')
-rw-r--r--src/tempmodule/main.ino37
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;
}