ENH: parse ack of upgrade confirm

Change-Id: I33691749221aac4c83f71d6d76708d7b2d8d6d4d
Signed-off-by: Stone Li <stone.li@bambulab.com>
This commit is contained in:
Stone Li 2023-01-11 09:26:01 +08:00 committed by Lane.Wei
parent 8c923804fc
commit 6fee9bcca1
4 changed files with 58 additions and 23 deletions

View file

@ -2653,8 +2653,14 @@ int MachineObject::parse_json(std::string payload)
this->command_get_version(); this->command_get_version();
}); });
} }
if (upgrade_display_hold_count > 0)
upgrade_display_hold_count--;
else
upgrade_display_state = jj["upgrade_state"]["dis_state"].get<int>(); upgrade_display_state = jj["upgrade_state"]["dis_state"].get<int>();
} else { } else {
if (upgrade_display_hold_count > 0)
upgrade_display_hold_count--;
else {
//BBS compatibility with old version //BBS compatibility with old version
if (upgrade_status == "DOWNLOADING" if (upgrade_status == "DOWNLOADING"
|| upgrade_status == "FLASHING" || upgrade_status == "FLASHING"
@ -2679,6 +2685,7 @@ int MachineObject::parse_json(std::string payload)
} }
} }
} }
}
// new ver list // new ver list
if (jj["upgrade_state"].contains("new_ver_list")) { if (jj["upgrade_state"].contains("new_ver_list")) {
m_new_ver_list_exist = true; m_new_ver_list_exist = true;
@ -3333,6 +3340,21 @@ int MachineObject::parse_json(std::string payload)
} }
} catch (...) {} } catch (...) {}
// upgrade
try {
if (j.contains("upgrade")) {
if (j["upgrade"].contains("command")) {
if (j["upgrade"]["command"].get<std::string>() == "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 // event info
try { try {

View file

@ -533,6 +533,7 @@ public:
bool upgrade_new_version { false }; bool upgrade_new_version { false };
bool upgrade_consistency_request { 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_state = 0; // 0 : upgrade unavailable, 1: upgrade idle, 2: upgrading, 3: upgrade_finished
int upgrade_display_hold_count = 0;
PrinterFirmwareType firmware_type; // engineer|production PrinterFirmwareType firmware_type; // engineer|production
std::string upgrade_progress; std::string upgrade_progress;
std::string upgrade_message; std::string upgrade_message;

View file

@ -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() { void MachineInfoPanel::upgrade_firmware_internal() {
if (!m_obj) if (!m_obj)
return; return;
@ -746,7 +757,7 @@ void MachineInfoPanel::upgrade_firmware_internal() {
} else if (panel_type == ptAmsPanel) { } else if (panel_type == ptAmsPanel) {
m_obj->command_upgrade_firmware(m_ams_info); m_obj->command_upgrade_firmware(m_ams_info);
} else if (panel_type == ptPushPanel) { } 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) { if (confirm_dlg == nullptr) {
confirm_dlg = new SecondaryCheckDialog(this->GetParent(), wxID_ANY, _L("Update firmware")); confirm_dlg = new SecondaryCheckDialog(this->GetParent(), wxID_ANY, _L("Update firmware"));
confirm_dlg->Bind(EVT_SECONDARY_CHECK_CONFIRM, [this](wxCommandEvent& e) { confirm_dlg->Bind(EVT_SECONDARY_CHECK_CONFIRM, [this](wxCommandEvent& e) {
if (m_obj) { this->confirm_upgrade(m_obj);
m_obj->command_upgrade_confirm();
}
}); });
} }
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.")); 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) { force_dlg->Bind(EVT_SECONDARY_CHECK_CONFIRM, [this](wxCommandEvent& e) {
if (m_obj) { if (m_obj) {
m_obj->command_upgrade_confirm(); m_obj->command_upgrade_confirm();
m_obj->upgrade_display_state == MachineObject::UpgradingDisplayState::UpgradingInProgress;
m_obj->upgrade_display_hold_count = HOLD_COUNT_MAX;
} }
}); });
} }

View file

@ -109,6 +109,7 @@ protected:
void upgrade_firmware_internal(); void upgrade_firmware_internal();
void on_show_release_note(wxMouseEvent &event); void on_show_release_note(wxMouseEvent &event);
void confirm_upgrade(MachineObject* obj = nullptr);
public: public:
MachineInfoPanel(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString); MachineInfoPanel(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL, const wxString& name = wxEmptyString);