ENH: compatible with old firmware in mqtt keep alive

Change-Id: Iaee3401d8dd26553169da7a9a627b31357c3d302
Signed-off-by: Stone Li <stone.li@bambulab.com>
This commit is contained in:
Stone Li 2023-06-09 10:50:00 +08:00 committed by Lane.Wei
parent 6ea3259d05
commit 030b3f0c58
2 changed files with 35 additions and 3 deletions

View file

@ -1359,7 +1359,17 @@ void MachineObject::parse_version_func()
} }
if (firmware_type == PrinterFirmwareType::FIRMWARE_TYPE_PRODUCTION) { if (firmware_type == PrinterFirmwareType::FIRMWARE_TYPE_PRODUCTION) {
local_use_ssl_for_mqtt = ota_version->second.sw_ver.compare("01.03.01.04") >= 0; local_use_ssl_for_mqtt = ota_version->second.sw_ver.compare("01.03.01.04") >= 0;
}
if (lifecycle == PrinterFirmwareType::FIRMWARE_TYPE_PRODUCTION) {
is_support_mqtt_alive = ota_version->second.sw_ver.compare("01.05.06.05") >= 0;
}
else if (lifecycle == PrinterFirmwareType::FIRMWARE_TYPE_ENGINEER) {
is_support_mqtt_alive = ota_version->second.sw_ver.compare("00.03.10.05") >= 0;
}
else {
is_support_mqtt_alive = ota_version->second.sw_ver.compare("01.05.06.05") >= 0;
} }
is_support_remote_tunnel = true; is_support_remote_tunnel = true;
@ -1381,11 +1391,32 @@ void MachineObject::parse_version_func()
if (esp32_version != module_vers.end()) { if (esp32_version != module_vers.end()) {
ams_support_auto_switch_filament_flag = esp32_version->second.sw_ver.compare("00.03.11.50") >= 0; ams_support_auto_switch_filament_flag = esp32_version->second.sw_ver.compare("00.03.11.50") >= 0;
} }
if (lifecycle == PrinterFirmwareType::FIRMWARE_TYPE_PRODUCTION) {
is_support_mqtt_alive = ota_version->second.sw_ver.compare("01.03.50.01") >= 0;
}
else if (lifecycle == PrinterFirmwareType::FIRMWARE_TYPE_ENGINEER) {
is_support_mqtt_alive = ota_version->second.sw_ver.compare("00.06.03.51") >= 0;
}
else {
is_support_mqtt_alive = ota_version->second.sw_ver.compare("01.03.50.01") >= 0;
}
} else if (printer_type == "C12") { } else if (printer_type == "C12") {
is_support_ai_monitoring = true; is_support_ai_monitoring = true;
is_cloud_print_only = true; is_cloud_print_only = true;
is_support_remote_tunnel = true; is_support_remote_tunnel = true;
local_camera_proto = 1; local_camera_proto = 1;
if (lifecycle == PrinterFirmwareType::FIRMWARE_TYPE_PRODUCTION) {
is_support_mqtt_alive = ota_version->second.sw_ver.compare("01.03.50.01") >= 0;
}
else if (lifecycle == PrinterFirmwareType::FIRMWARE_TYPE_ENGINEER) {
is_support_mqtt_alive = ota_version->second.sw_ver.compare("00.06.03.51") >= 0;
}
else {
is_support_mqtt_alive = ota_version->second.sw_ver.compare("01.03.50.01") >= 0;
}
} }
} }
@ -4139,7 +4170,7 @@ void DeviceManager::set_agent(NetworkAgent* agent)
void DeviceManager::check_pushing() void DeviceManager::check_pushing()
{ {
MachineObject* obj = this->get_selected_machine(); MachineObject* obj = this->get_selected_machine();
if (obj) { if (obj && !obj->is_support_mqtt_alive) {
std::chrono::system_clock::time_point start = std::chrono::system_clock::now(); std::chrono::system_clock::time_point start = std::chrono::system_clock::now();
auto internal = std::chrono::duration_cast<std::chrono::milliseconds>(start - obj->last_update_time); auto internal = std::chrono::duration_cast<std::chrono::milliseconds>(start - obj->last_update_time);
if (internal.count() > TIMEOUT_FOR_STRAT && internal.count() < 1000 * 60 * 60 * 300) { if (internal.count() > TIMEOUT_FOR_STRAT && internal.count() < 1000 * 60 * 60 * 300) {

View file

@ -607,7 +607,7 @@ public:
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; int upgrade_display_hold_count = 0;
PrinterFirmwareType firmware_type; // engineer|production PrinterFirmwareType firmware_type; // engineer|production
PrinterFirmwareType lifecycle; PrinterFirmwareType lifecycle { PrinterFirmwareType::FIRMEARE_TYPE_UKNOWN };
std::string upgrade_progress; std::string upgrade_progress;
std::string upgrade_message; std::string upgrade_message;
std::string upgrade_status; std::string upgrade_status;
@ -720,6 +720,7 @@ public:
bool is_support_ams_humidity {true}; bool is_support_ams_humidity {true};
bool is_support_filament_edit_virtual_tray {true}; bool is_support_filament_edit_virtual_tray {true};
bool is_cloud_print_only {false}; bool is_cloud_print_only {false};
bool is_support_mqtt_alive {false};
/* sdcard */ /* sdcard */
MachineObject::SdcardState sdcard_state { NO_SDCARD }; MachineObject::SdcardState sdcard_state { NO_SDCARD };