diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 0ea7af39c..e732c2f32 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -2685,6 +2685,10 @@ int MachineObject::parse_json(std::string payload) j = j_pre; } + uint64_t t_utc = j.value("t_utc", 0); + if (t_utc > 0) + last_update_time = std::chrono::system_clock::time_point(t_utc * 1ms); + BOOST_LOG_TRIVIAL(trace) << "parse_json: dev_id=" << dev_id << ", playload=" << j.dump(4); // Parse version info first, as if version arrive or change, 'print' need parse again with new compatible settings @@ -2944,7 +2948,7 @@ int MachineObject::parse_json(std::string payload) if (jj["command"].get() == "push_status") { m_push_count++; - last_push_time = std::chrono::system_clock::now(); + last_push_time = last_update_time; #pragma region printing // U0 firmware if (jj.contains("print_type")) { diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 1bc7ff8e6..e6277144d 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -1857,6 +1857,17 @@ void StatusPanel::update(MachineObject *obj) update_subtask(obj); m_project_task_panel->Thaw(); +#if !BBL_RELEASE_TO_PUBLIC + auto delay1 = std::chrono::duration_cast(obj->last_update_time - std::chrono::system_clock::now()).count(); + auto delay2 = std::chrono::duration_cast(obj->last_push_time - std::chrono::system_clock::now()).count(); + auto delay = wxString::Format(" %ld/%ld", delay1, delay2); + m_staticText_timelapse + ->SetLabel((obj->is_lan_mode_printer() ? "Local Mqtt" : obj->is_tunnel_mqtt ? "Tunnel Mqtt" : "Cloud Mqtt") + delay); + m_bmToggleBtn_timelapse + ->Enable(!obj->is_lan_mode_printer()); + m_bmToggleBtn_timelapse + ->SetValue(obj->is_tunnel_mqtt); +#endif m_machine_ctrl_panel->Freeze();