mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-08-05 17:17:42 +00:00
ENH: support AMS switching for A series; clean class AMSSetting
jira: [STUDIO-14068] [STUDIO-14330] Change-Id: I6281fbf56f3bf406ef28103998790a2a98c3f5c0 (cherry picked from commit 8ee02ec73076691c482ea6d089a49ea1c99ad10c)
This commit is contained in:
@@ -1,13 +1,70 @@
|
||||
#include "DevFilaAmsSetting.h"
|
||||
#include "DevUtil.h"
|
||||
|
||||
namespace Slic3r {
|
||||
|
||||
void DevAmsSystemSetting::Reset()
|
||||
{
|
||||
SetDetectOnInsertEnabled(false);
|
||||
m_enable_detect_on_insert.reset();
|
||||
SetDetectOnPowerupEnabled(false);
|
||||
SetDetectRemainEnabled(false);
|
||||
SetAutoRefillEnabled(false);
|
||||
}
|
||||
|
||||
void DevAmsSystemFirmwareSwitch::Reset()
|
||||
{
|
||||
m_status.clear();
|
||||
m_current_firmware_run = DevAmsSystemFirmware();
|
||||
m_current_firmware_sel = DevAmsSystemFirmware();
|
||||
m_firmwares.clear();
|
||||
}
|
||||
|
||||
void DevAmsSystemFirmwareSwitch::ParseFirmwareSwitch(const nlohmann::json& j)
|
||||
{
|
||||
if (!m_ctrl_switching.CheckCanUpdateData(j.contains("upgrade") ? j["upgrade"] :j)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (j.contains("print")) {
|
||||
const auto& print_jj = j["print"];
|
||||
if (print_jj.contains("upgrade_state")) {
|
||||
const auto& upgrade_jj = print_jj["upgrade_state"];
|
||||
if (upgrade_jj.contains("mc_for_ams_firmware")) {
|
||||
const auto& mc_for_ams_firmware_jj = upgrade_jj["mc_for_ams_firmware"];
|
||||
if (mc_for_ams_firmware_jj.contains("firmware")) {
|
||||
m_firmwares.clear();
|
||||
const auto& firmwares = mc_for_ams_firmware_jj["firmware"];
|
||||
for (auto item : firmwares) {
|
||||
DevAmsSystemFirmware firmware;
|
||||
DevJsonValParser::ParseVal(item, "id", firmware.m_firmare_idx);
|
||||
DevJsonValParser::ParseVal(item, "name", firmware.m_name);
|
||||
DevJsonValParser::ParseVal(item, "version", firmware.m_version);
|
||||
m_firmwares[firmware.m_firmare_idx] = firmware;
|
||||
}
|
||||
}
|
||||
|
||||
if (mc_for_ams_firmware_jj.contains("current_firmware_id")) {
|
||||
int idx = DevJsonValParser::GetVal(mc_for_ams_firmware_jj, "current_firmware_id", -1);
|
||||
if (m_firmwares.count(idx) != 0) {
|
||||
m_current_firmware_sel = m_firmwares[idx];
|
||||
} else {
|
||||
m_current_firmware_sel = DevAmsSystemFirmware();
|
||||
}
|
||||
}
|
||||
|
||||
if (mc_for_ams_firmware_jj.contains("current_run_firmware_id")) {
|
||||
auto idx = DevJsonValParser::GetVal(mc_for_ams_firmware_jj, "current_run_firmware_id", IDX_DC);
|
||||
if (m_firmwares.count(idx) != 0) {
|
||||
m_current_firmware_run = m_firmwares[idx];
|
||||
} else {
|
||||
m_current_firmware_run = DevAmsSystemFirmware();
|
||||
}
|
||||
}
|
||||
|
||||
DevJsonValParser::ParseVal(mc_for_ams_firmware_jj, "status", m_status);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user