aboutsummaryrefslogtreecommitdiff
path: root/client/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'client/main.c')
-rw-r--r--client/main.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/client/main.c b/client/main.c
index 8fe6d8e..00f686a 100644
--- a/client/main.c
+++ b/client/main.c
@@ -1,10 +1,15 @@
#include "main.h"
#include "../shared/errcatch.h"
+#include "../shared/consts.h"
#include "serial.h"
#include "setup.h"
#include "ui.h"
+#include "time.h"
+#include "commands.h"
-w2_s_client_state g_w2_state;
+w2_s_client_state g_w2_state = {
+ .ping_received = true
+};
int main(int argc, char **argv) {
w2_client_setup(argc, argv);
@@ -13,5 +18,17 @@ int main(int argc, char **argv) {
w2_serial_main();
w2_errcatch_main();
w2_ui_main();
+
+ if (!g_w2_state.ping_received && w2_timer_end(W2_TIMER_PING) > W2_PING_TIMEOUT) {
+ g_w2_state.ping_timeout = true;
+ g_w2_state.connected = false;
+ w2_errcatch_throw(W2_E_WARN_PING_TIMEOUT);
+ }
+
+ if ((g_w2_state.ping_received && w2_timer_end(W2_TIMER_PING) > W2_PING_FREQUENCY) || g_w2_state.ping_timeout) {
+ g_w2_state.ping_timeout = false;
+ g_w2_state.ping_received = false;
+ w2_send_ping();
+ }
}
}