From bc821ed7b42ae87518076a2b958d5d688dc1a85b Mon Sep 17 00:00:00 2001 From: pandx Date: Thu, 10 Apr 2025 11:52:50 +0800 Subject: [PATCH] fix schedule.json empty bug. --- scheduler/schedule.cpp | 54 ++++++++++++++++++++++++------------------ scheduler/schedule.hpp | 3 ++- 2 files changed, 33 insertions(+), 24 deletions(-) diff --git a/scheduler/schedule.cpp b/scheduler/schedule.cpp index eeac214..178e0d2 100644 --- a/scheduler/schedule.cpp +++ b/scheduler/schedule.cpp @@ -307,6 +307,7 @@ int SensorScheduler::GetNextDuration(int short_addr) { SensorScheduler::SensorScheduler() { support_modification_ = true; std::ifstream schedule_file(SCHEDULE_CONFIG); + bool configed = false; if (schedule_file.good()) { zlog_info(zbt, "exist configuration file"); Json::Reader reader; @@ -314,13 +315,14 @@ SensorScheduler::SensorScheduler() { if (!reader.parse(schedule_file, root, false)) { zlog_error(zbt, "invalid format, fail to parse %s", SCHEDULE_CONFIG); schedule_file.close(); - return; + goto init_config; } schedule_file.close(); if (!root.isObject()) { zlog_error(zbt, "invalid format, not an object: %s", SCHEDULE_CONFIG); - return; + goto init_config; } + configed = true; start_timestamp_ = std::stol(root["schedule_start_timestamp"].asString()); start_ts_str_ = root["schedule_start_time"].asString(); long current_ts = GetLocalTs(); @@ -362,28 +364,12 @@ SensorScheduler::SensorScheduler() { int rest_duration = eigen_value_send_interval_ - eigen_value_slice_total_seconds_; wave_slice_num_per_eigen_interval_ = rest_duration / wave_form_send_duration_; seconds_per_wave_slice_ = rest_duration / wave_slice_num_per_eigen_interval_; - } else { - zlog_info(zbt, "use default configuration"); - int eigen_value_send_interval = 300; - int wave_form_send_interval = 7200; - int eigen_value_send_duration = 6; - int wave_form_send_duration = 50; - int max_sensor_num = 32; + } - // int eigen_value_send_interval = 120; - // int wave_form_send_interval = 240; - // int eigen_value_send_duration = 6; - // int wave_form_send_duration = 40; - // int max_sensor_num = 4; - std::string error_msg; - Config(eigen_value_send_interval, - wave_form_send_interval, - eigen_value_send_duration, - wave_form_send_duration, - max_sensor_num, - error_msg); +init_config: + if (!configed) { + UseDefaultConfig(); } - short_addr_map_.clear(); ShortAddrCfg::ReadCfg(short_addr_map_); @@ -810,4 +796,26 @@ void SensorScheduler::CleanIdleOccupiedSet(long ts) { } else ++it; } } -} \ No newline at end of file +} + +void SensorScheduler::UseDefaultConfig() { + zlog_info(zbt, "use default configuration"); + int eigen_value_send_interval = 300; + int wave_form_send_interval = 7200; + int eigen_value_send_duration = 6; + int wave_form_send_duration = 50; + int max_sensor_num = 32; + + // int eigen_value_send_interval = 120; + // int wave_form_send_interval = 240; + // int eigen_value_send_duration = 6; + // int wave_form_send_duration = 40; + // int max_sensor_num = 4; + std::string error_msg; + Config(eigen_value_send_interval, + wave_form_send_interval, + eigen_value_send_duration, + wave_form_send_duration, + max_sensor_num, + error_msg); +} diff --git a/scheduler/schedule.hpp b/scheduler/schedule.hpp index dae6c56..baff1e6 100644 --- a/scheduler/schedule.hpp +++ b/scheduler/schedule.hpp @@ -104,6 +104,7 @@ public: private: void UpdateUpgradeInfo(int id); void CleanIdleOccupiedSet(long ts); + void UseDefaultConfig(); // user config int eigen_value_send_interval_; @@ -132,7 +133,7 @@ private: std::unordered_set patch_set_; // 漏传的补传 void ClearFailureSuccessMap(); bool RetransferWave(uint16_t short_addr); - bool MissedWave(uint16_t short_addr); + bool MissedWave(uint16_t short_addr); // 空闲时间戳被占用 std::unordered_set free_slice_ocuppied_;