diff --git a/src/slic3r/GUI/Jobs/PrintJob.cpp b/src/slic3r/GUI/Jobs/PrintJob.cpp index 920b4270c9..7da188fc10 100644 --- a/src/slic3r/GUI/Jobs/PrintJob.cpp +++ b/src/slic3r/GUI/Jobs/PrintJob.cpp @@ -209,7 +209,7 @@ void PrintJob::process() params.filename = job_data._temp_path.string(); params.connection_type = this->connection_type; - result = m_agent->start_send_gcode_to_sdcard(params, nullptr, nullptr); + result = m_agent->start_send_gcode_to_sdcard(params, nullptr, nullptr, nullptr); if (result != 0) { BOOST_LOG_TRIVIAL(error) << "access code is invalid"; m_enter_ip_address_fun_fail(); @@ -391,6 +391,12 @@ void PrintJob::process() return was_canceled(); }; + auto wait_fn = [this](int state, std::string job_info) { + // TODO + return true; + }; + + if (params.connection_type != "lan") { if (params.dev_ip.empty()) params.comments = "no_ip"; @@ -413,7 +419,7 @@ void PrintJob::process() BOOST_LOG_TRIVIAL(info) << "print_job: use ftp send print only"; this->update_status(curr_percent, _L("Sending print job over LAN")); is_try_lan_mode = true; - result = m_agent->start_local_print_with_record(params, update_fn, cancel_fn); + result = m_agent->start_local_print_with_record(params, update_fn, cancel_fn, wait_fn); if (result < 0) { error_text = wxString::Format("Access code:%s Ip address:%s", params.password, params.dev_ip); // try to send with cloud @@ -429,7 +435,7 @@ void PrintJob::process() // try to send local with record BOOST_LOG_TRIVIAL(info) << "print_job: try to start local print with record"; this->update_status(curr_percent, _L("Sending print job over LAN")); - result = m_agent->start_local_print_with_record(params, update_fn, cancel_fn); + result = m_agent->start_local_print_with_record(params, update_fn, cancel_fn, wait_fn); if (result == 0) { params.comments = ""; } @@ -444,13 +450,13 @@ void PrintJob::process() // try to send with cloud BOOST_LOG_TRIVIAL(warning) << "print_job: try to send with cloud"; this->update_status(curr_percent, _L("Sending print job through cloud service")); - result = m_agent->start_print(params, update_fn, cancel_fn); + result = m_agent->start_print(params, update_fn, cancel_fn, wait_fn); } } else { BOOST_LOG_TRIVIAL(info) << "print_job: send with cloud"; this->update_status(curr_percent, _L("Sending print job through cloud service")); - result = m_agent->start_print(params, update_fn, cancel_fn); + result = m_agent->start_print(params, update_fn, cancel_fn, wait_fn); } } } else { @@ -489,6 +495,8 @@ void PrintJob::process() BOOST_LOG_TRIVIAL(error) << "print_job: failed, result = " << result; } else { + // wait for printer mqtt ready the same job id + wxGetApp().plater()->record_slice_preset("print"); BOOST_LOG_TRIVIAL(error) << "print_job: send ok."; diff --git a/src/slic3r/GUI/Jobs/SendJob.cpp b/src/slic3r/GUI/Jobs/SendJob.cpp index 76af20cc1f..ba5dc450bb 100644 --- a/src/slic3r/GUI/Jobs/SendJob.cpp +++ b/src/slic3r/GUI/Jobs/SendJob.cpp @@ -139,7 +139,7 @@ void SendJob::process() params.filename = job_data._temp_path.string(); params.connection_type = this->connection_type; - result = m_agent->start_send_gcode_to_sdcard(params, nullptr, nullptr); + result = m_agent->start_send_gcode_to_sdcard(params, nullptr, nullptr, nullptr); if (result != 0) { BOOST_LOG_TRIVIAL(error) << "access code is invalid"; m_enter_ip_address_fun_fail(); @@ -317,7 +317,7 @@ void SendJob::process() // try to send local with record BOOST_LOG_TRIVIAL(info) << "send_job: try to send gcode to printer"; this->update_status(curr_percent, _L("Sending gcode file over LAN")); - result = m_agent->start_send_gcode_to_sdcard(params, update_fn, cancel_fn); + result = m_agent->start_send_gcode_to_sdcard(params, update_fn, cancel_fn, nullptr); if (result == BAMBU_NETWORK_ERR_FTP_UPLOAD_FAILED) { params.comments = "upload_failed"; } else { @@ -335,7 +335,7 @@ void SendJob::process() } else { if (this->has_sdcard) { this->update_status(curr_percent, _L("Sending gcode file over LAN")); - result = m_agent->start_send_gcode_to_sdcard(params, update_fn, cancel_fn); + result = m_agent->start_send_gcode_to_sdcard(params, update_fn, cancel_fn, nullptr); } else { this->update_status(curr_percent, _L("An SD card needs to be inserted before sending to printer.")); return; diff --git a/src/slic3r/Utils/NetworkAgent.cpp b/src/slic3r/Utils/NetworkAgent.cpp index 2d3799642d..6c59c5d955 100644 --- a/src/slic3r/Utils/NetworkAgent.cpp +++ b/src/slic3r/Utils/NetworkAgent.cpp @@ -892,33 +892,33 @@ int NetworkAgent::set_user_selected_machine(std::string dev_id) return ret; } -int NetworkAgent::start_print(PrintParams params, OnUpdateStatusFn update_fn, WasCancelledFn cancel_fn) +int NetworkAgent::start_print(PrintParams params, OnUpdateStatusFn update_fn, WasCancelledFn cancel_fn, OnWaitFn wait_fn) { int ret = 0; if (network_agent && start_print_ptr) { - ret = start_print_ptr(network_agent, params, update_fn, cancel_fn); + ret = start_print_ptr(network_agent, params, update_fn, cancel_fn, wait_fn); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" : network_agent=%1%, ret=%2%, dev_id=%3%, task_name=%4%, project_name=%5%") %network_agent %ret %params.dev_id %params.task_name %params.project_name; } return ret; } -int NetworkAgent::start_local_print_with_record(PrintParams params, OnUpdateStatusFn update_fn, WasCancelledFn cancel_fn) +int NetworkAgent::start_local_print_with_record(PrintParams params, OnUpdateStatusFn update_fn, WasCancelledFn cancel_fn, OnWaitFn wait_fn) { int ret = 0; if (network_agent && start_local_print_with_record_ptr) { - ret = start_local_print_with_record_ptr(network_agent, params, update_fn, cancel_fn); + ret = start_local_print_with_record_ptr(network_agent, params, update_fn, cancel_fn, wait_fn); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" : network_agent=%1%, ret=%2%, dev_id=%3%, task_name=%4%, project_name=%5%") %network_agent %ret %params.dev_id %params.task_name %params.project_name; } return ret; } -int NetworkAgent::start_send_gcode_to_sdcard(PrintParams params, OnUpdateStatusFn update_fn, WasCancelledFn cancel_fn) +int NetworkAgent::start_send_gcode_to_sdcard(PrintParams params, OnUpdateStatusFn update_fn, WasCancelledFn cancel_fn, OnWaitFn wait_fn) { int ret = 0; if (network_agent && start_send_gcode_to_sdcard_ptr) { - ret = start_send_gcode_to_sdcard_ptr(network_agent, params, update_fn, cancel_fn); + ret = start_send_gcode_to_sdcard_ptr(network_agent, params, update_fn, cancel_fn, wait_fn); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(" : network_agent=%1%, ret=%2%, dev_id=%3%, task_name=%4%, project_name=%5%") % network_agent % ret % params.dev_id % params.task_name % params.project_name; }