From f4498e95cd14da01c793e9d1b6d9ff2285db5b49 Mon Sep 17 00:00:00 2001 From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com> Date: Sun, 15 Dec 2024 22:06:01 +0100 Subject: [PATCH] Make octoprint work after testing --- CYD-Klipper/src/conf/global_config.cpp | 8 +-- CYD-Klipper/src/conf/global_config.h | 6 +-- .../core/bambu/bambu_printer_integration.cpp | 10 ++-- .../src/core/bambu/bambu_printer_parsers.cpp | 4 +- .../klipper/klipper_printer_integration.cpp | 8 +-- .../octoprint_printer_integration.cpp | 24 +++++---- .../octoprint/octoprint_printer_parsers.cpp | 6 ++- CYD-Klipper/src/ui/ip_setup.cpp | 23 ++++++--- .../src/ui/panels/connecting_panel.cpp | 2 +- CYD-Klipper/src/ui/panels/macros_panel.cpp | 2 +- CYD-Klipper/src/ui/panels/printer_panel.cpp | 2 +- CYD-Klipper/src/ui/serial/serial_commands.cpp | 51 +++++++++---------- 12 files changed, 80 insertions(+), 66 deletions(-) diff --git a/CYD-Klipper/src/conf/global_config.cpp b/CYD-Klipper/src/conf/global_config.cpp index 2c7ef77..c336758 100644 --- a/CYD-Klipper/src/conf/global_config.cpp +++ b/CYD-Klipper/src/conf/global_config.cpp @@ -84,8 +84,8 @@ void global_config_add_new_printer() new_config->printer_type = PrinterType::PrinterTypeNone; new_config->printer_name[0] = 0; - new_config->klipper_host[0] = 0; - new_config->klipper_auth[0] = 0; + new_config->printer_host[0] = 0; + new_config->printer_auth[0] = 0; new_config->klipper_port = 0; new_config->color_scheme = old_config->color_scheme; @@ -144,8 +144,8 @@ void set_printer_config_index(int index) new_config->auth_configured = false; new_config->printer_name[0] = 0; - new_config->klipper_host[0] = 0; - new_config->klipper_auth[0] = 0; + new_config->printer_host[0] = 0; + new_config->printer_auth[0] = 0; new_config->klipper_port = 0; new_config->color_scheme = old_config->color_scheme; diff --git a/CYD-Klipper/src/conf/global_config.h b/CYD-Klipper/src/conf/global_config.h index f337225..c235fff 100644 --- a/CYD-Klipper/src/conf/global_config.h +++ b/CYD-Klipper/src/conf/global_config.h @@ -4,7 +4,7 @@ #include "lvgl.h" #define CONFIG_VERSION 7 -#define PRINTER_CONFIG_COUNT 8 +#define PRINTER_CONFIG_COUNT 6 #define DISPLAY_SECRETS 0 enum { @@ -49,8 +49,8 @@ typedef struct { }; char printer_name[25]; - char klipper_host[65]; - char klipper_auth[33]; + char printer_host[65]; + char printer_auth[65]; unsigned int klipper_port; unsigned char color_scheme; diff --git a/CYD-Klipper/src/core/bambu/bambu_printer_integration.cpp b/CYD-Klipper/src/core/bambu/bambu_printer_integration.cpp index 7b3ec3b..95ec995 100644 --- a/CYD-Klipper/src/core/bambu/bambu_printer_integration.cpp +++ b/CYD-Klipper/src/core/bambu/bambu_printer_integration.cpp @@ -40,7 +40,7 @@ bool BambuPrinter::publish_mqtt_command(const char* command) } char auth[48] = {0}; - sprintf(auth, "device/%s/request", printer_config->klipper_auth); + sprintf(auth, "device/%s/request", printer_config->printer_auth); return client.publish(auth, command); } @@ -117,7 +117,7 @@ bool BambuPrinter::connect() { wifi_client.setInsecure(); client.setBufferSize(4096); - client.setServer(printer_config->klipper_host, 8883); + client.setServer(printer_config->printer_host, 8883); current_printer = this; client.setCallback(NULL); char buff[10] = {0}; @@ -129,7 +129,7 @@ bool BambuPrinter::connect() } char auth[48] = {0}; - sprintf(auth, "device/%s/report", printer_config->klipper_auth); + sprintf(auth, "device/%s/report", printer_config->printer_auth); if (!client.subscribe(auth)) { @@ -341,7 +341,7 @@ BambuConnectionStatus connection_test_bambu(PrinterConfiguration* config) WiFiClientSecure connection_test_wifi_client; PubSubClient connection_test_client(connection_test_wifi_client); connection_test_wifi_client.setInsecure(); - connection_test_client.setServer(config->klipper_host, 8883); + connection_test_client.setServer(config->printer_host, 8883); char buff[10] = {0}; sprintf(buff, "%d", config->klipper_port); if (!connection_test_client.connect("id", "bblp", buff)) @@ -351,7 +351,7 @@ BambuConnectionStatus connection_test_bambu(PrinterConfiguration* config) } char auth[48] = {0}; - sprintf(auth, "device/%s/report", config->klipper_auth); + sprintf(auth, "device/%s/report", config->printer_auth); if (!connection_test_client.subscribe(auth)) { diff --git a/CYD-Klipper/src/core/bambu/bambu_printer_parsers.cpp b/CYD-Klipper/src/core/bambu/bambu_printer_parsers.cpp index 60bed9e..6d9bafb 100644 --- a/CYD-Klipper/src/core/bambu/bambu_printer_parsers.cpp +++ b/CYD-Klipper/src/core/bambu/bambu_printer_parsers.cpp @@ -309,7 +309,7 @@ Files BambuPrinter::parse_files(WiFiClientSecure& wifi_client, int max_files) unsigned long timer_request = millis(); Files result = {0}; - if (!wifi_client.connect(printer_config->klipper_host, 990)) + if (!wifi_client.connect(printer_config->printer_host, 990)) { LOG_LN("Failed to fetch files: connection failed"); } @@ -325,7 +325,7 @@ Files BambuPrinter::parse_files(WiFiClientSecure& wifi_client, int max_files) send_command_without_response(wifi_client, "NLST"); wifi_client.stop(); - if (wifi_client.connect(printer_config->klipper_host, 2024)) + if (wifi_client.connect(printer_config->printer_host, 2024)) { unsigned long timer_parse = millis(); std::list files; diff --git a/CYD-Klipper/src/core/klipper/klipper_printer_integration.cpp b/CYD-Klipper/src/core/klipper/klipper_printer_integration.cpp index d2c862a..562c91c 100644 --- a/CYD-Klipper/src/core/klipper/klipper_printer_integration.cpp +++ b/CYD-Klipper/src/core/klipper/klipper_printer_integration.cpp @@ -14,10 +14,10 @@ void KlipperPrinter::configure_http_client(HTTPClient &client, String url_part, client.setConnectTimeout(timeout); } - client.begin("http://" + String(printer_config->klipper_host) + ":" + String(printer_config->klipper_port) + url_part); + client.begin("http://" + String(printer_config->printer_host) + ":" + String(printer_config->klipper_port) + url_part); if (printer_config->auth_configured) { - client.addHeader("X-Api-Key", printer_config->klipper_auth); + client.addHeader("X-Api-Key", printer_config->printer_auth); } } @@ -495,10 +495,10 @@ KlipperConnectionStatus connection_test_klipper(PrinterConfiguration* config) client.setTimeout(1000); client.setConnectTimeout(1000); - client.begin("http://" + String(config->klipper_host) + ":" + String(config->klipper_port) + "/printer/info"); + client.begin("http://" + String(config->printer_host) + ":" + String(config->klipper_port) + "/printer/info"); if (config->auth_configured) { - client.addHeader("X-Api-Key", config->klipper_auth); + client.addHeader("X-Api-Key", config->printer_auth); } int http_code; diff --git a/CYD-Klipper/src/core/octoprint/octoprint_printer_integration.cpp b/CYD-Klipper/src/core/octoprint/octoprint_printer_integration.cpp index e78ef62..7773d8c 100644 --- a/CYD-Klipper/src/core/octoprint/octoprint_printer_integration.cpp +++ b/CYD-Klipper/src/core/octoprint/octoprint_printer_integration.cpp @@ -24,10 +24,10 @@ void configure_http_client(HTTPClient &client, String url_part, bool stream, int client.setConnectTimeout(timeout); } - client.begin("http://" + String(printer_config->klipper_host) + ":" + String(printer_config->klipper_port) + url_part); + client.begin("http://" + String(printer_config->printer_host) + ":" + String(printer_config->klipper_port) + url_part); if (printer_config->auth_configured) { - client.addHeader("X-Api-Key", printer_config->klipper_auth); + client.addHeader("X-Api-Key", printer_config->printer_auth); } } @@ -54,6 +54,7 @@ bool OctoPrinter::post_request(const char* endpoint, const char* body, int timeo timeout_ms = 500; } + LOG_F(("POST >>> %s %s\n", endpoint, body)); configure_http_client(client, endpoint, false, timeout_ms, printer_config); if (body[0] == '{' || body[0] == '[') @@ -61,8 +62,10 @@ bool OctoPrinter::post_request(const char* endpoint, const char* body, int timeo client.addHeader("Content-Type", "application/json"); } - int result = client.POST(body); - return result >= 200 && result < 300; + int http_code = client.POST(body); + bool result = http_code >= 200 && http_code < 300; + LOG_F(("<<< %d\n", http_code)); + return result; } bool OctoPrinter::send_gcode(const char* gcode, bool wait) @@ -77,7 +80,8 @@ bool OctoPrinter::send_gcode(const char* gcode, bool wait) for (char* iter = gcode_copy;; iter++) { - if (*iter == '\n' || *iter == '\0') + char cur_iter = *iter; + if (cur_iter == '\n' || cur_iter == '\0') { if (iter != last_line_start) { @@ -88,7 +92,7 @@ bool OctoPrinter::send_gcode(const char* gcode, bool wait) last_line_start = iter + 1; } - if (*iter == '\0') + if (cur_iter == '\0') { break; } @@ -100,7 +104,7 @@ bool OctoPrinter::send_gcode(const char* gcode, bool wait) } free(gcode_copy); - bool result = post_request("/api/printer/command/custom", out_buff); + bool result = post_request("/api/printer/command", out_buff); free(out_buff); return result; } @@ -109,9 +113,11 @@ bool OctoPrinter::move_printer(const char* axis, float amount, bool relative) { JsonDocument doc; char out_buff[512]; + out_buff[0] = tolower(axis[0]); + out_buff[1] = '\0'; doc["command"] = "jog"; - doc[axis] = amount; + doc[out_buff] = amount; doc["absolute"] = !relative; if (serializeJson(doc, out_buff, 512) >= 512) @@ -390,7 +396,7 @@ Files OctoPrinter::get_files() bool OctoPrinter::start_file(const char* filename) { char buff[512]; - sprintf("/api/files/local/%s", filename); + sprintf(buff, "/api/files/local/%s", filename); return post_request(buff, COMMAND_PRINT); } diff --git a/CYD-Klipper/src/core/octoprint/octoprint_printer_parsers.cpp b/CYD-Klipper/src/core/octoprint/octoprint_printer_parsers.cpp index fd0563e..786b690 100644 --- a/CYD-Klipper/src/core/octoprint/octoprint_printer_parsers.cpp +++ b/CYD-Klipper/src/core/octoprint/octoprint_printer_parsers.cpp @@ -120,13 +120,15 @@ void OctoPrinter::parse_file_list(JsonDocument &in, std::listprinter_name[0] == 0) ? config->klipper_host : config->printer_name; + const char* printer_name = (config->printer_name[0] == 0) ? config->printer_host : config->printer_name; if (i == global_config.printer_index && config->setup_complete) { @@ -122,7 +122,7 @@ static void host_update(lv_event_t * e) { lv_obj_t * ta = lv_event_get_target(e); const char* text = lv_textarea_get_text(ta); - strcpy(global_config.printer_config[global_config.printer_index].klipper_host, text); + strcpy(global_config.printer_config[global_config.printer_index].printer_host, text); global_config.printer_config[global_config.printer_index].ip_configured = text[0] != '\0'; } @@ -140,7 +140,7 @@ static void auth_update(lv_event_t * e) { lv_obj_t * ta = lv_event_get_target(e); const char* text = lv_textarea_get_text(ta); - strcpy(global_config.printer_config[global_config.printer_index].klipper_auth, text); + strcpy(global_config.printer_config[global_config.printer_index].printer_auth, text); global_config.printer_config[global_config.printer_index].auth_configured = text[0] != '\0'; } @@ -166,6 +166,10 @@ static void keyboard_event_ip_entry(lv_event_t * e) { { lv_keyboard_set_mode(kb, LV_KEYBOARD_MODE_USER_2); } + else if (lv_obj_has_flag(ta, LV_OBJ_FLAG_USER_3)) + { + lv_keyboard_set_mode(kb, LV_KEYBOARD_MODE_TEXT_LOWER); + } else { lv_keyboard_set_mode(kb, LV_KEYBOARD_MODE_NUMBER); @@ -309,7 +313,7 @@ void show_ip_entry() { char buff[10] = {0}; sprintf(buff, "%d", global_config.printer_config[global_config.printer_index].klipper_port); - lv_textarea_set_text(host_entry, global_config.printer_config[global_config.printer_index].klipper_host); + lv_textarea_set_text(host_entry, global_config.printer_config[global_config.printer_index].printer_host); lv_textarea_set_text(port_entry, buff); } else @@ -327,18 +331,18 @@ void show_ip_entry() global_config.printer_config[global_config.printer_index].klipper_port = 80; } - global_config.printer_config[global_config.printer_index].klipper_host[0] = '\0'; + global_config.printer_config[global_config.printer_index].printer_host[0] = '\0'; } if (global_config.printer_config[global_config.printer_index].auth_configured) { - lv_textarea_set_text(auth_entry, global_config.printer_config[global_config.printer_index].klipper_auth); + lv_textarea_set_text(auth_entry, global_config.printer_config[global_config.printer_index].printer_auth); } else { lv_textarea_set_text(auth_entry, ""); - global_config.printer_config[global_config.printer_index].klipper_auth[0] = '\0'; + global_config.printer_config[global_config.printer_index].printer_auth[0] = '\0'; } lv_obj_add_event_cb(host_entry, host_update, LV_EVENT_VALUE_CHANGED, NULL); @@ -373,6 +377,9 @@ void show_ip_entry() lv_textarea_set_placeholder_text(auth_entry, "Printer serial number"); break; case PrinterType::PrinterTypeOctoprint: + lv_obj_clear_flag(auth_entry, LV_OBJ_FLAG_USER_2); + lv_obj_add_flag(auth_entry, LV_OBJ_FLAG_USER_3); + lv_textarea_set_max_length(auth_entry, 48); lv_label_set_text(main_label, "Octoprint Setup"); lv_textarea_set_max_length(port_entry, 5); lv_textarea_set_placeholder_text(host_entry, "Octoprint Host"); diff --git a/CYD-Klipper/src/ui/panels/connecting_panel.cpp b/CYD-Klipper/src/ui/panels/connecting_panel.cpp index a182548..a653aa5 100644 --- a/CYD-Klipper/src/ui/panels/connecting_panel.cpp +++ b/CYD-Klipper/src/ui/panels/connecting_panel.cpp @@ -5,7 +5,7 @@ void connecting_panel_init(lv_obj_t* panel) { lv_obj_t* label = lv_label_create(panel); lv_label_set_text_fmt(label, "Connecting to %s...", (get_current_printer()->printer_config->printer_name[0] == 0) - ? get_current_printer()->printer_config->klipper_host + ? get_current_printer()->printer_config->printer_host : get_current_printer()->printer_config->printer_name); lv_obj_align(label, LV_ALIGN_CENTER, 0, 0); } \ No newline at end of file diff --git a/CYD-Klipper/src/ui/panels/macros_panel.cpp b/CYD-Klipper/src/ui/panels/macros_panel.cpp index 49f5ded..ef4c2fc 100644 --- a/CYD-Klipper/src/ui/panels/macros_panel.cpp +++ b/CYD-Klipper/src/ui/panels/macros_panel.cpp @@ -31,7 +31,7 @@ void macros_panel_init(lv_obj_t* panel) { if (macros_count <= 0){ label = lv_label_create(root_panel); if (get_current_printer()->printer_config->printer_type == PrinterType::PrinterTypeKlipper - || get_current_printer()->printer_config->printer_type == PrinterType::PrinterTypeKlipper) + || get_current_printer()->printer_config->printer_type == PrinterType::PrinterTypeKlipperSerial) { lv_label_set_text(label, "No macros found.\nMacros with the description\n\"CYD_SCREEN_MACRO\"\nwill show up here."); } diff --git a/CYD-Klipper/src/ui/panels/printer_panel.cpp b/CYD-Klipper/src/ui/panels/printer_panel.cpp index 5e22797..b11da02 100644 --- a/CYD-Klipper/src/ui/panels/printer_panel.cpp +++ b/CYD-Klipper/src/ui/panels/printer_panel.cpp @@ -22,7 +22,7 @@ static void update_printer_name_text(lv_event_t * e) lv_obj_t * label = lv_event_get_target(e); int config_index = (int)lv_event_get_user_data(e); BasePrinter* printer = get_printer(config_index); - lv_label_set_text(label, printer->printer_config->printer_name[0] == 0 ? printer->printer_config->klipper_host : printer->printer_config->printer_name); + lv_label_set_text(label, printer->printer_config->printer_name[0] == 0 ? printer->printer_config->printer_host : printer->printer_config->printer_name); } static void update_printer_status_text(lv_event_t * e) diff --git a/CYD-Klipper/src/ui/serial/serial_commands.cpp b/CYD-Klipper/src/ui/serial/serial_commands.cpp index 8dfe71c..b4b6e21 100644 --- a/CYD-Klipper/src/ui/serial/serial_commands.cpp +++ b/CYD-Klipper/src/ui/serial/serial_commands.cpp @@ -16,6 +16,11 @@ namespace serial_console { - optionally add handling the new preference to sets() and settings() if it modifies global_config */ +PrinterConfiguration* get_current_printer_config() +{ + return &global_config.printer_config[global_config.printer_index]; +} + HANDLER commandHandlers[] = { {"help", &help, 1}, {"reset", &reset, 1}, @@ -94,20 +99,20 @@ void sets(String argv[]) Serial.printf("erase ssid\n"); } - if(get_current_printer()->printer_config->ip_configured) + if(get_current_printer_config()->ip_configured) { - Serial.printf("ip %s %d\n",get_current_printer()->printer_config->klipper_host, get_current_printer()->printer_config->klipper_port); + Serial.printf("ip %s %d\n",get_current_printer_config()->printer_host, get_current_printer_config()->klipper_port); } else { Serial.printf("erase ip\n"); } - if(get_current_printer()->printer_config->auth_configured) + if(get_current_printer_config()->auth_configured) { Serial.printf("key %s\n", #if DISPLAY_SECRETS - get_current_printer()->printer_config->klipper_auth + get_current_printer_config()->printer_auth #else "[redacted]" #endif @@ -135,9 +140,9 @@ void sets(String argv[]) void settings(String argv[]) { - if(get_current_printer()->printer_config->printer_name[0] != 0) + if(get_current_printer_config()->printer_name[0] != 0) { - Serial.printf("Current printer# %d name: %s",global_config.printer_index, get_current_printer()->printer_config->printer_name); + Serial.printf("Current printer# %d name: %s",global_config.printer_index, get_current_printer_config()->printer_name); } else { @@ -162,20 +167,20 @@ void settings(String argv[]) Serial.printf("Wifi not configured\n"); } - if(get_current_printer()->printer_config->ip_configured) + if(get_current_printer_config()->ip_configured) { - Serial.printf("Moonraker address: %s:%d\n",get_current_printer()->printer_config->klipper_host, get_current_printer()->printer_config->klipper_port); + Serial.printf("Moonraker address: %s:%d\n",get_current_printer_config()->printer_host, get_current_printer_config()->klipper_port); } else { Serial.printf("Moonraker address not configured\n"); } - if(get_current_printer()->printer_config->auth_configured) + if(get_current_printer_config()->auth_configured) { Serial.printf("Moonraker API key: %s\n", #if DISPLAY_SECRETS - get_current_printer()->printer_config->klipper_auth + get_current_printer_config()->printer_auth #else "[redacted]" #endif @@ -205,15 +210,15 @@ void erase_one(const String arg) { if(arg == "key") { - get_current_printer()->printer_config->auth_configured = false; + get_current_printer_config()->auth_configured = false; // overwrite the key to make it unrecoverable for 3rd parties - memset(get_current_printer()->printer_config->klipper_auth,0,32); + memset(get_current_printer_config()->printer_auth,0,64); write_global_config(); } else if(arg == "ip") { - get_current_printer()->printer_config->setup_complete = false; - get_current_printer()->printer_config->ip_configured = false; + get_current_printer_config()->setup_complete = false; + get_current_printer_config()->ip_configured = false; write_global_config(); } else if(arg == "touch") @@ -252,14 +257,8 @@ void erase(String argv[]) void key(String argv[]) { - if (argv[1].length() != 32) - { - Serial.println("Key must be 32 characters"); - return; - } - - get_current_printer()->printer_config->auth_configured = true; - strncpy(get_current_printer()->printer_config->klipper_auth, argv[1].c_str(), sizeof(global_config.printer_config[0].klipper_auth)); + get_current_printer_config()->auth_configured = true; + strncpy(get_current_printer_config()->printer_auth, argv[1].c_str(), sizeof(global_config.printer_config[0].printer_auth)); write_global_config(); } @@ -283,10 +282,10 @@ void ssid(String argv[]) void ip(String argv[]) { - strncpy(get_current_printer()->printer_config->klipper_host, argv[1].c_str(), sizeof(global_config.printer_config[0].klipper_host)-1); - get_current_printer()->printer_config->klipper_port = argv[2].toInt(); - get_current_printer()->printer_config->ip_configured = true; - get_current_printer()->printer_config->setup_complete = true; + strncpy(get_current_printer_config()->printer_host, argv[1].c_str(), sizeof(global_config.printer_config[0].printer_host)-1); + get_current_printer_config()->klipper_port = argv[2].toInt(); + get_current_printer_config()->ip_configured = true; + get_current_printer_config()->setup_complete = true; write_global_config(); }