diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 67249ce20..c3c226b76 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -1825,6 +1825,30 @@ int MachineObject::parse_json(std::string payload) #pragma endregion +#pragma region online + // parse online info + try { + if (jj.contains("online")) { + if (jj["online"].contains("ahb")) { + if (jj["online"]["ahb"].get()) { + online_ahb = true; + } else { + online_ahb = false; + } + } + if (jj["online"].contains("rfid")) { + if (jj["online"]["rfid"].get()) { + online_rfid = true; + } else { + online_rfid = false; + } + } + } + } catch (...) { + ; + } +#pragma endregion + #pragma region print_task if (jj.contains("printer_type")) { printer_type = parse_printer_type(jj["printer_type"].get()); @@ -2092,6 +2116,8 @@ int MachineObject::parse_json(std::string payload) new_ver_list.insert(std::make_pair(ver_info.name, ver_info)); } + } else { + new_ver_list.clear(); } } } diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index fd18c6057..e2759981f 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -374,6 +374,9 @@ public: bool is_mapping_exceed_filament(std::vector& result, int &exceed_index); void reset_mapping_result(std::vector& result); + /*online*/ + bool online_rfid; + bool online_ahb; /* temperature */ float nozzle_temp; diff --git a/src/slic3r/GUI/UpgradePanel.cpp b/src/slic3r/GUI/UpgradePanel.cpp index ae825909c..fc5a5cf34 100644 --- a/src/slic3r/GUI/UpgradePanel.cpp +++ b/src/slic3r/GUI/UpgradePanel.cpp @@ -105,6 +105,13 @@ MachineInfoPanel::MachineInfoPanel(wxWindow* parent, wxWindowID id, const wxPoin wxBoxSizer *m_ams_content_sizer = new wxBoxSizer(wxVERTICAL); m_ams_content_sizer->Add(0, 40, 0, wxEXPAND, FromDIP(5)); + + + m_ahb_panel = new AmsPanel(this, wxID_ANY); + m_ahb_panel->m_staticText_ams->SetLabel("AMS HUB"); + m_ams_content_sizer->Add(m_ahb_panel, 0, wxEXPAND, 0); + + m_ams_info_sizer = new wxGridSizer(0, 2, FromDIP(30), FromDIP(30)); @@ -120,7 +127,6 @@ MachineInfoPanel::MachineInfoPanel(wxWindow* parent, wxWindowID id, const wxPoin } m_ams_content_sizer->Add(m_ams_info_sizer, 0, wxEXPAND, 0); - m_ams_sizer->Add(m_ams_content_sizer, 1, wxEXPAND, 0); m_main_left_sizer->Add(m_ams_sizer, 0, wxEXPAND, 0); @@ -274,7 +280,7 @@ void MachineInfoPanel::update(MachineObject* obj) m_caption_text->SetLabelText(caption_text); show_status(MachineObject::UpgradingDisplayState::UpgradingUnavaliable); } else { - show_status(obj->upgrade_display_state); + show_status(obj->upgrade_display_state, obj->upgrade_status); if (obj->upgrade_display_state == (int) MachineObject::UpgradingDisplayState::UpgradingUnavaliable) { if (obj->can_abort()) { wxString caption_text = wxString::Format("%s(%s)", from_u8(obj->dev_name), _L("Printing")); @@ -356,6 +362,88 @@ void MachineInfoPanel::update_version_text(MachineObject* obj) void MachineInfoPanel::update_ams(MachineObject *obj) { + bool has_hub_model = false; + + //hub + if (!obj->online_ahb || obj->module_vers.find("ahb") == obj->module_vers.end()) + m_ahb_panel->Hide(); + else { + has_hub_model = true; + show_ams(true); + + for (auto i = 0; i < m_amspanel_list.GetCount(); i++) { + AmsPanel *amspanel = m_amspanel_list[i]; + amspanel->Hide(); + } + + m_ahb_panel->Show(); + + wxString hub_sn = "-"; + if (!obj->module_vers.find("ahb")->second.sn.empty()) { + wxString sn_text = obj->module_vers.find("ahb")->second.sn; + hub_sn = sn_text.MakeUpper(); + } + + + wxString hub_ver = "-"; + if (!obj->module_vers.find("ahb")->second.sw_ver.empty()) { + wxString sn_text = obj->module_vers.find("ahb")->second.sw_ver; + hub_ver = sn_text.MakeUpper(); + } + + /* auto ver_item = obj->new_ver_list.find("ahb"); + if (ver_item != obj->new_ver_list.end()) { + m_ahb_panel->m_ams_new_version_img->Show(); + hub_ver = wxString::Format("%s->%s", hub_ver, ver_item->second.sw_new_ver); + } else { + m_ahb_panel->m_ams_new_version_img->Hide(); + hub_ver = wxString::Format("%s(%s)", hub_ver, _L("Latest version")); + }*/ + + if (obj->new_ver_list.empty() && !obj->m_new_ver_list_exist) { + if (obj->upgrade_new_version && obj->ahb_new_version_number.compare(obj->module_vers.find("ahb")->second.sw_ver) != 0) { + m_ahb_panel->m_ams_new_version_img->Show(); + + if (obj->ahb_new_version_number.empty()) { + hub_ver = wxString::Format("%s", obj->module_vers.find("ahb")->second.sw_ver); + } else { + hub_ver = wxString::Format("%s->%s", obj->module_vers.find("ahb")->second.sw_ver, obj->ahb_new_version_number); + } + } else { + m_ahb_panel->m_ams_new_version_img->Hide(); + if (obj->ahb_new_version_number.empty()) { + wxString ver_text = wxString::Format("%s", obj->module_vers.find("ahb")->second.sw_ver); + hub_ver = ver_text; + } else { + wxString ver_text = wxString::Format("%s(%s)", obj->module_vers.find("ahb")->second.sw_ver, _L("Latest version")); + hub_ver = ver_text; + } + } + } else { + auto ver_item = obj->new_ver_list.find("ahb"); + + if (ver_item == obj->new_ver_list.end()) { + m_ahb_panel->m_ams_new_version_img->Hide(); + wxString ver_text = wxString::Format("%s(%s)", obj->module_vers.find("ahb")->second.sw_ver, _L("Latest version")); + hub_ver = ver_text; + } else { + if (ver_item->second.sw_new_ver != ver_item->second.sw_ver) { + m_ahb_panel->m_ams_new_version_img->Show(); + wxString ver_text = wxString::Format("%s->%s", ver_item->second.sw_ver, ver_item->second.sw_new_ver); + hub_ver = ver_text; + } else { + m_ahb_panel->m_ams_new_version_img->Hide(); + wxString ver_text = wxString::Format("%s(%s)", ver_item->second.sw_ver, _L("Latest version")); + hub_ver = ver_text; + } + } + } + + m_ahb_panel->m_staticText_ams_sn_val->SetLabelText(hub_sn); + m_ahb_panel->m_staticText_ams_ver_val->SetLabelText(hub_ver); + } + + //ams if (obj->ams_exist_bits != 0) { show_ams(true); std::map ver_list = obj->get_ams_version(); @@ -394,38 +482,43 @@ void MachineInfoPanel::update_ams(MachineObject *obj) wxString ams_text = wxString::Format("AMS%s", std::to_string(ams_id + 1)); ams_name = ams_text; - std::string ams_id = "ams/" + std::to_string(ams_index); - auto ver_item = obj->new_ver_list.find(ams_id); if (obj->new_ver_list.empty() && !obj->m_new_ver_list_exist) { if (obj->upgrade_new_version && obj->ams_new_version_number.compare(it->second.sw_ver) != 0) { amspanel->m_ams_new_version_img->Show(); - wxString ver_text = wxString::Format("%s->%s", it->second.sw_ver, obj->ams_new_version_number); - ams_ver = ver_text; + + if (obj->ams_new_version_number.empty()) { + ams_ver = wxString::Format("%s", it->second.sw_ver); + } else { + ams_ver = wxString::Format("%s->%s", it->second.sw_ver, obj->ams_new_version_number); + } } else { amspanel->m_ams_new_version_img->Hide(); if (obj->ams_new_version_number.empty()) { wxString ver_text = wxString::Format("%s", it->second.sw_ver); - ams_ver = ver_text; + ams_ver = ver_text; } else { wxString ver_text = wxString::Format("%s(%s)", it->second.sw_ver, _L("Latest version")); - ams_ver = ver_text; + ams_ver = ver_text; } } } else { + std::string ams_id = "ams/" + std::to_string(ams_index); + auto ver_item = obj->new_ver_list.find(ams_id); + if (ver_item == obj->new_ver_list.end()) { amspanel->m_ams_new_version_img->Hide(); wxString ver_text = wxString::Format("%s(%s)", it->second.sw_ver, _L("Latest version")); - ams_ver = ver_text; + ams_ver = ver_text; } else { if (ver_item->second.sw_new_ver != ver_item->second.sw_ver) { amspanel->m_ams_new_version_img->Show(); wxString ver_text = wxString::Format("%s->%s", ver_item->second.sw_ver, ver_item->second.sw_new_ver); - ams_ver = ver_text; + ams_ver = ver_text; } else { amspanel->m_ams_new_version_img->Hide(); wxString ver_text = wxString::Format("%s(%s)", ver_item->second.sw_ver, _L("Latest version")); - ams_ver = ver_text; + ams_ver = ver_text; } } } @@ -446,18 +539,19 @@ void MachineInfoPanel::update_ams(MachineObject *obj) ams_index++; } } else { - show_ams(false); + if (!has_hub_model) { show_ams(false); } + } this->Layout(); } -void MachineInfoPanel::show_status(int status) +void MachineInfoPanel::show_status(int status, std::string upgrade_status_str) { - if (last_status == status) - return; - last_status = status; + if (last_status == status && last_status_str == upgrade_status_str) return; + last_status = status; + last_status_str = upgrade_status_str; - BOOST_LOG_TRIVIAL(trace) << "MachineInfoPanel: show_status = " << status; + BOOST_LOG_TRIVIAL(trace) << "MachineInfoPanel: show_status = " << status << ", str = " << upgrade_status_str; Freeze(); @@ -487,15 +581,7 @@ void MachineInfoPanel::show_status(int status) m_staticText_upgrading_percent->SetForegroundColour(TEXT_NORMAL_CLR); m_staticText_upgrading_percent->Show(); } else if (status == (int) MachineObject::UpgradingDisplayState::UpgradingFinished) { - if (true) { - for (size_t i = 0; i < m_upgrading_sizer->GetItemCount(); i++) { m_upgrading_sizer->Show(true); } - m_button_upgrade_firmware->Hide(); - m_staticText_upgrading_info->SetLabel(_L("Upgrading success")); - m_staticText_upgrading_info->Show(); - m_staticText_upgrading_info->SetForegroundColour(TEXT_NORMAL_CLR); - m_staticText_upgrading_percent->SetForegroundColour(TEXT_NORMAL_CLR); - m_upgrade_retry_img->Hide(); - } else { + if (upgrade_status_str == "UPGRADE_FAIL") { m_staticText_upgrading_info->SetLabel(_L("Upgrading failed")); m_staticText_upgrading_info->SetForegroundColour(TEXT_FAILED_CLR); for (size_t i = 0; i < m_upgrading_sizer->GetItemCount(); i++) { m_upgrading_sizer->Show(true); } @@ -503,6 +589,14 @@ void MachineInfoPanel::show_status(int status) m_staticText_upgrading_info->Show(); m_staticText_upgrading_percent->Hide(); m_upgrade_retry_img->Show(); + } else { + for (size_t i = 0; i < m_upgrading_sizer->GetItemCount(); i++) { m_upgrading_sizer->Show(true); } + m_button_upgrade_firmware->Hide(); + m_staticText_upgrading_info->SetLabel(_L("Upgrading success")); + m_staticText_upgrading_info->Show(); + m_staticText_upgrading_info->SetForegroundColour(TEXT_NORMAL_CLR); + m_staticText_upgrading_percent->SetForegroundColour(TEXT_NORMAL_CLR); + m_upgrade_retry_img->Hide(); } } else { ; diff --git a/src/slic3r/GUI/UpgradePanel.hpp b/src/slic3r/GUI/UpgradePanel.hpp index cd8ec6e78..412d45ed1 100644 --- a/src/slic3r/GUI/UpgradePanel.hpp +++ b/src/slic3r/GUI/UpgradePanel.hpp @@ -48,7 +48,7 @@ protected: wxStaticText * m_staticText_ver_val; wxStaticLine * m_staticline; wxStaticBitmap *m_ams_img; - + AmsPanel* m_ahb_panel; wxGridSizer * m_ams_info_sizer; @@ -75,6 +75,7 @@ protected: wxBitmap upgrade_green_icon; wxBitmap upgrade_yellow_icon; int last_status = -1; + std::string last_status_str = ""; void upgrade_firmware_internal(); void on_upgrade_firmware(wxCommandEvent &event); @@ -94,7 +95,7 @@ public: void update(MachineObject *obj); void update_version_text(MachineObject *obj); void update_ams(MachineObject *obj); - void show_status(int status); + void show_status(int status, std::string upgrade_status_str = ""); void show_ams(bool show = false, bool force_update = false); MachineObject *m_obj{nullptr};