fix upgrade issue when process restart and go to normal mode when all upgrade finish.
This commit is contained in:
parent
49b67921c5
commit
50eb148a30
@ -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);
|
||||
UpgradeCfg::WriteCfg(upgrade_);
|
||||
GenerateUpgradeSchedule();
|
||||
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);
|
||||
UpgradeCfg::WriteCfg(upgrade_);
|
||||
GenerateUpgradeSchedule();
|
||||
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);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user