mirror of
https://github.com/suchmememanyskill/CYD-Klipper.git
synced 2026-03-21 05:33:24 +00:00
Fixes
This commit is contained in:
@@ -187,8 +187,8 @@ bool KlipperPrinter::fetch()
|
|||||||
|
|
||||||
if (status.containsKey("webhooks"))
|
if (status.containsKey("webhooks"))
|
||||||
{
|
{
|
||||||
const char *state = status["webhooks"]["state"];
|
const char* state = status["webhooks"]["state"];
|
||||||
const char *message = status["webhooks"]["state_message"];
|
const char* message = status["webhooks"]["state_message"];
|
||||||
|
|
||||||
if (strcmp(state, "ready") == 0 && printer_data.state == PrinterStateError)
|
if (strcmp(state, "ready") == 0 && printer_data.state == PrinterStateError)
|
||||||
{
|
{
|
||||||
@@ -199,7 +199,7 @@ bool KlipperPrinter::fetch()
|
|||||||
printer_data.state = PrinterStateError;
|
printer_data.state = PrinterStateError;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (printer_data.state_message == NULL || strcmp(printer_data.state_message, message))
|
if (message != NULL && (printer_data.state_message == NULL || strcmp(printer_data.state_message, message)))
|
||||||
{
|
{
|
||||||
printer_data.state_message = (char *)malloc(strlen(message) + 1);
|
printer_data.state_message = (char *)malloc(strlen(message) + 1);
|
||||||
strcpy(printer_data.state_message, message);
|
strcpy(printer_data.state_message, message);
|
||||||
@@ -452,7 +452,7 @@ void KlipperPrinter::disconnect()
|
|||||||
Macros KlipperPrinter::get_macros()
|
Macros KlipperPrinter::get_macros()
|
||||||
{
|
{
|
||||||
HTTPClient client;
|
HTTPClient client;
|
||||||
Macros macros;
|
Macros macros = {0};
|
||||||
|
|
||||||
configure_http_client(client, "/printer/gcode/help", true, 1000);
|
configure_http_client(client, "/printer/gcode/help", true, 1000);
|
||||||
int http_code = client.GET();
|
int http_code = client.GET();
|
||||||
@@ -522,7 +522,7 @@ bool KlipperPrinter::execute_macro(const char* macro)
|
|||||||
PowerDevices KlipperPrinter::get_power_devices()
|
PowerDevices KlipperPrinter::get_power_devices()
|
||||||
{
|
{
|
||||||
HTTPClient client;
|
HTTPClient client;
|
||||||
PowerDevices power_devices;
|
PowerDevices power_devices = {0};
|
||||||
configure_http_client(client, "/machine/device_power/devices", true, 1000);
|
configure_http_client(client, "/machine/device_power/devices", true, 1000);
|
||||||
|
|
||||||
int http_code = client.GET();
|
int http_code = client.GET();
|
||||||
@@ -590,7 +590,7 @@ typedef struct {
|
|||||||
|
|
||||||
Files KlipperPrinter::get_files()
|
Files KlipperPrinter::get_files()
|
||||||
{
|
{
|
||||||
Files files_result;
|
Files files_result = {0};
|
||||||
HTTPClient client;
|
HTTPClient client;
|
||||||
LOG_F(("Heap space pre-file-parse: %d bytes\n", esp_get_free_heap_size()))
|
LOG_F(("Heap space pre-file-parse: %d bytes\n", esp_get_free_heap_size()))
|
||||||
std::list<FileSystemFile> files;
|
std::list<FileSystemFile> files;
|
||||||
@@ -704,7 +704,7 @@ Thumbnail KlipperPrinter::get_32_32_png_image_thumbnail(const char* gcode_filena
|
|||||||
{
|
{
|
||||||
Thumbnail thumbnail = {0};
|
Thumbnail thumbnail = {0};
|
||||||
HTTPClient client;
|
HTTPClient client;
|
||||||
configure_http_client(client, "/server/files/thumbnails?filename=", true, 1000);
|
configure_http_client(client, "/server/files/thumbnails?filename=" + urlEncode(gcode_filename), true, 1000);
|
||||||
char* img_filename_path = NULL;
|
char* img_filename_path = NULL;
|
||||||
unsigned char* data_png = NULL;
|
unsigned char* data_png = NULL;
|
||||||
|
|
||||||
@@ -725,7 +725,6 @@ Thumbnail KlipperPrinter::get_32_32_png_image_thumbnail(const char* gcode_filena
|
|||||||
deserializeJson(doc, client.getStream());
|
deserializeJson(doc, client.getStream());
|
||||||
auto result = doc["result"].as<JsonArray>();
|
auto result = doc["result"].as<JsonArray>();
|
||||||
const char* chosen_thumb = NULL;
|
const char* chosen_thumb = NULL;
|
||||||
|
|
||||||
for (auto file : result){
|
for (auto file : result){
|
||||||
int width = file["width"];
|
int width = file["width"];
|
||||||
int height = file["height"];
|
int height = file["height"];
|
||||||
@@ -735,6 +734,7 @@ Thumbnail KlipperPrinter::get_32_32_png_image_thumbnail(const char* gcode_filena
|
|||||||
if (width != height || width != 32)
|
if (width != height || width != 32)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|
||||||
if (strcmp(thumbnail + strlen(thumbnail) - 4, ".png"))
|
if (strcmp(thumbnail + strlen(thumbnail) - 4, ".png"))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@@ -755,6 +755,7 @@ Thumbnail KlipperPrinter::get_32_32_png_image_thumbnail(const char* gcode_filena
|
|||||||
|
|
||||||
if (img_filename_path == NULL)
|
if (img_filename_path == NULL)
|
||||||
{
|
{
|
||||||
|
LOG_LN("No compatible thumbnail found");
|
||||||
return thumbnail;
|
return thumbnail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,25 +1,20 @@
|
|||||||
#include "printer_integration.hpp"
|
#include "printer_integration.hpp"
|
||||||
#include "lv_setup.h"
|
#include "lv_setup.h"
|
||||||
#include "screen_driver.h"
|
#include "screen_driver.h"
|
||||||
|
#include <HardwareSerial.h>
|
||||||
|
|
||||||
unsigned char current_printer_index = 0;
|
static char blank[] = { '\0' };
|
||||||
unsigned char total_printers;
|
static unsigned char current_printer_index = 0;
|
||||||
BasePrinter** registered_printers;
|
static unsigned char total_printers;
|
||||||
PrinterDataMinimal* minimal_data_copy;
|
static BasePrinter** registered_printers;
|
||||||
PrinterData* printer_data_copy;
|
static PrinterDataMinimal* minimal_data_copy;
|
||||||
|
static PrinterData* printer_data_copy;
|
||||||
|
|
||||||
BasePrinter::BasePrinter(unsigned char index)
|
BasePrinter::BasePrinter(unsigned char index)
|
||||||
{
|
{
|
||||||
config_index = index;
|
config_index = index;
|
||||||
printer_config = &global_config.printer_config[index];
|
printer_config = &global_config.printer_config[index];
|
||||||
|
memset(&printer_data, 0, sizeof(PrinterData));
|
||||||
printer_data.state_message = (char*)malloc(1);
|
|
||||||
printer_data.print_filename = (char*)malloc(1);
|
|
||||||
printer_data.popup_message = (char*)malloc(1);
|
|
||||||
*printer_data.state_message = '\0';
|
|
||||||
*printer_data.print_filename = '\0';
|
|
||||||
*printer_data.popup_message = '\0';
|
|
||||||
|
|
||||||
// TODO: Fetch printer config and global config
|
// TODO: Fetch printer config and global config
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -27,27 +22,46 @@ PrinterData* BasePrinter::AnnouncePrinterData()
|
|||||||
{
|
{
|
||||||
char* old_state_message = printer_data_copy->state_message;
|
char* old_state_message = printer_data_copy->state_message;
|
||||||
char* old_print_filename = printer_data_copy->print_filename;
|
char* old_print_filename = printer_data_copy->print_filename;
|
||||||
char* old_popup_message = printer_data_copy->print_filename;
|
char* old_popup_message = printer_data_copy->popup_message;
|
||||||
|
PrinterState old_state = printer_data_copy->state;
|
||||||
|
|
||||||
memcpy(printer_data_copy, &printer_data, sizeof(PrinterData));
|
memcpy(printer_data_copy, &printer_data, sizeof(PrinterData));
|
||||||
|
|
||||||
if (old_state_message != printer_data_copy->state_message)
|
if (printer_data_copy->state_message == NULL)
|
||||||
{
|
{
|
||||||
|
printer_data_copy->state_message = blank;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (printer_data_copy->print_filename == NULL)
|
||||||
|
{
|
||||||
|
printer_data_copy->print_filename = blank;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (printer_data_copy->popup_message == NULL)
|
||||||
|
{
|
||||||
|
printer_data_copy->popup_message = blank;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (old_state_message != printer_data_copy->state_message && old_state_message != NULL && old_state_message != blank)
|
||||||
|
{
|
||||||
|
LOG_F(("Freeing state message '%s' (%x)\n", old_state_message, old_state_message));
|
||||||
free(old_state_message);
|
free(old_state_message);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (old_print_filename != printer_data_copy->print_filename)
|
if (old_print_filename != printer_data_copy->print_filename && old_print_filename != NULL && old_print_filename != blank)
|
||||||
{
|
{
|
||||||
|
LOG_F(("Freeing print filename '%s' (%x)\n", old_print_filename, old_print_filename));
|
||||||
free(old_print_filename);
|
free(old_print_filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (printer_data.state != printer_data_copy->state)
|
if (old_state != printer_data_copy->state)
|
||||||
{
|
{
|
||||||
lv_msg_send(DATA_PRINTER_STATE, get_current_printer());
|
lv_msg_send(DATA_PRINTER_STATE, get_current_printer());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (old_popup_message != printer_data_copy->popup_message)
|
if (old_popup_message != printer_data_copy->popup_message && old_popup_message != NULL && old_popup_message != blank)
|
||||||
{
|
{
|
||||||
|
LOG_F(("Freeing popup message '%s' (%x)\n", old_popup_message, old_popup_message));
|
||||||
free(old_popup_message);
|
free(old_popup_message);
|
||||||
lv_msg_send(DATA_PRINTER_POPUP, get_current_printer());
|
lv_msg_send(DATA_PRINTER_POPUP, get_current_printer());
|
||||||
}
|
}
|
||||||
@@ -60,6 +74,7 @@ void initialize_printers(BasePrinter** printers, unsigned char total)
|
|||||||
{
|
{
|
||||||
printer_data_copy = (PrinterData*)malloc(sizeof(PrinterData));
|
printer_data_copy = (PrinterData*)malloc(sizeof(PrinterData));
|
||||||
minimal_data_copy = (PrinterDataMinimal*)malloc(sizeof(PrinterDataMinimal) * total_printers);
|
minimal_data_copy = (PrinterDataMinimal*)malloc(sizeof(PrinterDataMinimal) * total_printers);
|
||||||
|
memset(printer_data_copy, 0, sizeof(PrinterData));
|
||||||
memset(minimal_data_copy, 0, sizeof(PrinterDataMinimal) * total_printers);
|
memset(minimal_data_copy, 0, sizeof(PrinterDataMinimal) * total_printers);
|
||||||
registered_printers = printers;
|
registered_printers = printers;
|
||||||
total_printers = total;
|
total_printers = total;
|
||||||
|
|||||||
@@ -83,6 +83,7 @@ static void keyboard_event_ip_entry(lv_event_t * e) {
|
|||||||
if (status == ConnectionStatus::ConnectOk)
|
if (status == ConnectionStatus::ConnectOk)
|
||||||
{
|
{
|
||||||
global_config.printer_config[global_config.printer_index].ip_configured = true;
|
global_config.printer_config[global_config.printer_index].ip_configured = true;
|
||||||
|
global_config.printer_config[global_config.printer_index].setup_complete = true;
|
||||||
write_global_config();
|
write_global_config();
|
||||||
}
|
}
|
||||||
else if (status == ConnectionStatus::ConnectAuthRequired)
|
else if (status == ConnectionStatus::ConnectAuthRequired)
|
||||||
|
|||||||
@@ -9,10 +9,15 @@ static void swap_to_files_menu(lv_event_t * e) {
|
|||||||
nav_buttons_setup(PANEL_FILES);
|
nav_buttons_setup(PANEL_FILES);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void update_data(lv_event_t * e) {
|
||||||
|
lv_msg_send(DATA_PRINTER_DATA, get_current_printer());
|
||||||
|
}
|
||||||
|
|
||||||
void create_state_button(lv_obj_t * root, lv_event_cb_t label, lv_event_cb_t button){
|
void create_state_button(lv_obj_t * root, lv_event_cb_t label, lv_event_cb_t button){
|
||||||
lv_obj_t * btn = lv_btn_create(root);
|
lv_obj_t * btn = lv_btn_create(root);
|
||||||
lv_obj_set_size(btn, CYD_SCREEN_PANEL_WIDTH_PX / 2 - CYD_SCREEN_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
|
lv_obj_set_size(btn, CYD_SCREEN_PANEL_WIDTH_PX / 2 - CYD_SCREEN_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
|
||||||
lv_obj_add_event_cb(btn, button, LV_EVENT_CLICKED, NULL);
|
lv_obj_add_event_cb(btn, button, LV_EVENT_CLICKED, NULL);
|
||||||
|
lv_obj_add_event_cb(btn, update_data, LV_EVENT_CLICKED, NULL);
|
||||||
|
|
||||||
lv_obj_t * label_obj = lv_label_create(btn);
|
lv_obj_t * label_obj = lv_label_create(btn);
|
||||||
lv_obj_add_event_cb(label_obj, label, LV_EVENT_MSG_RECEIVED, NULL);
|
lv_obj_add_event_cb(label_obj, label, LV_EVENT_MSG_RECEIVED, NULL);
|
||||||
|
|||||||
@@ -237,9 +237,9 @@ void create_charts(lv_obj_t * root)
|
|||||||
lv_chart_series_t * ser2 = lv_chart_add_series(chart, lv_palette_main(LV_PALETTE_RED), LV_CHART_AXIS_PRIMARY_Y);
|
lv_chart_series_t * ser2 = lv_chart_add_series(chart, lv_palette_main(LV_PALETTE_RED), LV_CHART_AXIS_PRIMARY_Y);
|
||||||
lv_chart_set_all_value(chart, ser2, get_current_printer_data()->temperatures[PrinterTemperatureDeviceIndex::PrinterTemperatureDeviceIndexNozzle1]);
|
lv_chart_set_all_value(chart, ser2, get_current_printer_data()->temperatures[PrinterTemperatureDeviceIndex::PrinterTemperatureDeviceIndexNozzle1]);
|
||||||
lv_chart_series_t * ser3 = lv_chart_add_series(chart, lv_palette_main(LV_PALETTE_TEAL), LV_CHART_AXIS_PRIMARY_Y);
|
lv_chart_series_t * ser3 = lv_chart_add_series(chart, lv_palette_main(LV_PALETTE_TEAL), LV_CHART_AXIS_PRIMARY_Y);
|
||||||
lv_chart_set_all_value(chart, ser3, get_current_printer_data()->temperatures[PrinterTemperatureDeviceIndex::PrinterTemperatureDeviceIndexBed]);
|
lv_chart_set_all_value(chart, ser3, get_current_printer_data()->target_temperatures[PrinterTemperatureDeviceIndex::PrinterTemperatureDeviceIndexBed]);
|
||||||
lv_chart_series_t * ser4 = lv_chart_add_series(chart, lv_palette_main(LV_PALETTE_BLUE), LV_CHART_AXIS_PRIMARY_Y);
|
lv_chart_series_t * ser4 = lv_chart_add_series(chart, lv_palette_main(LV_PALETTE_BLUE), LV_CHART_AXIS_PRIMARY_Y);
|
||||||
lv_chart_set_all_value(chart, ser4, get_current_printer_data()->target_temperatures[PrinterTemperatureDeviceIndex::PrinterTemperatureDeviceIndexBed]);
|
lv_chart_set_all_value(chart, ser4, get_current_printer_data()->temperatures[PrinterTemperatureDeviceIndex::PrinterTemperatureDeviceIndexBed]);
|
||||||
|
|
||||||
lv_obj_add_event_cb(chart, set_hotend_target_temp_chart, LV_EVENT_MSG_RECEIVED, ser1);
|
lv_obj_add_event_cb(chart, set_hotend_target_temp_chart, LV_EVENT_MSG_RECEIVED, ser1);
|
||||||
lv_obj_add_event_cb(chart, set_hotend_temp_chart, LV_EVENT_MSG_RECEIVED, ser2);
|
lv_obj_add_event_cb(chart, set_hotend_temp_chart, LV_EVENT_MSG_RECEIVED, ser2);
|
||||||
|
|||||||
@@ -268,6 +268,8 @@ void lv_create_popup_message(const char* message, uint16_t timeout_ms)
|
|||||||
lv_label_set_text_fmt(label, "%s", message);
|
lv_label_set_text_fmt(label, "%s", message);
|
||||||
lv_obj_set_size(label, CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_GAP_PX * 6, LV_SIZE_CONTENT);
|
lv_obj_set_size(label, CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_GAP_PX * 6, LV_SIZE_CONTENT);
|
||||||
lv_label_set_long_mode(label, LV_LABEL_LONG_WRAP);
|
lv_label_set_long_mode(label, LV_LABEL_LONG_WRAP);
|
||||||
|
|
||||||
|
timer = lv_timer_create(timer_callback, timeout_ms, panel);
|
||||||
}
|
}
|
||||||
|
|
||||||
lv_obj_t * lv_label_btn_create(lv_obj_t * parent, lv_event_cb_t btn_callback, void* user_data)
|
lv_obj_t * lv_label_btn_create(lv_obj_t * parent, lv_event_cb_t btn_callback, void* user_data)
|
||||||
|
|||||||
Reference in New Issue
Block a user