From 030b3f0c5866c627932104c0ee69d4f978002c48 Mon Sep 17 00:00:00 2001 From: Stone Li Date: Fri, 9 Jun 2023 10:50:00 +0800 Subject: [PATCH] ENH: compatible with old firmware in mqtt keep alive Change-Id: Iaee3401d8dd26553169da7a9a627b31357c3d302 Signed-off-by: Stone Li --- src/slic3r/GUI/DeviceManager.cpp | 35 ++++++++++++++++++++++++++++++-- src/slic3r/GUI/DeviceManager.hpp | 3 ++- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 92fc4514a6..c9028341a8 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -1359,7 +1359,17 @@ void MachineObject::parse_version_func() } if (firmware_type == PrinterFirmwareType::FIRMWARE_TYPE_PRODUCTION) { - local_use_ssl_for_mqtt = ota_version->second.sw_ver.compare("01.03.01.04") >= 0; + local_use_ssl_for_mqtt = ota_version->second.sw_ver.compare("01.03.01.04") >= 0; + } + + if (lifecycle == PrinterFirmwareType::FIRMWARE_TYPE_PRODUCTION) { + is_support_mqtt_alive = ota_version->second.sw_ver.compare("01.05.06.05") >= 0; + } + else if (lifecycle == PrinterFirmwareType::FIRMWARE_TYPE_ENGINEER) { + is_support_mqtt_alive = ota_version->second.sw_ver.compare("00.03.10.05") >= 0; + } + else { + is_support_mqtt_alive = ota_version->second.sw_ver.compare("01.05.06.05") >= 0; } is_support_remote_tunnel = true; @@ -1381,11 +1391,32 @@ void MachineObject::parse_version_func() if (esp32_version != module_vers.end()) { ams_support_auto_switch_filament_flag = esp32_version->second.sw_ver.compare("00.03.11.50") >= 0; } + + if (lifecycle == PrinterFirmwareType::FIRMWARE_TYPE_PRODUCTION) { + is_support_mqtt_alive = ota_version->second.sw_ver.compare("01.03.50.01") >= 0; + } + else if (lifecycle == PrinterFirmwareType::FIRMWARE_TYPE_ENGINEER) { + is_support_mqtt_alive = ota_version->second.sw_ver.compare("00.06.03.51") >= 0; + } + else { + is_support_mqtt_alive = ota_version->second.sw_ver.compare("01.03.50.01") >= 0; + } + } else if (printer_type == "C12") { is_support_ai_monitoring = true; is_cloud_print_only = true; is_support_remote_tunnel = true; local_camera_proto = 1; + + if (lifecycle == PrinterFirmwareType::FIRMWARE_TYPE_PRODUCTION) { + is_support_mqtt_alive = ota_version->second.sw_ver.compare("01.03.50.01") >= 0; + } + else if (lifecycle == PrinterFirmwareType::FIRMWARE_TYPE_ENGINEER) { + is_support_mqtt_alive = ota_version->second.sw_ver.compare("00.06.03.51") >= 0; + } + else { + is_support_mqtt_alive = ota_version->second.sw_ver.compare("01.03.50.01") >= 0; + } } } @@ -4139,7 +4170,7 @@ void DeviceManager::set_agent(NetworkAgent* agent) void DeviceManager::check_pushing() { MachineObject* obj = this->get_selected_machine(); - if (obj) { + if (obj && !obj->is_support_mqtt_alive) { std::chrono::system_clock::time_point start = std::chrono::system_clock::now(); auto internal = std::chrono::duration_cast(start - obj->last_update_time); if (internal.count() > TIMEOUT_FOR_STRAT && internal.count() < 1000 * 60 * 60 * 300) { diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index 70ab02a6b4..9430991231 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -607,7 +607,7 @@ public: int upgrade_display_state = 0; // 0 : upgrade unavailable, 1: upgrade idle, 2: upgrading, 3: upgrade_finished int upgrade_display_hold_count = 0; PrinterFirmwareType firmware_type; // engineer|production - PrinterFirmwareType lifecycle; + PrinterFirmwareType lifecycle { PrinterFirmwareType::FIRMEARE_TYPE_UKNOWN }; std::string upgrade_progress; std::string upgrade_message; std::string upgrade_status; @@ -720,6 +720,7 @@ public: bool is_support_ams_humidity {true}; bool is_support_filament_edit_virtual_tray {true}; bool is_cloud_print_only {false}; + bool is_support_mqtt_alive {false}; /* sdcard */ MachineObject::SdcardState sdcard_state { NO_SDCARD };