add codes for upgrade.
This commit is contained in:
parent
202da28673
commit
39dacf1021
@ -314,64 +314,6 @@ long SensorScheduler::CalcNextTimestamp(int id) {
|
||||
return available_ts;
|
||||
}
|
||||
|
||||
int SensorScheduler::UpdateSensorConfig(int short_addr) {
|
||||
int id = 0;
|
||||
auto iter = short_addr_map_.find(short_addr);
|
||||
if (iter == short_addr_map_.end()) {
|
||||
zlog_error(zct, "cannot find id for short_addr %d", short_addr);
|
||||
return 1;
|
||||
} else {
|
||||
id = iter->second;
|
||||
}
|
||||
if (update_.count(id) > 0) {
|
||||
return 0;
|
||||
}
|
||||
update_.insert(id);
|
||||
UpdateConfigFile();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SensorScheduler::UpdateConfigResult(int short_addr, int result) {
|
||||
int id = 0;
|
||||
auto iter = short_addr_map_.find(short_addr);
|
||||
if (iter == short_addr_map_.end()) {
|
||||
zlog_error(zct, "cannot find id for short_addr %d", short_addr);
|
||||
return 1;
|
||||
} else {
|
||||
id = iter->second;
|
||||
}
|
||||
if (result != 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
update_.erase(id);
|
||||
UpdateConfigFile();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SensorScheduler::UpgradeSensor(int short_addr, std::string sensor_type, int hw_version,
|
||||
std::string current_sw_version, std::string upgrade_sw_version) {
|
||||
int id = 0;
|
||||
auto iter = short_addr_map_.find(short_addr);
|
||||
if (iter == short_addr_map_.end()) {
|
||||
zlog_error(zct, "cannot find id for short_addr %d", short_addr);
|
||||
return 1;
|
||||
} else {
|
||||
id = iter->second;
|
||||
}
|
||||
UpgradeInfo info;
|
||||
info.try_times = 0;
|
||||
info.sensor_type = sensor_type;
|
||||
info.hw_version = hw_version;
|
||||
info.current_sw_version = current_sw_version;
|
||||
info.upgrade_sw_version = upgrade_sw_version;
|
||||
long ts = GetLocalTs();
|
||||
info.submit_time = GetUTCTime(ts);
|
||||
upgrade_[id] = info;
|
||||
UpdateUpgradeFile();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SensorScheduler::GetAvailableId(int short_addr) {
|
||||
int max_support_sensor[128] = {0};
|
||||
for (auto it = short_addr_map_.begin(); it != short_addr_map_.end(); ++it) {
|
||||
@ -475,6 +417,7 @@ int SensorScheduler::StartSchedule(int short_addr, int &next_duration) {
|
||||
if (upgrade_iter != upgrade_.end()) {
|
||||
if (upgrade_iter->second.try_times < 10) {
|
||||
current_request_ = kScheduleUpgrade;
|
||||
UpdateUpgradeInfo(id);
|
||||
zlog_warn(zct, "[%d] in wave slice to upgrade now from version:%s to %s, try time:%d",
|
||||
id, upgrade_iter->second.current_sw_version.c_str(),
|
||||
upgrade_iter->second.upgrade_sw_version.c_str(), upgrade_iter->second.try_times);
|
||||
@ -497,6 +440,7 @@ int SensorScheduler::StartSchedule(int short_addr, int &next_duration) {
|
||||
if (upgrade_iter != upgrade_.end()) {
|
||||
if (upgrade_iter->second.try_times < 10) {
|
||||
current_request_ = kScheduleUpgrade;
|
||||
UpdateUpgradeInfo(id);
|
||||
zlog_debug(zct, "[%d] in idle to upgrade now from version:%s to %s, try time:%d",
|
||||
id, upgrade_iter->second.current_sw_version.c_str(),
|
||||
upgrade_iter->second.upgrade_sw_version.c_str(), upgrade_iter->second.try_times);
|
||||
@ -521,26 +465,6 @@ int SensorScheduler::StartSchedule(int short_addr, int &next_duration) {
|
||||
}
|
||||
}
|
||||
|
||||
int SensorScheduler::UpgradeResult(int short_addr, int result) {
|
||||
int id = 0;
|
||||
auto iter = short_addr_map_.find(short_addr);
|
||||
if (iter == short_addr_map_.end()) {
|
||||
zlog_error(zct, "cannot find id for short_addr %d", short_addr);
|
||||
return 1;
|
||||
} else {
|
||||
id = iter->second;
|
||||
}
|
||||
|
||||
if (result == kUpgradeSuccess ||
|
||||
result == kProductTypeMismatch ||
|
||||
result == kZigbeeHWMismatch ||
|
||||
result == kUpgradeDoneBefore) {
|
||||
upgrade_.erase(id);
|
||||
UpdateUpgradeFile();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SensorScheduler::Config(int eigen_value_send_interval, int wave_form_send_interval, int eigen_value_send_duration, int wave_form_send_duration, int max_sensor_num) {
|
||||
if (!support_modification_) {
|
||||
zlog_warn(zct, "not support modification");
|
||||
@ -626,6 +550,92 @@ int SensorScheduler::CalcAvailableSlice(int eigen_value_send_interval, int wave_
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SensorScheduler::UpdateSensorConfig(int short_addr) {
|
||||
int id = 0;
|
||||
auto iter = short_addr_map_.find(short_addr);
|
||||
if (iter == short_addr_map_.end()) {
|
||||
zlog_error(zct, "cannot find id for short_addr %d", short_addr);
|
||||
return 1;
|
||||
} else {
|
||||
id = iter->second;
|
||||
}
|
||||
if (update_.count(id) > 0) {
|
||||
return 0;
|
||||
}
|
||||
update_.insert(id);
|
||||
UpdateConfigFile();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SensorScheduler::UpdateConfigResult(int short_addr, int result) {
|
||||
int id = 0;
|
||||
auto iter = short_addr_map_.find(short_addr);
|
||||
if (iter == short_addr_map_.end()) {
|
||||
zlog_error(zct, "cannot find id for short_addr %d", short_addr);
|
||||
return 1;
|
||||
} else {
|
||||
id = iter->second;
|
||||
}
|
||||
if (result != 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
update_.erase(id);
|
||||
UpdateConfigFile();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SensorScheduler::UpgradeSensor(int short_addr, std::string sensor_type, int hw_version,
|
||||
std::string current_sw_version, std::string upgrade_sw_version) {
|
||||
int id = 0;
|
||||
auto iter = short_addr_map_.find(short_addr);
|
||||
if (iter == short_addr_map_.end()) {
|
||||
zlog_error(zct, "cannot find id for short_addr %d", short_addr);
|
||||
return 1;
|
||||
} else {
|
||||
id = iter->second;
|
||||
}
|
||||
UpgradeInfo info;
|
||||
info.try_times = 0;
|
||||
info.sensor_type = sensor_type;
|
||||
info.hw_version = hw_version;
|
||||
info.current_sw_version = current_sw_version;
|
||||
info.upgrade_sw_version = upgrade_sw_version;
|
||||
long ts = GetLocalTs();
|
||||
info.submit_time = GetUTCTime(ts);
|
||||
upgrade_[id] = info;
|
||||
UpdateUpgradeFile();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SensorScheduler::UpgradeResult(int short_addr, int result) {
|
||||
int id = 0;
|
||||
auto iter = short_addr_map_.find(short_addr);
|
||||
if (iter == short_addr_map_.end()) {
|
||||
zlog_error(zct, "cannot find id for short_addr %d", short_addr);
|
||||
return 1;
|
||||
} else {
|
||||
id = iter->second;
|
||||
}
|
||||
|
||||
if (result == kUpgradeSuccess ||
|
||||
result == kProductTypeMismatch ||
|
||||
result == kZigbeeHWMismatch ||
|
||||
result == kUpgradeDoneBefore) {
|
||||
upgrade_.erase(id);
|
||||
UpdateUpgradeFile();
|
||||
} else {
|
||||
auto upgrade_iter = upgrade_.find(id);
|
||||
if (upgrade_iter->second.try_times >= 10) {
|
||||
zlog_error(zct, "[%d] short addr:%d upgrade 10 time failure", id, short_addr);
|
||||
upgrade_.erase(id);
|
||||
UpdateUpgradeFile();
|
||||
// TODO: call interface to write into database
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
long SensorScheduler::GetLocalTs() {
|
||||
auto now = std::chrono::system_clock::now();
|
||||
auto timestamp = std::chrono::duration_cast<std::chrono::seconds>(now.time_since_epoch()).count();
|
||||
@ -668,6 +678,14 @@ void SensorScheduler::UpdateConfigFile() {
|
||||
out_file.close();
|
||||
}
|
||||
|
||||
void SensorScheduler::UpdateUpgradeInfo(int id) {
|
||||
auto upgrade_iter = upgrade_.find(id);
|
||||
upgrade_iter->second.try_times++;
|
||||
long ts = GetLocalTs();
|
||||
upgrade_iter->second.try_world_time1.push_back(GetUTCTime(ts));
|
||||
UpdateUpgradeFile();
|
||||
}
|
||||
|
||||
void SensorScheduler::UpdateUpgradeFile() {
|
||||
Json::Value root;
|
||||
for (auto item : upgrade_) {
|
||||
|
||||
@ -108,6 +108,7 @@ public:
|
||||
int GetAvailableId(int short_addr);
|
||||
|
||||
private:
|
||||
void UpdateUpgradeInfo(int id);
|
||||
void UpdateUpgradeFile();
|
||||
void UpdateConfigFile();
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user