From fcdce6c5bf01bb64e74e1fb814ed7641a9b7c281 Mon Sep 17 00:00:00 2001 From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com> Date: Sun, 27 Oct 2024 21:49:43 +0100 Subject: [PATCH] A --- .../klipper/klipper_printer_integration.cpp | 44 +++++++++++++------ .../klipper/klipper_printer_integration.hpp | 10 ++++- CYD-Klipper/src/ui/ip_setup.cpp | 33 +++----------- CYD-Klipper/src/ui/panels/printer_panel.cpp | 1 - 4 files changed, 45 insertions(+), 43 deletions(-) diff --git a/CYD-Klipper/src/core/klipper/klipper_printer_integration.cpp b/CYD-Klipper/src/core/klipper/klipper_printer_integration.cpp index e8e8d7e..e639282 100644 --- a/CYD-Klipper/src/core/klipper/klipper_printer_integration.cpp +++ b/CYD-Klipper/src/core/klipper/klipper_printer_integration.cpp @@ -163,18 +163,7 @@ bool KlipperPrinter::execute_feature(PrinterFeatures feature) bool KlipperPrinter::connect() { - HTTPClient client; - configure_http_client(client, "/printer/info", false, 1000); - - int http_code; - try { - http_code = client.GET(); - return http_code == 200; - } - catch (...) { - LOG_LN("Failed to connect"); - return false; - } + return connection_test_klipper(printer_config) == ConnectionStatus::ConnectOk; } bool KlipperPrinter::fetch() @@ -778,7 +767,7 @@ Thumbnail KlipperPrinter::get_32_32_png_image_thumbnail(const char* gcode_filena configure_http_client(client, "/server/files/gcodes/" + urlEncode(img_filename_path), false, 2000); - int http_code = 0; + http_code = 0; try { http_code = client.GET(); @@ -818,4 +807,33 @@ Thumbnail KlipperPrinter::get_32_32_png_image_thumbnail(const char* gcode_filena free(img_filename_path); return thumbnail; +} + +ConnectionStatus connection_test_klipper(PrinterConfiguration* config) +{ + HTTPClient client; + + client.setTimeout(1000); + client.setConnectTimeout(1000); + client.begin("http://" + String(config->klipper_host) + ":" + String(config->klipper_port) + "/printer/info"); + + if (config->auth_configured) { + client.addHeader("X-Api-Key", config->klipper_auth); + } + + int http_code; + try { + http_code = client.GET(); + + if (http_code == 403) + { + return ConnectionStatus::ConnectAuthRequired; + } + + return http_code == 200 ? ConnectionStatus::ConnectOk : ConnectionStatus::ConnectFail; + } + catch (...) { + LOG_LN("Failed to connect"); + return ConnectionStatus::ConnectFail; + } } \ No newline at end of file diff --git a/CYD-Klipper/src/core/klipper/klipper_printer_integration.hpp b/CYD-Klipper/src/core/klipper/klipper_printer_integration.hpp index b43cae0..a144667 100644 --- a/CYD-Klipper/src/core/klipper/klipper_printer_integration.hpp +++ b/CYD-Klipper/src/core/klipper/klipper_printer_integration.hpp @@ -54,4 +54,12 @@ class KlipperPrinter : public BasePrinter int get_slicer_time_estimate_s(); void configure_http_client(HTTPClient &client, String url_part, bool stream, int timeout); void init_ui_panels(); -}; \ No newline at end of file +}; + +enum ConnectionStatus { + ConnectFail = 0, + ConnectOk = 1, + ConnectAuthRequired = 2, +}; + +ConnectionStatus connection_test_klipper(PrinterConfiguration* config); \ No newline at end of file diff --git a/CYD-Klipper/src/ui/ip_setup.cpp b/CYD-Klipper/src/ui/ip_setup.cpp index 6a4af88..859c15e 100644 --- a/CYD-Klipper/src/ui/ip_setup.cpp +++ b/CYD-Klipper/src/ui/ip_setup.cpp @@ -9,6 +9,7 @@ #include "macros.h" #include "../core/lv_setup.h" #include "serial/serial_console.h" +#include "../core/klipper/klipper_printer_integration.hpp" lv_obj_t * hostEntry; lv_obj_t * portEntry; @@ -46,30 +47,6 @@ static const lv_btnmatrix_ctrl_t hex_numpad_ctrl[] = { 1, 1, 1, 1, LV_KEYBOARD_CTRL_BTN_FLAGS | 1, }; -enum connection_status_t { - CONNECT_FAIL = 0, - CONNECT_OK = 1, - CONNECT_AUTH_REQUIRED = 2, -}; - -connection_status_t verify_ip(){ - SETUP_HTTP_CLIENT_FULL("/printer/info", true, 1000); - - int httpCode; - try { - httpCode = client.GET(); - - if (httpCode == 401) - return CONNECT_AUTH_REQUIRED; - - return httpCode == 200 ? CONNECT_OK : CONNECT_FAIL; - } - catch (...) { - LOG_LN("Failed to connect"); - return CONNECT_FAIL; - } -} - static void keyboard_event_ip_entry(lv_event_t * e) { lv_event_code_t code = lv_event_get_code(e); lv_obj_t * ta = lv_event_get_target(e); @@ -102,13 +79,13 @@ static void keyboard_event_ip_entry(lv_event_t * e) { strcpy(global_config.printer_config[global_config.printer_index].klipper_host, lv_textarea_get_text(hostEntry)); global_config.printer_config[global_config.printer_index].klipper_port = atoi(lv_textarea_get_text(portEntry)); - connection_status_t status = verify_ip(); - if (status == CONNECT_OK) + ConnectionStatus status = connection_test_klipper(&global_config.printer_config[global_config.printer_index]); + if (status == ConnectionStatus::ConnectOk) { global_config.printer_config[global_config.printer_index].ip_configured = true; write_global_config(); } - else if (status == CONNECT_AUTH_REQUIRED) + else if (status == ConnectionStatus::ConnectAuthRequired) { show_auth_entry(); } @@ -137,7 +114,7 @@ static void keyboard_event_auth_entry(lv_event_t * e) { global_config.printer_config[global_config.printer_index].auth_configured = true; strcpy(global_config.printer_config[global_config.printer_index].klipper_auth, txt); - if (verify_ip() == CONNECT_OK) + if (connection_test_klipper(&global_config.printer_config[global_config.printer_index]) == ConnectionStatus::ConnectOk) { global_config.printer_config[global_config.printer_index].ip_configured = true; global_config.printer_config[global_config.printer_index].setup_complete = true; diff --git a/CYD-Klipper/src/ui/panels/printer_panel.cpp b/CYD-Klipper/src/ui/panels/printer_panel.cpp index fefca49..765be06 100644 --- a/CYD-Klipper/src/ui/panels/printer_panel.cpp +++ b/CYD-Klipper/src/ui/panels/printer_panel.cpp @@ -166,7 +166,6 @@ static void btn_printer_secondary(lv_event_t * e) } global_config_delete_printer(config_index); - nav_buttons_setup(PANEL_PRINTER); } static void btn_printer_rename(lv_event_t * e)