summaryrefslogtreecommitdiff
path: root/client/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'client/main.c')
-rw-r--r--client/main.c34
1 files changed, 33 insertions, 1 deletions
diff --git a/client/main.c b/client/main.c
index 76e8197..b5af0e8 100644
--- a/client/main.c
+++ b/client/main.c
@@ -1 +1,33 @@
-int main() { return 0; }
+#include "main.h"
+#include "../shared/consts.h"
+#include "../shared/errcatch.h"
+#include "commands.h"
+#include "serial.h"
+#include "setup.h"
+#include "time.h"
+#include "ui.h"
+
+w2_s_client_state g_w2_state = {.ping_received = true};
+
+int main(int argc, char **argv) {
+ w2_client_setup(argc, argv);
+
+ while (1) {
+ 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();
+ }
+ }
+}