fix upgrade issue when process restart and go to normal mode when all upgrade finish.

This commit is contained in:
pandx 2026-02-09 09:37:20 +08:00
parent 49b67921c5
commit 50eb148a30

View File

@ -686,6 +686,9 @@ init_config:
std::cout << value.asInt() << std::endl; // 转换并输出每个整数
zlog_debug(zbt, "[%d] upgrade sensor:%x", value.asInt());
upgrade_slice_sensor_id_[i] = value.asInt();
if (upgrade_slice_sensor_id_[i] > 0) {
upgrade_list_.insert(upgrade_slice_sensor_id_[i]);
}
++i;
}
if (i == 1) {
@ -1115,16 +1118,30 @@ int SensorScheduler::UpgradeResult(uint16_t short_addr, int result) {
upgrade_list_.erase(short_addr);
upgrade_.erase(id);
zlog_info(zbt, "[%d] short addr:%x upgrade successfully", id, short_addr);
if (upgrade_list_.size() == 0) {
zlog_info(zbt, "no upgrade sensor, go to normal status");
current_schedule_status_ = kScheduleStatusNormal;
set_schedule_status(current_schedule_status_);
UpgradeCfg::ClearCfg();
} else {
UpgradeCfg::WriteCfg(upgrade_);
GenerateUpgradeSchedule();
}
} else {
auto upgrade_iter = upgrade_.find(id);
if (upgrade_iter->second.try_times >= wave_resend_num_) {
zlog_warn(zbt, "[%d] short addr:%x upgrade %d time failure", id, short_addr, wave_resend_num_);
upgrade_list_.erase(short_addr);
upgrade_.erase(id);
if (upgrade_list_.size() == 0) {
zlog_info(zbt, "no upgrade sensor, go to normal status");
current_schedule_status_ = kScheduleStatusNormal;
set_schedule_status(current_schedule_status_);
UpgradeCfg::ClearCfg();
} else {
UpgradeCfg::WriteCfg(upgrade_);
GenerateUpgradeSchedule();
}
} else {
UpdateUpgradeInfo(id);
}