From e09162a0a36c71861cc0d98b94d72330142423c9 Mon Sep 17 00:00:00 2001 From: pandx Date: Wed, 6 Nov 2024 11:13:35 +0800 Subject: [PATCH] fix bug. --- scheduler/schedule.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/scheduler/schedule.cpp b/scheduler/schedule.cpp index ba2ecdb..e648b2a 100644 --- a/scheduler/schedule.cpp +++ b/scheduler/schedule.cpp @@ -177,7 +177,7 @@ long SensorScheduler::CalcNextTimestamp(int id) { // 发送波的时间窗也在本次特征值发送间隔中 for (int i = forward_wave_slice_num; i <= forward_wave_slice_num + wave_slice_num_per_eigen_interval_; ++i) { if (wave_slice - 1 == i) { - send_wave_ts = current_wave_start_ts_ + eigen_value_slice_total_seconds_ + (i - forward_wave_slice_num) * seconds_per_wave_slice_; + send_wave_ts = current_wave_start_ts_ + nth_eigen_value_slice_ * eigen_value_send_interval_ + eigen_value_slice_total_seconds_ + (i - forward_wave_slice_num) * seconds_per_wave_slice_; zlog_debug(zct, "[%d] send wave time:[%s]\n", id, GetUTCTime(send_wave_ts).c_str()); break; } @@ -191,7 +191,7 @@ long SensorScheduler::CalcNextTimestamp(int id) { for (int i = 0; i < wave_slice_num_per_eigen_interval_; ++i) { if (slice_sensor_id_[i+forward_wave_slice_num] == 0) { // 判断此空闲位置是否被占用 - long current_wave_slice_ts = current_wave_start_ts_ + eigen_value_slice_total_seconds_ + i * seconds_per_wave_slice_; + long current_wave_slice_ts = current_wave_start_ts_ + nth_eigen_value_slice_ * eigen_value_send_interval_ + eigen_value_slice_total_seconds_ + i * seconds_per_wave_slice_; if (free_slice_ocuppied_.count(current_wave_slice_ts) == 0) { available_ts = current_wave_slice_ts; free_slice_ocuppied_.insert(available_ts); @@ -215,7 +215,7 @@ long SensorScheduler::CalcNextTimestamp(int id) { } // 如果是在当前波形时间窗中,不管是空闲时间窗,还是发送波形的时间窗,下一个时间窗是特征值 - long available_ts = current_wave_start_ts_ + eigen_value_send_interval_ + (id - 1) * eigen_value_send_duration_; + long available_ts = current_wave_start_ts_ + (nth_eigen_value_slice_ + 1)* eigen_value_send_interval_ + (id - 1) * eigen_value_send_duration_; zlog_debug(zct, "[%d] next feature send utc time:[%s]", id, GetUTCTime(available_ts).c_str()); return available_ts; } @@ -263,10 +263,8 @@ int SensorScheduler::StartSchedule(int short_addr, int &next_duration) { nth_eigen_slice_ = (seconds_in_current_eigen_slice_ + 2) / eigen_value_send_duration_; } else { nth_wave_slice_ = (seconds_in_current_eigen_slice_ - eigen_value_slice_total_seconds_ + 3) / seconds_per_wave_slice_; - } - - - zlog_debug(zct, "[%d] current utc:%s", id, GetUTCTime(current_ts_).c_str()); + } + zlog_debug(zct, "[%d] current utc:%s, nth eigen_value slice:%d, seconds in eigen slice:%d, eigen slice:%d", id, GetUTCTime(current_ts_).c_str(), nth_eigen_value_slice_+1, seconds_in_current_eigen_slice_, ts_in_eigen_slice_); if (ts_in_eigen_slice_) { if (id == nth_eigen_slice_ + 1) { // 传感器需要执行上送特征值任务, 如果有配置需要下发的话,下发配置