diff --git a/scheduler/schedule.cpp b/scheduler/schedule.cpp index 3199502..bbc99d0 100644 --- a/scheduler/schedule.cpp +++ b/scheduler/schedule.cpp @@ -909,7 +909,7 @@ int SensorScheduler::WriteScheduleCfg(long &ts, std::string &world_time) { return 0; } -int SensorScheduler::Config(int eigen_value_send_interval, int wave_form_send_interval, int max_sensor_num, +int SensorScheduler::Config(int eigen_value_send_interval, int wave_form_send_interval, int &max_sensor_num, int wave_resend_num, std::string &error_msg) { int available_slice = 0; int free_slice = 0; @@ -952,13 +952,13 @@ int SensorScheduler::Config(int eigen_value_send_interval, int wave_form_send_in // 特征值发送间隔300秒,波形发送间隔为7200秒 // 一次特征值发送时长为2秒,波形发送时长为60秒,所有特征值在特征值发送间隔的第1分钟中的第3秒至第57秒全部完成 int SensorScheduler::CalcAvailableSlice(int eigen_value_send_interval, int wave_form_send_interval, - int max_sensor_num, int &available_slice, int &free_slice, + int &max_sensor_num, int &available_slice, int &free_slice, std::string &error_msg) { - if (max_sensor_num <= 0) { - error_msg = "max_sensor_num:" + std::to_string(max_sensor_num) + " must bigger than 0"; - zlog_error(zbt, "%s", error_msg.c_str()); - return 1; - } + // if (max_sensor_num <= 0) { + // error_msg = "max_sensor_num:" + std::to_string(max_sensor_num) + " must bigger than 0"; + // zlog_error(zbt, "%s", error_msg.c_str()); + // return 1; + // } if (2 > eigen_value_send_interval) { error_msg = "invalid max_sensor_num:" + std::to_string(max_sensor_num) + @@ -967,12 +967,12 @@ int SensorScheduler::CalcAvailableSlice(int eigen_value_send_interval, int wave_ return 2; } - if (max_sensor_num * 60 * 2 > wave_form_send_interval) { // xy, z分开发送 - error_msg = "invalid wave_form_send_duration:" + std::to_string(60) + - "* 2 * max_sensor_num:" + std::to_string(max_sensor_num) + " > wave_form_send_interval:" + std::to_string(wave_form_send_interval); - zlog_error(zbt, "%s", error_msg.c_str()); - return 3; - } + // if (max_sensor_num * 60 * 2 > wave_form_send_interval) { // xy, z分开发送 + // error_msg = "invalid wave_form_send_duration:" + std::to_string(60) + + // "* 2 * max_sensor_num:" + std::to_string(max_sensor_num) + " > wave_form_send_interval:" + std::to_string(wave_form_send_interval); + // zlog_error(zbt, "%s", error_msg.c_str()); + // return 3; + // } if (wave_form_send_interval % eigen_value_send_interval != 0) { error_msg = "wave_form_send_interval:" + std::to_string(wave_form_send_interval) + " %% eigen_value_send_interval:" + std::to_string(eigen_value_send_interval) + @@ -985,9 +985,15 @@ int SensorScheduler::CalcAvailableSlice(int eigen_value_send_interval, int wave_ int rest_duration = eigen_value_send_interval - total_eigen_value_send_duration; int slice_per_eigen_value_interval = rest_duration / 60; available_slice = wave_form_send_interval / eigen_value_send_interval * slice_per_eigen_value_interval; - free_slice = available_slice - max_sensor_num * 2; - if (free_slice < 0) { - error_msg = "invalid config, available slice:" + std::to_string(available_slice) + ", required slice:" + std::to_string(max_sensor_num); + // free_slice = available_slice - max_sensor_num * 2; + max_sensor_num = available_slice / 2; + // if (free_slice < 0) { + // error_msg = "invalid config, available slice:" + std::to_string(available_slice) + ", required slice:" + std::to_string(max_sensor_num*2); + // zlog_error(zbt, "%s", error_msg.c_str()); + // return 5; + // } + if (available_slice <= 0) { + error_msg = "invalid config, available slice:" + std::to_string(available_slice) + ", required slice:" + std::to_string(max_sensor_num*2); zlog_error(zbt, "%s", error_msg.c_str()); return 5; } diff --git a/scheduler/schedule.hpp b/scheduler/schedule.hpp index e38792b..f1280c2 100644 --- a/scheduler/schedule.hpp +++ b/scheduler/schedule.hpp @@ -76,10 +76,10 @@ public: int UpdateConfigResult(uint16_t short_addr, int result); int Config(int eigen_value_send_interval, int wave_form_send_interval, - int max_sensor_num, int wave_resend_num, std::string &error_msg); + int &max_sensor_num, int wave_resend_num, std::string &error_msg); int CalcAvailableSlice(int eigen_value_send_interval, int wave_form_send_interval, - int max_sensor_num, int &available_slice, int &free_slice, + int &max_sensor_num, int &available_slice, int &free_slice, std::string &error_msg); int GetScheduleConfig(int &eigen_value_send_interval, int &wave_form_send_interval, int &wave_resend_num,