diff --git a/src/slic3r/GUI/BindDialog.cpp b/src/slic3r/GUI/BindDialog.cpp index 09952d48af..cbc6b72c53 100644 --- a/src/slic3r/GUI/BindDialog.cpp +++ b/src/slic3r/GUI/BindDialog.cpp @@ -268,7 +268,7 @@ namespace GUI { agent->track_update_property("dev_ota_version", m_machine_info->get_ota_version()); m_simplebook->SetSelection(0); - m_bind_job = std::make_shared(m_status_bar, wxGetApp().plater(), m_machine_info->dev_id, m_machine_info->dev_ip); + m_bind_job = std::make_shared(m_status_bar, wxGetApp().plater(), m_machine_info->dev_id, m_machine_info->dev_ip, m_machine_info->bind_sec_link); m_bind_job->set_event_handle(this); m_bind_job->start(); } diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 70c9d0cd7a..0699dbb718 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -3781,14 +3781,16 @@ void DeviceManager::on_machine_alive(std::string json_str) std::string printer_signal = j["dev_signal"].get(); std::string connect_type = j["connect_type"].get(); std::string bind_state = j["bind_state"].get(); + std::string sec_link = j["sec_link"].get(); MachineObject* obj; /* update userMachineList info */ auto it = userMachineList.find(dev_id); if (it != userMachineList.end()) { - it->second->dev_ip = dev_ip; - it->second->bind_state = bind_state; + it->second->dev_ip = dev_ip; + it->second->bind_state = bind_state; + it->second->bind_sec_link = sec_link; } /* update localMachineList */ @@ -3802,9 +3804,10 @@ void DeviceManager::on_machine_alive(std::string json_str) obj->dev_ip = dev_ip; /* ip changed reconnect mqtt */ } - obj->wifi_signal = printer_signal; - obj->dev_connection_type = connect_type; - obj->bind_state = bind_state; + obj->wifi_signal = printer_signal; + obj->dev_connection_type= connect_type; + obj->bind_state = bind_state; + obj->bind_sec_link = sec_link; obj->printer_type = MachineObject::parse_printer_type(printer_type_str); // U0 firmware @@ -3827,6 +3830,7 @@ void DeviceManager::on_machine_alive(std::string json_str) obj->wifi_signal = printer_signal; obj->dev_connection_type = connect_type; obj->bind_state = bind_state; + obj->bind_sec_link = sec_link; //load access code AppConfig* config = Slic3r::GUI::wxGetApp().app_config; diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index 51d087f21f..eef378977f 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -433,6 +433,7 @@ public: std::string bind_user_name; std::string bind_user_id; std::string bind_state; /* free | occupied */ + std::string bind_sec_link; bool is_avaliable() { return bind_state == "free"; } time_t last_alive; bool m_is_online; diff --git a/src/slic3r/GUI/Jobs/BindJob.cpp b/src/slic3r/GUI/Jobs/BindJob.cpp index 19b389e46d..e285062685 100644 --- a/src/slic3r/GUI/Jobs/BindJob.cpp +++ b/src/slic3r/GUI/Jobs/BindJob.cpp @@ -32,10 +32,11 @@ wxString get_login_fail_reason(std::string fail_reason) return _L("Unknown Failure"); } -BindJob::BindJob(std::shared_ptr pri, Plater *plater, std::string dev_id, std::string dev_ip) +BindJob::BindJob(std::shared_ptr pri, Plater *plater, std::string dev_id, std::string dev_ip, std::string sec_link) : PlaterJob{std::move(pri), plater}, m_dev_id(dev_id), - m_dev_ip(dev_ip) + m_dev_ip(dev_ip), + m_sec_link(sec_link) { ; } @@ -79,7 +80,7 @@ void BindJob::process() long offset = tz.GetOffset(); std::string timezone = get_timezone_utc_hm(offset); - int result = m_agent->bind(m_dev_ip, m_dev_id, timezone, + int result = m_agent->bind(m_dev_ip, m_dev_id, m_sec_link, timezone, [this, &curr_percent, &msg](int stage, int code, std::string info) { if (stage == BBL::BindJobStage::LoginStageConnect) { curr_percent = 15; diff --git a/src/slic3r/GUI/Jobs/BindJob.hpp b/src/slic3r/GUI/Jobs/BindJob.hpp index 89db7def24..4fa9e1ea11 100644 --- a/src/slic3r/GUI/Jobs/BindJob.hpp +++ b/src/slic3r/GUI/Jobs/BindJob.hpp @@ -16,13 +16,14 @@ class BindJob : public PlaterJob std::function m_success_fun{nullptr}; std::string m_dev_id; std::string m_dev_ip; + std::string m_sec_link; bool m_job_finished{ false }; int m_print_job_completed_id = 0; protected: void on_exception(const std::exception_ptr &) override; public: - BindJob(std::shared_ptr pri, Plater *plater, std::string dev_id, std::string dev_ip); + BindJob(std::shared_ptr pri, Plater *plater, std::string dev_id, std::string dev_ip, std::string sec_link); int status_range() const override { diff --git a/src/slic3r/Utils/NetworkAgent.cpp b/src/slic3r/Utils/NetworkAgent.cpp index a7a31b9aad..498c081db9 100644 --- a/src/slic3r/Utils/NetworkAgent.cpp +++ b/src/slic3r/Utils/NetworkAgent.cpp @@ -799,11 +799,11 @@ std::string NetworkAgent::build_login_info() return ret; } -int NetworkAgent::bind(std::string dev_ip, std::string dev_id, std::string timezone, OnUpdateStatusFn update_fn) +int NetworkAgent::bind(std::string dev_ip, std::string dev_id, std::string sec_link, std::string timezone, OnUpdateStatusFn update_fn) { int ret = 0; if (network_agent && bind_ptr) { - ret = bind_ptr(network_agent, dev_ip, dev_id, timezone, update_fn); + ret = bind_ptr(network_agent, dev_ip, dev_id, sec_link, timezone, update_fn); if (ret) BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << boost::format(" error: network_agent=%1%, ret=%2%, dev_ip=%3%, timezone=%4%") %network_agent %ret %dev_ip %timezone; diff --git a/src/slic3r/Utils/NetworkAgent.hpp b/src/slic3r/Utils/NetworkAgent.hpp index 07a0b2e068..03020c7451 100644 --- a/src/slic3r/Utils/NetworkAgent.hpp +++ b/src/slic3r/Utils/NetworkAgent.hpp @@ -45,7 +45,7 @@ typedef std::string (*func_get_user_nickanme)(void *agent); typedef std::string (*func_build_login_cmd)(void *agent); typedef std::string (*func_build_logout_cmd)(void *agent); typedef std::string (*func_build_login_info)(void *agent); -typedef int (*func_bind)(void *agent, std::string dev_ip, std::string dev_id, std::string timezone, OnUpdateStatusFn update_fn); +typedef int (*func_bind)(void *agent, std::string dev_ip, std::string dev_id, std::string sec_link, std::string timezone, OnUpdateStatusFn update_fn); typedef int (*func_unbind)(void *agent, std::string dev_id); typedef std::string (*func_get_bambulab_host)(void *agent); typedef std::string (*func_get_user_selected_machine)(void *agent); @@ -134,7 +134,7 @@ public: std::string build_login_cmd(); std::string build_logout_cmd(); std::string build_login_info(); - int bind(std::string dev_ip, std::string dev_id, std::string timezone, OnUpdateStatusFn update_fn); + int bind(std::string dev_ip, std::string dev_id, std::string sec_link, std::string timezone, OnUpdateStatusFn update_fn); int unbind(std::string dev_id); std::string get_bambulab_host(); std::string get_user_selected_machine();