diff --git a/scheduler/schedule.cpp b/scheduler/schedule.cpp index cb46aea..1032be3 100644 --- a/scheduler/schedule.cpp +++ b/scheduler/schedule.cpp @@ -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) { @@ -1113,18 +1116,32 @@ int SensorScheduler::UpgradeResult(uint16_t short_addr, int result) { result == kZigbeeHWMismatch || result == kUpgradeDoneBefore) { upgrade_list_.erase(short_addr); - upgrade_.erase(id); + 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); }