diff --git a/src/driver/drv_bl_shared.c b/src/driver/drv_bl_shared.c
index 36fb5c9a2..0c1489f8b 100644
--- a/src/driver/drv_bl_shared.c
+++ b/src/driver/drv_bl_shared.c
@@ -108,15 +108,15 @@ void BL09XX_AppendInformationToHTTPIndexPage(http_request_t *request)
if(NTP_IsTimeSynced() == true)
{
- hprintf128(request, "Today: %1.1f Wh DailyStats: [", dailyStats[0]);
+ hprintf255(request, "Today: %1.1f Wh DailyStats: [", dailyStats[0]);
for(i = 1; i < 8; i++)
{
if (i==1)
- hprintf128(request, "%1.1f", dailyStats[i]);
+ hprintf255(request, "%1.1f", dailyStats[i]);
else
- hprintf128(request, ",%1.1f", dailyStats[i]);
+ hprintf255(request, ",%1.1f", dailyStats[i]);
}
- hprintf128(request, "]");
+ hprintf255(request, "]");
} else {
if(DRV_IsRunning("NTP")==false)
hprintf255(request,"NTP driver is not started, daily stats disbled.");
diff --git a/src/driver/drv_ntp.c b/src/driver/drv_ntp.c
index dc5fb925a..1560e3024 100644
--- a/src/driver/drv_ntp.c
+++ b/src/driver/drv_ntp.c
@@ -268,17 +268,15 @@ void NTP_OnEverySecond() {
void NTP_AppendInformationToHTTPIndexPage(http_request_t* request)
{
- char tmp[128];
struct tm *ltm;
ltm = localtime(&g_time);
if (g_synced == true)
- sprintf(tmp, "
NTP: Local Time: %04d/%02d/%02d %02d:%02d:%02d
",
+ hprintf255(request, "NTP: Local Time: %04d/%02d/%02d %02d:%02d:%02d
",
ltm->tm_year+1900, ltm->tm_mon+1, ltm->tm_mday, ltm->tm_hour, ltm->tm_min, ltm->tm_sec);
else
- sprintf(tmp, "NTP: Syncing....");
- hprintf128(request,tmp);
+ hprintf255(request, "NTP: Syncing....");
}
bool NTP_IsTimeSynced()
diff --git a/src/httpserver/http_fns.c b/src/httpserver/http_fns.c
index 79b9d01a2..9c1a60add 100644
--- a/src/httpserver/http_fns.c
+++ b/src/httpserver/http_fns.c
@@ -545,9 +545,9 @@ int http_fn_index(http_request_t* request) {
PingWatchDog_GetTotalLost(), PingWatchDog_GetTotalReceived());
if (Main_HasWiFiConnected())
{
- hprintf128(request, "Wifi RSSI: %i
", HAL_GetWifiStrength());
+ hprintf255(request, "Wifi RSSI: %i
", HAL_GetWifiStrength());
}
- hprintf128(request, "MQTT State: %s RES: %d(%s)
", (Main_HasMQTTConnected() == 1) ? "connected" : "disconnected",
+ hprintf255(request, "MQTT State: %s RES: %d(%s)
", (Main_HasMQTTConnected() == 1) ? "connected" : "disconnected",
MQTT_GetConnectResult(), get_error_name(MQTT_GetConnectResult()));
hprintf255(request, "MQTT ErrMsg: %s
", (MQTT_GetStatusMessage() != NULL) ? MQTT_GetStatusMessage() : "");
hprintf255(request, "MQTT Stats:CONN: %d PUB: %d RECV: %d ERR: %d
", MQTT_GetConnectEvents(),
diff --git a/src/new_common.h b/src/new_common.h
index b90f9fe54..07e3ee143 100644
--- a/src/new_common.h
+++ b/src/new_common.h
@@ -290,6 +290,7 @@ void Main_OnPingCheckerReply(int ms);
// new_ping.c
void Main_SetupPingWatchDog(const char *target/*, int delayBetweenPings_Seconds*/);
+void Main_PingWatchDogSilent();
int PingWatchDog_GetTotalLost();
int PingWatchDog_GetTotalReceived();
diff --git a/src/new_ping.c b/src/new_ping.c
index c472f4dcc..2a245efbd 100644
--- a/src/new_ping.c
+++ b/src/new_ping.c
@@ -57,6 +57,9 @@ static struct raw_pcb *ping_pcb;
static unsigned int ping_lost = 0;
static unsigned int ping_received = 0;
static int bReceivedLastOneSend = -1;
+static bool ping_handler_active = false;
+static bool ping_handler_silent = false;
+
//static int g_delayBetweenPings_MS = 1000 / portTICK_PERIOD_MS;
static void ping_prepare_echo( struct icmp_echo_hdr *iecho, u16_t len)
@@ -117,11 +120,13 @@ static void ping_timeout(void *arg)
{
struct raw_pcb *pcb = (struct raw_pcb*)arg;
- LWIP_ASSERT("ping_timeout: no pcb given!", pcb != NULL);
+ if (ping_handler_silent == false)
+ {
+ LWIP_ASSERT("ping_timeout: no pcb given!", pcb != NULL);
- ping_send(pcb, &ping_target);
-
- // void sys_timeout (u32_t msecs, sys_timeout_handler handler, void *arg)
+ ping_send(pcb, &ping_target);
+ }
+ // void sys_timeout (u32_t msecs, sys_timeout_handler handler, void *arg)
sys_timeout(PING_DELAY, ping_timeout, pcb);
}
@@ -171,17 +176,28 @@ void Main_SetupPingWatchDog(const char *target/*, int delayBetweenPings_Seconds*
{
// none sent yet.
bReceivedLastOneSend = -1;
- //g_delayBetweenPings_MS = delayBetweenPings_Seconds * 1000;
- ///ipaddr_aton("192.168.0.1",&ping_target)
- //ipaddr_aton("8.8.8.8",&ping_target);
- ipaddr_aton(target,&ping_target);
+ if (ping_handler_active == false)
+ {
+ //g_delayBetweenPings_MS = delayBetweenPings_Seconds * 1000;
+ ///ipaddr_aton("192.168.0.1",&ping_target)
+ //ipaddr_aton("8.8.8.8",&ping_target);
+ ipaddr_aton(target,&ping_target);
- ping_pcb = raw_new(IP_PROTO_ICMP);
- LWIP_ASSERT("ping_pcb != NULL", ping_pcb != NULL);
+ ping_pcb = raw_new(IP_PROTO_ICMP);
+ LWIP_ASSERT("ping_pcb != NULL", ping_pcb != NULL);
+
+ raw_recv(ping_pcb, ping_recv, NULL);
+ raw_bind(ping_pcb, IP_ADDR_ANY);
+ // void sys_timeout (u32_t msecs, sys_timeout_handler handler, void *arg)
+ sys_timeout(PING_DELAY, ping_timeout, ping_pcb);
+ }
+ ping_handler_active = true;
+ ping_handler_silent = false;
- raw_recv(ping_pcb, ping_recv, NULL);
- raw_bind(ping_pcb, IP_ADDR_ANY);
- // void sys_timeout (u32_t msecs, sys_timeout_handler handler, void *arg)
- sys_timeout(PING_DELAY, ping_timeout, ping_pcb);
+}
+
+void Main_PingWatchDogSilent()
+{
+ ping_handler_silent = true;
}
diff --git a/src/user_main.c b/src/user_main.c
index 889f24d12..05493eb83 100644
--- a/src/user_main.c
+++ b/src/user_main.c
@@ -140,9 +140,15 @@ void Main_OnWiFiStatusChange(int code)
case WIFI_STA_DISCONNECTED:
// try to connect again in few seconds
if (g_bHasWiFiConnected != 0)
+ {
HAL_DisconnectFromWifi();
+ Main_PingWatchDogSilent();
+ }
g_connectToWiFi = 15;
g_bHasWiFiConnected = 0;
+ g_timeSinceLastPingReply = -1;
+ g_bPingWatchDogStarted = 0;
+ g_startPingWatchDogAfter = 0;
ADDLOGF_INFO("Main_OnWiFiStatusChange - WIFI_STA_DISCONNECTED\r\n");
break;
case WIFI_STA_AUTH_FAILED:
@@ -227,10 +233,17 @@ void Main_OnEverySecond()
g_timeSinceLastPingReply++;
if(g_timeSinceLastPingReply >= CFG_GetPingDisconnectedSecondsToRestart())
{
- ADDLOGF_INFO("[Ping watchdog] No ping replies within %i seconds. Will try to reconnect.\n",g_timeSinceLastPingReply);
- HAL_DisconnectFromWifi();
- g_bHasWiFiConnected = 0;
- g_connectToWiFi = 10;
+ if (g_bHasWiFiConnected != 0)
+ {
+ ADDLOGF_INFO("[Ping watchdog] No ping replies within %i seconds. Will try to reconnect.\n",g_timeSinceLastPingReply);
+ HAL_DisconnectFromWifi();
+ g_bHasWiFiConnected = 0;
+ g_connectToWiFi = 10;
+ g_timeSinceLastPingReply = -1;
+ g_bPingWatchDogStarted = 0;
+ g_startPingWatchDogAfter = 0;
+ Main_PingWatchDogSilent();
+ }
}
}