mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-08-01 15:22:21 +00:00
Make 02.08.01.52 the default network plugin and match its ABI
The newer plugin adds four PrintParams fields (task_timelapse_use_internal, extruder_cali_manual_mode, svc_context, slicer_uid) and an extra dev_model argument to bind. Both cross the by-value C ABI boundary, so match the struct layout and thread dev_model through the bind chain, else start_print and bind corrupt the stack on the newer plugin. Keep 02.03.00.62 selectable as a fallback.
This commit is contained in:
@@ -813,7 +813,7 @@ PingCodeBindDialog::~PingCodeBindDialog() {
|
|||||||
|
|
||||||
m_simplebook->SetSelection(0);
|
m_simplebook->SetSelection(0);
|
||||||
auto m_bind_job = std::make_unique<BindJob>(
|
auto m_bind_job = std::make_unique<BindJob>(
|
||||||
m_machine_info->get_dev_id(), m_machine_info->get_dev_ip(), m_machine_info->bind_sec_link, m_machine_info->bind_ssdp_version);
|
m_machine_info->get_dev_id(), m_machine_info->get_dev_ip(), m_machine_info->get_show_printer_type(), m_machine_info->bind_sec_link, m_machine_info->bind_ssdp_version);
|
||||||
|
|
||||||
if (m_machine_info && (m_machine_info->get_printer_series() == PrinterSeries::SERIES_X1)) {
|
if (m_machine_info && (m_machine_info->get_printer_series() == PrinterSeries::SERIES_X1)) {
|
||||||
m_bind_job->set_improved(false);
|
m_bind_job->set_improved(false);
|
||||||
|
|||||||
@@ -18,10 +18,11 @@ static auto waiting_auth_str = _u8L("Logging in");
|
|||||||
static auto login_failed_str = _u8L("Login failed");
|
static auto login_failed_str = _u8L("Login failed");
|
||||||
|
|
||||||
|
|
||||||
BindJob::BindJob(std::string dev_id, std::string dev_ip, std::string sec_link, std::string ssdp_version)
|
BindJob::BindJob(std::string dev_id, std::string dev_ip, std::string dev_model, std::string sec_link, std::string ssdp_version)
|
||||||
:
|
:
|
||||||
m_dev_id(dev_id),
|
m_dev_id(dev_id),
|
||||||
m_dev_ip(dev_ip),
|
m_dev_ip(dev_ip),
|
||||||
|
m_dev_model(dev_model),
|
||||||
m_sec_link(sec_link),
|
m_sec_link(sec_link),
|
||||||
m_ssdp_version(ssdp_version)
|
m_ssdp_version(ssdp_version)
|
||||||
{
|
{
|
||||||
@@ -60,7 +61,7 @@ void BindJob::process(Ctl &ctl)
|
|||||||
std::string timezone = get_timezone_utc_hm(offset);
|
std::string timezone = get_timezone_utc_hm(offset);
|
||||||
|
|
||||||
m_agent->track_update_property("ssdp_version", m_ssdp_version, "string");
|
m_agent->track_update_property("ssdp_version", m_ssdp_version, "string");
|
||||||
int result = m_agent->bind(m_dev_ip, m_dev_id, m_sec_link, timezone, m_improved,
|
int result = m_agent->bind(m_dev_ip, m_dev_id, m_dev_model, m_sec_link, timezone, m_improved,
|
||||||
[this, &ctl, &curr_percent, &msg, &result_code, &result_info](int stage, int code, std::string info) {
|
[this, &ctl, &curr_percent, &msg, &result_code, &result_info](int stage, int code, std::string info) {
|
||||||
|
|
||||||
result_code = code;
|
result_code = code;
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ class BindJob : public Job
|
|||||||
std::function<void()> m_success_fun{nullptr};
|
std::function<void()> m_success_fun{nullptr};
|
||||||
std::string m_dev_id;
|
std::string m_dev_id;
|
||||||
std::string m_dev_ip;
|
std::string m_dev_ip;
|
||||||
|
std::string m_dev_model;
|
||||||
std::string m_sec_link;
|
std::string m_sec_link;
|
||||||
std::string m_ssdp_version;
|
std::string m_ssdp_version;
|
||||||
bool m_job_finished{ false };
|
bool m_job_finished{ false };
|
||||||
@@ -23,7 +24,7 @@ class BindJob : public Job
|
|||||||
bool m_improved{false};
|
bool m_improved{false};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
BindJob(std::string dev_id, std::string dev_ip, std::string sec_link, std::string ssdp_version);
|
BindJob(std::string dev_id, std::string dev_ip, std::string dev_model, std::string sec_link, std::string ssdp_version);
|
||||||
|
|
||||||
int status_range() const
|
int status_range() const
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ typedef std::string (*func_build_login_info)(void *agent);
|
|||||||
typedef int (*func_ping_bind)(void *agent, std::string ping_code);
|
typedef int (*func_ping_bind)(void *agent, std::string ping_code);
|
||||||
typedef int (*func_bind_detect)(void *agent, std::string dev_ip, std::string sec_link, detectResult& detect);
|
typedef int (*func_bind_detect)(void *agent, std::string dev_ip, std::string sec_link, detectResult& detect);
|
||||||
typedef int (*func_set_server_callback)(void *agent, OnServerErrFn fn);
|
typedef int (*func_set_server_callback)(void *agent, OnServerErrFn fn);
|
||||||
typedef int (*func_bind)(void *agent, std::string dev_ip, std::string dev_id, std::string sec_link, std::string timezone, bool improved, OnUpdateStatusFn update_fn);
|
typedef int (*func_bind)(void *agent, std::string dev_ip, std::string dev_id, std::string dev_model, std::string sec_link, std::string timezone, bool improved, OnUpdateStatusFn update_fn);
|
||||||
typedef int (*func_unbind)(void *agent, std::string dev_id);
|
typedef int (*func_unbind)(void *agent, std::string dev_id);
|
||||||
typedef std::string (*func_get_bambulab_host)(void *agent);
|
typedef std::string (*func_get_bambulab_host)(void *agent);
|
||||||
typedef std::string (*func_get_user_selected_machine)(void *agent);
|
typedef std::string (*func_get_user_selected_machine)(void *agent);
|
||||||
|
|||||||
@@ -138,13 +138,13 @@ int BBLPrinterAgent::bind_detect(std::string dev_ip, std::string sec_link, detec
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int BBLPrinterAgent::bind(std::string dev_ip, std::string dev_id, std::string sec_link, std::string timezone, bool improved, OnUpdateStatusFn update_fn)
|
int BBLPrinterAgent::bind(std::string dev_ip, std::string dev_id, std::string dev_model, std::string sec_link, std::string timezone, bool improved, OnUpdateStatusFn update_fn)
|
||||||
{
|
{
|
||||||
auto& plugin = BBLNetworkPlugin::instance();
|
auto& plugin = BBLNetworkPlugin::instance();
|
||||||
auto agent = plugin.get_agent();
|
auto agent = plugin.get_agent();
|
||||||
auto func = plugin.get_bind();
|
auto func = plugin.get_bind();
|
||||||
if (func && agent) {
|
if (func && agent) {
|
||||||
return func(agent, dev_ip, dev_id, sec_link, timezone, improved, update_fn);
|
return func(agent, dev_ip, dev_id, dev_model, sec_link, timezone, improved, update_fn);
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ public:
|
|||||||
// Binding
|
// Binding
|
||||||
int ping_bind(std::string ping_code) override;
|
int ping_bind(std::string ping_code) override;
|
||||||
int bind_detect(std::string dev_ip, std::string sec_link, detectResult& detect) override;
|
int bind_detect(std::string dev_ip, std::string sec_link, detectResult& detect) override;
|
||||||
int bind(std::string dev_ip, std::string dev_id, std::string sec_link, std::string timezone, bool improved, OnUpdateStatusFn update_fn) override;
|
int bind(std::string dev_ip, std::string dev_id, std::string dev_model, std::string sec_link, std::string timezone, bool improved, OnUpdateStatusFn update_fn) override;
|
||||||
int unbind(std::string dev_id) override;
|
int unbind(std::string dev_id) override;
|
||||||
int request_bind_ticket(std::string* ticket) override;
|
int request_bind_ticket(std::string* ticket) override;
|
||||||
int set_server_callback(OnServerErrFn fn) override;
|
int set_server_callback(OnServerErrFn fn) override;
|
||||||
|
|||||||
@@ -127,7 +127,7 @@ public:
|
|||||||
/**
|
/**
|
||||||
* Execute the multi-stage printer binding workflow.
|
* Execute the multi-stage printer binding workflow.
|
||||||
*/
|
*/
|
||||||
virtual int bind(std::string dev_ip, std::string dev_id, std::string sec_link, std::string timezone, bool improved, OnUpdateStatusFn update_fn) = 0;
|
virtual int bind(std::string dev_ip, std::string dev_id, std::string dev_model, std::string sec_link, std::string timezone, bool improved, OnUpdateStatusFn update_fn) = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove the association between account and printer.
|
* Remove the association between account and printer.
|
||||||
|
|||||||
@@ -229,10 +229,11 @@ int MoonrakerPrinterAgent::bind_detect(std::string dev_ip, std::string sec_link,
|
|||||||
}
|
}
|
||||||
|
|
||||||
int MoonrakerPrinterAgent::bind(
|
int MoonrakerPrinterAgent::bind(
|
||||||
std::string dev_ip, std::string dev_id, std::string sec_link, std::string timezone, bool improved, OnUpdateStatusFn update_fn)
|
std::string dev_ip, std::string dev_id, std::string dev_model, std::string sec_link, std::string timezone, bool improved, OnUpdateStatusFn update_fn)
|
||||||
{
|
{
|
||||||
(void) dev_ip;
|
(void) dev_ip;
|
||||||
(void) dev_id;
|
(void) dev_id;
|
||||||
|
(void) dev_model;
|
||||||
(void) sec_link;
|
(void) sec_link;
|
||||||
(void) timezone;
|
(void) timezone;
|
||||||
(void) improved;
|
(void) improved;
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ public:
|
|||||||
// Binding
|
// Binding
|
||||||
int ping_bind(std::string ping_code) override;
|
int ping_bind(std::string ping_code) override;
|
||||||
int bind_detect(std::string dev_ip, std::string sec_link, detectResult& detect) override;
|
int bind_detect(std::string dev_ip, std::string sec_link, detectResult& detect) override;
|
||||||
int bind(std::string dev_ip, std::string dev_id, std::string sec_link, std::string timezone, bool improved, OnUpdateStatusFn update_fn) override;
|
int bind(std::string dev_ip, std::string dev_id, std::string dev_model, std::string sec_link, std::string timezone, bool improved, OnUpdateStatusFn update_fn) override;
|
||||||
int unbind(std::string dev_id) override;
|
int unbind(std::string dev_id) override;
|
||||||
int request_bind_ticket(std::string* ticket) override;
|
int request_bind_ticket(std::string* ticket) override;
|
||||||
int set_server_callback(OnServerErrFn fn) override;
|
int set_server_callback(OnServerErrFn fn) override;
|
||||||
|
|||||||
@@ -824,10 +824,10 @@ int NetworkAgent::bind_detect(std::string dev_ip, std::string sec_link, detectRe
|
|||||||
}
|
}
|
||||||
|
|
||||||
int NetworkAgent::bind(
|
int NetworkAgent::bind(
|
||||||
std::string dev_ip, std::string dev_id, std::string sec_link, std::string timezone, bool improved, OnUpdateStatusFn update_fn)
|
std::string dev_ip, std::string dev_id, std::string dev_model, std::string sec_link, std::string timezone, bool improved, OnUpdateStatusFn update_fn)
|
||||||
{
|
{
|
||||||
if (m_printer_agent)
|
if (m_printer_agent)
|
||||||
return m_printer_agent->bind(dev_ip, dev_id, sec_link, timezone, improved, update_fn);
|
return m_printer_agent->bind(dev_ip, dev_id, dev_model, sec_link, timezone, improved, update_fn);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -150,7 +150,7 @@ public:
|
|||||||
bool start_discovery(bool start, bool sending);
|
bool start_discovery(bool start, bool sending);
|
||||||
int ping_bind(std::string ping_code);
|
int ping_bind(std::string ping_code);
|
||||||
int bind_detect(std::string dev_ip, std::string sec_link, detectResult& detect);
|
int bind_detect(std::string dev_ip, std::string sec_link, detectResult& detect);
|
||||||
int bind(std::string dev_ip, std::string dev_id, std::string sec_link, std::string timezone, bool improved, OnUpdateStatusFn update_fn);
|
int bind(std::string dev_ip, std::string dev_id, std::string dev_model, std::string sec_link, std::string timezone, bool improved, OnUpdateStatusFn update_fn);
|
||||||
int unbind(std::string dev_id);
|
int unbind(std::string dev_id);
|
||||||
std::string get_user_selected_machine();
|
std::string get_user_selected_machine();
|
||||||
int set_user_selected_machine(std::string dev_id);
|
int set_user_selected_machine(std::string dev_id);
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ int OrcaPrinterAgent::bind_detect(std::string dev_ip, std::string sec_link, dete
|
|||||||
}
|
}
|
||||||
|
|
||||||
int OrcaPrinterAgent::bind(
|
int OrcaPrinterAgent::bind(
|
||||||
std::string dev_ip, std::string dev_id, std::string sec_link, std::string timezone, bool improved, OnUpdateStatusFn update_fn)
|
std::string dev_ip, std::string dev_id, std::string dev_model, std::string sec_link, std::string timezone, bool improved, OnUpdateStatusFn update_fn)
|
||||||
{
|
{
|
||||||
return BAMBU_NETWORK_SUCCESS;
|
return BAMBU_NETWORK_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ public:
|
|||||||
// Binding
|
// Binding
|
||||||
int ping_bind(std::string ping_code) override;
|
int ping_bind(std::string ping_code) override;
|
||||||
int bind_detect(std::string dev_ip, std::string sec_link, detectResult& detect) override;
|
int bind_detect(std::string dev_ip, std::string sec_link, detectResult& detect) override;
|
||||||
int bind(std::string dev_ip, std::string dev_id, std::string sec_link, std::string timezone, bool improved, OnUpdateStatusFn update_fn) override;
|
int bind(std::string dev_ip, std::string dev_id, std::string dev_model, std::string sec_link, std::string timezone, bool improved, OnUpdateStatusFn update_fn) override;
|
||||||
int unbind(std::string dev_id) override;
|
int unbind(std::string dev_id) override;
|
||||||
int request_bind_ticket(std::string* ticket) override;
|
int request_bind_ticket(std::string* ticket) override;
|
||||||
int set_server_callback(OnServerErrFn fn) override;
|
int set_server_callback(OnServerErrFn fn) override;
|
||||||
|
|||||||
@@ -269,14 +269,18 @@ struct PrintParams {
|
|||||||
bool task_vibration_cali; /* vibration calibration of task */
|
bool task_vibration_cali; /* vibration calibration of task */
|
||||||
bool task_layer_inspect; /* first layer inspection of task */
|
bool task_layer_inspect; /* first layer inspection of task */
|
||||||
bool task_record_timelapse; /* record timelapse of task */
|
bool task_record_timelapse; /* record timelapse of task */
|
||||||
|
bool task_timelapse_use_internal;
|
||||||
bool task_use_ams;
|
bool task_use_ams;
|
||||||
std::string task_bed_type;
|
std::string task_bed_type;
|
||||||
std::string extra_options;
|
std::string extra_options;
|
||||||
int auto_bed_leveling{ 0 };
|
int auto_bed_leveling{ 0 };
|
||||||
int auto_flow_cali{ 0 };
|
int auto_flow_cali{ 0 };
|
||||||
int auto_offset_cali{ 0 };
|
int auto_offset_cali{ 0 };
|
||||||
|
int extruder_cali_manual_mode{ -1 };
|
||||||
bool task_ext_change_assist;
|
bool task_ext_change_assist;
|
||||||
bool try_emmc_print;
|
bool try_emmc_print;
|
||||||
|
std::string svc_context;
|
||||||
|
std::string slicer_uid;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct TaskQueryParams
|
struct TaskQueryParams
|
||||||
@@ -313,7 +317,8 @@ struct NetworkLibraryVersion {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static const NetworkLibraryVersion AVAILABLE_NETWORK_VERSIONS[] = {
|
static const NetworkLibraryVersion AVAILABLE_NETWORK_VERSIONS[] = {
|
||||||
{"02.03.00.62", "02.03.00.62", nullptr, true, nullptr},
|
{"02.08.01.52", "02.08.01.52", nullptr, true, nullptr},
|
||||||
|
{"02.03.00.62", "02.03.00.62", nullptr, false, nullptr},
|
||||||
{"02.01.01.52", "02.01.01.52", nullptr, false, nullptr},
|
{"02.01.01.52", "02.01.01.52", nullptr, false, nullptr},
|
||||||
{"02.00.02.50", "02.00.02.50", nullptr, false, "This version may crash on startup due to Bambu Lab's signature verification."},
|
{"02.00.02.50", "02.00.02.50", nullptr, false, "This version may crash on startup due to Bambu Lab's signature verification."},
|
||||||
{BAMBU_NETWORK_AGENT_VERSION_LEGACY, BAMBU_NETWORK_AGENT_VERSION_LEGACY " (legacy)", nullptr, false, nullptr},
|
{BAMBU_NETWORK_AGENT_VERSION_LEGACY, BAMBU_NETWORK_AGENT_VERSION_LEGACY " (legacy)", nullptr, false, nullptr},
|
||||||
|
|||||||
Reference in New Issue
Block a user