From 6121a420f16672c9d7f127ad1cc05287b85a4265 Mon Sep 17 00:00:00 2001 From: "haolin.tian" Date: Mon, 4 Aug 2025 17:57:29 +0800 Subject: [PATCH] ENH: add text to specify active tunnel JIRA: [STUDIO-13803] Change-Id: Ia6af5ba881c93a1d284295b244d19b39aee2ae91 (cherry picked from commit cb6c6afeee3e519aca87ac82eacc4b85fda63f65) --- src/slic3r/GUI/DeviceManager.cpp | 19 ++++++++++++++++++- src/slic3r/GUI/DeviceManager.hpp | 6 ++++++ src/slic3r/GUI/StatusPanel.cpp | 13 +++++++++++-- src/slic3r/GUI/StatusPanel.hpp | 2 ++ 4 files changed, 37 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index a9e112c61d..3de2ec3652 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -352,6 +352,20 @@ std::string MachineObject::get_ftp_folder() return DevPrinterConfigUtil::get_ftp_folder(printer_type); } +bool MachineObject::HasRecentCloudMessage() +{ + auto curr_time = std::chrono::system_clock::now(); + auto diff = std::chrono::duration_cast(curr_time - last_cloud_msg_time_); + return diff.count() < 5000; +} + +bool MachineObject::HasRecentLanMessage() +{ + auto curr_time = std::chrono::system_clock::now(); + auto diff = std::chrono::duration_cast(curr_time - last_lan_msg_time_); + return diff.count() < 5000; +} + std::string MachineObject::get_access_code() const { if (get_user_access_code().empty()) @@ -502,7 +516,7 @@ MachineObject::MachineObject(DeviceManager* manager, NetworkAgent* agent, std::s auto vslot = DevAmsTray(std::to_string(VIRTUAL_TRAY_MAIN_ID)); vt_slot.push_back(vslot); - { + { m_lamp = new DevLamp(this); m_fan = new DevFan(this); m_bed = new DevBed(this); @@ -2461,6 +2475,9 @@ int MachineObject::parse_json(std::string tunnel, std::string payload, bool key_ flush_logs(); #endif + if (tunnel == "lan") last_lan_msg_time_ = std::chrono::system_clock::now(); + if (tunnel == "cloud") last_cloud_msg_time_ = std::chrono::system_clock::now(); + parse_msg_count++; std::chrono::system_clock::time_point clock_start = std::chrono::system_clock::now(); this->set_online_state(true); diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index 5d08a7a06a..4e2926646e 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -171,6 +171,12 @@ public: bool is_lan_mode_printer() const { return dev_connection_type == "lan"; } bool is_cloud_mode_printer() const { return dev_connection_type == "cloud"; } + std::chrono::system_clock::time_point last_cloud_msg_time_; + std::chrono::system_clock::time_point last_lan_msg_time_; + + bool HasRecentCloudMessage(); + bool HasRecentLanMessage(); + std::string dev_connection_name; /* lan | eth */ /*access code*/ diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 9e4bb1b494..eb91ff678c 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -1371,6 +1371,10 @@ wxBoxSizer *StatusBasePanel::create_monitoring_page() m_staticText_timelapse->Hide(); bSizer_monitoring_title->Add(m_staticText_timelapse, 0, wxALIGN_CENTER_VERTICAL | wxALL, FromDIP(5)); + m_mqtt_source = new wxStaticText(m_panel_monitoring_title, wxID_ANY, _L("MqttSource"), wxDefaultPosition, wxDefaultSize, 0); + m_mqtt_source->Wrap(-1); + bSizer_monitoring_title->Add(m_mqtt_source, 0, wxALIGN_CENTER_VERTICAL | wxALL, FromDIP(5)); + m_bmToggleBtn_timelapse = new SwitchButton(m_panel_monitoring_title); m_bmToggleBtn_timelapse->SetMinSize(SWITCH_BUTTON_SIZE); m_bmToggleBtn_timelapse->Hide(); @@ -2643,6 +2647,11 @@ void StatusPanel::update(MachineObject *obj) m_bmToggleBtn_timelapse->SetValue(obj->is_tunnel_mqtt); #endif + if (obj->HasRecentCloudMessage() && obj->HasRecentLanMessage()) m_mqtt_source->SetLabel("Cloud+Lan"); + else if (obj->HasRecentCloudMessage()) m_mqtt_source->SetLabel("Cloud"); + else if (obj->HasRecentLanMessage()) m_mqtt_source->SetLabel("Lan"); + else m_mqtt_source->SetLabel("None"); + //m_machine_ctrl_panel->Freeze(); if (obj->is_in_printing() && !obj->can_resume()) { show_printing_status(false, true); @@ -2984,7 +2993,7 @@ void StatusPanel::update_temp_ctrl(MachineObject *obj) if (!nozzle_temp_input) { auto main_extder = obj->GetExtderSystem()->GetExtderById(MAIN_EXTRUDER_ID); if (main_extder) - { + { m_tempCtrl_nozzle->SetCurrTemp((int)main_extder->GetCurrentTemp()); if (main_extder->GetTargetTemp() - main_extder->GetCurrentTemp() > TEMP_THRESHOLD_VAL) { @@ -3005,7 +3014,7 @@ void StatusPanel::update_temp_ctrl(MachineObject *obj) if (!nozzle_temp_input && nozzle_num >= 2) { auto deputy_extder = obj->GetExtderSystem()->GetExtderById(DEPUTY_EXTRUDER_ID); if (deputy_extder) - { + { m_tempCtrl_nozzle_deputy->SetCurrTemp((int)deputy_extder->GetCurrentTemp()); if (deputy_extder->GetTargetTemp() - deputy_extder->GetCurrentTemp() > TEMP_THRESHOLD_VAL) { diff --git a/src/slic3r/GUI/StatusPanel.hpp b/src/slic3r/GUI/StatusPanel.hpp index 4baa729d83..a8406c39fc 100644 --- a/src/slic3r/GUI/StatusPanel.hpp +++ b/src/slic3r/GUI/StatusPanel.hpp @@ -405,6 +405,8 @@ protected: wxStaticText * m_staticText_timelapse; SwitchButton * m_bmToggleBtn_timelapse; + wxStaticText *m_mqtt_source; + wxStaticBitmap *m_bitmap_camera_img; wxStaticBitmap *m_bitmap_recording_img; wxStaticBitmap *m_bitmap_timelapse_img;