diff --git a/CYD-Klipper/src/core/data_setup.cpp b/CYD-Klipper/src/core/data_setup.cpp index 4d8927e..39ee59b 100644 --- a/CYD-Klipper/src/core/data_setup.cpp +++ b/CYD-Klipper/src/core/data_setup.cpp @@ -12,6 +12,7 @@ const char *printer_state_messages[] = { "Printing"}; Printer printer = {0}; +int klipper_request_consecutive_fail_count = 0; void send_gcode(bool wait, const char *gcode) { @@ -46,6 +47,7 @@ void fetch_printer_data() int httpCode = client.GET(); if (httpCode == 200) { + klipper_request_consecutive_fail_count = 0; String payload = client.getString(); DynamicJsonDocument doc(4096); deserializeJson(doc, payload); @@ -159,6 +161,7 @@ void fetch_printer_data() } else { + klipper_request_consecutive_fail_count++; Serial.printf("Failed to fetch printer data: %d\n", httpCode); } } @@ -171,9 +174,8 @@ void data_loop() if (millis() - last_data_update < data_update_interval) return; - last_data_update = millis(); - fetch_printer_data(); + last_data_update = millis(); } void data_setup() diff --git a/CYD-Klipper/src/core/data_setup.h b/CYD-Klipper/src/core/data_setup.h index 4e08ab5..3b2a151 100644 --- a/CYD-Klipper/src/core/data_setup.h +++ b/CYD-Klipper/src/core/data_setup.h @@ -28,6 +28,7 @@ typedef struct _Printer { } Printer; extern Printer printer; +extern int klipper_request_consecutive_fail_count; #define DATA_PRINTER_STATE 1 #define DATA_PRINTER_DATA 2 diff --git a/CYD-Klipper/src/main.cpp b/CYD-Klipper/src/main.cpp index 1e03eb6..a517416 100644 --- a/CYD-Klipper/src/main.cpp +++ b/CYD-Klipper/src/main.cpp @@ -34,6 +34,7 @@ void setup() { void loop(){ wifi_ok(); + ip_ok(); data_loop(); lv_timer_handler(); lv_task_handler(); diff --git a/CYD-Klipper/src/ui/ip_setup.cpp b/CYD-Klipper/src/ui/ip_setup.cpp index 65c8a9e..04f6d9d 100644 --- a/CYD-Klipper/src/ui/ip_setup.cpp +++ b/CYD-Klipper/src/ui/ip_setup.cpp @@ -3,6 +3,7 @@ #include "lvgl.h" #include #include +#include "core/data_setup.h" bool connect_ok = false; lv_obj_t * ipEntry; @@ -117,6 +118,7 @@ int retry_count = 0; void ip_init(){ connect_ok = false; + retry_count = 0; ip_init_inner(); @@ -133,4 +135,12 @@ void ip_init(){ lv_label_set_text(label, retry_count_text.c_str()); } } +} + +void ip_ok(){ + if (klipper_request_consecutive_fail_count > 5){ + ip_init(); + klipper_request_consecutive_fail_count = 0; + lv_msg_send(DATA_PRINTER_STATE, &printer); + } } \ No newline at end of file diff --git a/CYD-Klipper/src/ui/ip_setup.h b/CYD-Klipper/src/ui/ip_setup.h index aa41ec1..a9d7ece 100644 --- a/CYD-Klipper/src/ui/ip_setup.h +++ b/CYD-Klipper/src/ui/ip_setup.h @@ -1 +1,2 @@ -void ip_init(); \ No newline at end of file +void ip_init(); +void ip_ok(); \ No newline at end of file