Files
OrcaSlicer/src/slic3r/GUI/DeviceCore/DevFilaAmsSetting.cpp
xin.zhang 491100a9d2 ENH: support AMS switching for A series; clean class AMSSetting
jira: [STUDIO-14068] [STUDIO-14330]
Change-Id: I6281fbf56f3bf406ef28103998790a2a98c3f5c0
(cherry picked from commit 8ee02ec73076691c482ea6d089a49ea1c99ad10c)
2025-10-28 15:29:55 +08:00

70 lines
2.6 KiB
C++

#include "DevFilaAmsSetting.h"
#include "DevUtil.h"
namespace Slic3r {
void DevAmsSystemSetting::Reset()
{
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);
}
}
}
}
}