diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index e10371b862..bf84f5076b 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -2653,29 +2653,36 @@ int MachineObject::parse_json(std::string payload) this->command_get_version(); }); } - upgrade_display_state = jj["upgrade_state"]["dis_state"].get(); + if (upgrade_display_hold_count > 0) + upgrade_display_hold_count--; + else + upgrade_display_state = jj["upgrade_state"]["dis_state"].get(); } else { - //BBS compatibility with old version - if (upgrade_status == "DOWNLOADING" - || upgrade_status == "FLASHING" - || upgrade_status == "UPGRADE_REQUEST" - || upgrade_status == "PRE_FLASH_START" - || upgrade_status == "PRE_FLASH_SUCCESS") { - upgrade_display_state = (int)UpgradingDisplayState::UpgradingInProgress; - } - else if (upgrade_status == "UPGRADE_SUCCESS" - || upgrade_status == "DOWNLOAD_FAIL" - || upgrade_status == "FLASH_FAIL" - || upgrade_status == "PRE_FLASH_FAIL" - || upgrade_status == "UPGRADE_FAIL") { - upgrade_display_state = (int)UpgradingDisplayState::UpgradingFinished; - } + if (upgrade_display_hold_count > 0) + upgrade_display_hold_count--; else { - if (upgrade_new_version) { - upgrade_display_state = (int)UpgradingDisplayState::UpgradingAvaliable; + //BBS compatibility with old version + if (upgrade_status == "DOWNLOADING" + || upgrade_status == "FLASHING" + || upgrade_status == "UPGRADE_REQUEST" + || upgrade_status == "PRE_FLASH_START" + || upgrade_status == "PRE_FLASH_SUCCESS") { + upgrade_display_state = (int)UpgradingDisplayState::UpgradingInProgress; + } + else if (upgrade_status == "UPGRADE_SUCCESS" + || upgrade_status == "DOWNLOAD_FAIL" + || upgrade_status == "FLASH_FAIL" + || upgrade_status == "PRE_FLASH_FAIL" + || upgrade_status == "UPGRADE_FAIL") { + upgrade_display_state = (int)UpgradingDisplayState::UpgradingFinished; } else { - upgrade_display_state = (int)UpgradingDisplayState::UpgradingUnavaliable; + if (upgrade_new_version) { + upgrade_display_state = (int)UpgradingDisplayState::UpgradingAvaliable; + } + else { + upgrade_display_state = (int)UpgradingDisplayState::UpgradingUnavaliable; + } } } } @@ -3333,6 +3340,21 @@ int MachineObject::parse_json(std::string payload) } } catch (...) {} + // upgrade + try { + if (j.contains("upgrade")) { + if (j["upgrade"].contains("command")) { + if (j["upgrade"]["command"].get() == "upgrade_confirm") { + this->upgrade_display_state == UpgradingInProgress; + upgrade_display_hold_count = HOLD_COUNT_MAX; + BOOST_LOG_TRIVIAL(info) << "ack of upgrade_confirm"; + } + } + } + } + catch (...) { + ; + } // event info try { diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index 2f203fd48d..15021a160b 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -533,6 +533,7 @@ public: bool upgrade_new_version { false }; bool upgrade_consistency_request { false }; int upgrade_display_state = 0; // 0 : upgrade unavailable, 1: upgrade idle, 2: upgrading, 3: upgrade_finished + int upgrade_display_hold_count = 0; PrinterFirmwareType firmware_type; // engineer|production std::string upgrade_progress; std::string upgrade_message; diff --git a/src/slic3r/GUI/UpgradePanel.cpp b/src/slic3r/GUI/UpgradePanel.cpp index 0f7c0b12d4..bff3d39c5a 100644 --- a/src/slic3r/GUI/UpgradePanel.cpp +++ b/src/slic3r/GUI/UpgradePanel.cpp @@ -738,6 +738,17 @@ void MachineInfoPanel::on_sys_color_changed() } } +void MachineInfoPanel::confirm_upgrade(MachineObject* obj) +{ + if (obj) { + obj->command_upgrade_confirm(); + obj->upgrade_display_state = MachineObject::UpgradingDisplayState::UpgradingInProgress; + obj->upgrade_display_hold_count = HOLD_COUNT_MAX; + // enter in progress status first + this->show_status(MachineObject::UpgradingDisplayState::UpgradingInProgress); + } +} + void MachineInfoPanel::upgrade_firmware_internal() { if (!m_obj) return; @@ -746,7 +757,7 @@ void MachineInfoPanel::upgrade_firmware_internal() { } else if (panel_type == ptAmsPanel) { m_obj->command_upgrade_firmware(m_ams_info); } else if (panel_type == ptPushPanel) { - m_obj->command_upgrade_confirm(); + confirm_upgrade(); } } @@ -755,9 +766,7 @@ void MachineInfoPanel::on_upgrade_firmware(wxCommandEvent &event) if (confirm_dlg == nullptr) { confirm_dlg = new SecondaryCheckDialog(this->GetParent(), wxID_ANY, _L("Update firmware")); confirm_dlg->Bind(EVT_SECONDARY_CHECK_CONFIRM, [this](wxCommandEvent& e) { - if (m_obj) { - m_obj->command_upgrade_confirm(); - } + this->confirm_upgrade(m_obj); }); } confirm_dlg->update_text(_L("Are you sure you want to update? This will take about 10 minutes. Do not turn off the power while the printer is updating.")); @@ -899,6 +908,8 @@ void UpgradePanel::update(MachineObject *obj) force_dlg->Bind(EVT_SECONDARY_CHECK_CONFIRM, [this](wxCommandEvent& e) { if (m_obj) { m_obj->command_upgrade_confirm(); + m_obj->upgrade_display_state == MachineObject::UpgradingDisplayState::UpgradingInProgress; + m_obj->upgrade_display_hold_count = HOLD_COUNT_MAX; } }); } diff --git a/src/slic3r/GUI/UpgradePanel.hpp b/src/slic3r/GUI/UpgradePanel.hpp index 55fa69b18f..4bab359b34 100644 --- a/src/slic3r/GUI/UpgradePanel.hpp +++ b/src/slic3r/GUI/UpgradePanel.hpp @@ -109,6 +109,7 @@ protected: void upgrade_firmware_internal(); void on_show_release_note(wxMouseEvent &event); + void confirm_upgrade(MachineObject* obj = nullptr); public: MachineInfoPanel(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString);